W3C home > Mailing lists > Public > public-device-apis-log@w3.org > September 2018

Re: [sensors] Introduce WebDriver extension API

From: Wanming Lin via GitHub <sysbot+gh@w3.org>
Date: Fri, 14 Sep 2018 08:58:34 +0000
To: public-device-apis-log@w3.org
Message-ID: <issue_comment.created-421281618-1536915513-sysbot+gh@w3.org>
Probably defining following 4 methods to WPT's testdriver.js respectively corresponding to extension commands defined in this spec. 
```
test_driver.create_sensor(sensorType, configurations)    //no return value
test_driver.get_sensor(sensorType)    //return serialized mock sensor properties
test_driver.update_sensor_reading(sensorType, readingValues)  //no return value
test_driver.delete_sensor(sensorType)   //no return value
```

Then override them in Chromium's testdriver-vendor.js with [mock mojo interface](https://chromium.googlesource.com/chromium/src.git/+/master/third_party/WebKit/LayoutTests/http/tests/resources/sensor-helpers.js), 

1. override `test_driver.create_sensor(sensorType, configurations)`:
```
  window.test_driver_internal.create_sensor = function(sensorType, configurations) {
    return new Promise(function(resolve, reject) {
      if (window.chrome) {
        let sensorProvider = sensorMocks();
        sensorProvider.initialize(configurations.sensorType); 
        if(configurations.connected == false) 
          sensorProvider.setGetSensorShouldFail(true);
        if(configurations.maxSamplingFrequency != null)
          sensorProvider.setMaximumSupportedFrequency(configurations.maxSamplingFrequency);
        ...
        resolve();
      } else {
        reject(new Error("error"));
      }
    });
  };
``` 
2. override `test_driver.get_sensor(sensorType)`:
```
  let mockSensor = sensorProvider.getCreatedSensor(sensorType);
  let samplingFrequency= mockSensor.getSamplingFrequency();
  let ...
  let serializedSensor =  {RequestedSamplingFrequency: samplingFrequency, maxSamplingFrequency: ....};
  return new Promise(resolve(serializedSensor));
```
3. override `test_driver.update_sensor_reading(sensorType, readingValues)`:
```
  let mockSensor = sensorProvider.getCreatedSensor(sensorType),
  mockSensor.setUpdateSensorReadingFunction(updateReading(readingValues));
```
4. override `test_driver.delete_sensor(sensorType)`:
`  sensorProvider.reset(sensorType);`

Here comes up with a problem, that "create mock sensor" command(`test_driver.create_sensor(sensorType, configurations)`) do not return a mock sensor instance, while in Chromium's testdriver-vendor.js it definitely needs returning a `sensorProvider` instance, then pass it to rest methods. Is that possible to restore it in somewhere as a global variable? Do you have any good idea?

-- 
GitHub Notification of comment by Honry
Please view or discuss this issue at https://github.com/w3c/sensors/pull/369#issuecomment-421281618 using your GitHub account
Received on Friday, 14 September 2018 08:58:36 UTC

This archive was generated by hypermail 2.3.1 : Friday, 14 September 2018 08:58:36 UTC