Bug 1960077 - [webdriver-bidi] Improve validation of geolocation coordinates for "emulation.setGeolocationOverride" command. r=webdriver-reviewers,whimboo
Differential Revision: https://phabricator.services.mozilla.com/D246390
This commit is contained in:
@@ -89,70 +89,77 @@ class EmulationModule extends RootBiDiModule {
|
|||||||
latitude,
|
latitude,
|
||||||
longitude,
|
longitude,
|
||||||
accuracy = 1,
|
accuracy = 1,
|
||||||
// For platform API if we want to set values to null
|
altitude = null,
|
||||||
// we have to set them to NaN.
|
altitudeAccuracy = null,
|
||||||
altitude = NaN,
|
heading = null,
|
||||||
altitudeAccuracy = NaN,
|
speed = null,
|
||||||
heading = NaN,
|
|
||||||
speed = NaN,
|
|
||||||
} = coordinates;
|
} = coordinates;
|
||||||
|
|
||||||
lazy.assert.number(
|
lazy.assert.numberInRange(
|
||||||
latitude,
|
latitude,
|
||||||
lazy.pprint`Expected "latitude" to be a number, got ${latitude}`
|
[-90, 90],
|
||||||
|
lazy.pprint`Expected "latitude" to be in the range of -90 to 90, got ${latitude}`
|
||||||
);
|
);
|
||||||
|
|
||||||
lazy.assert.number(
|
lazy.assert.numberInRange(
|
||||||
longitude,
|
longitude,
|
||||||
lazy.pprint`Expected "longitude" to be a number, got ${longitude}`
|
[-180, 180],
|
||||||
|
lazy.pprint`Expected "longitude" to be in the range of -180 to 180, got ${longitude}`
|
||||||
);
|
);
|
||||||
|
|
||||||
lazy.assert.number(
|
lazy.assert.positiveNumber(
|
||||||
accuracy,
|
accuracy,
|
||||||
lazy.pprint`Expected "accuracy" to be a number, got ${accuracy}`
|
lazy.pprint`Expected "accuracy" to be a positive number, got ${accuracy}`
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!Number.isNaN(altitude)) {
|
if (altitude !== null) {
|
||||||
lazy.assert.number(
|
lazy.assert.number(
|
||||||
altitude,
|
altitude,
|
||||||
lazy.pprint`Expected "altitude" to be a number, got ${altitude}`
|
lazy.pprint`Expected "altitude" to be a number, got ${altitude}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Number.isNaN(altitudeAccuracy)) {
|
if (altitudeAccuracy !== null) {
|
||||||
lazy.assert.number(
|
lazy.assert.positiveNumber(
|
||||||
altitudeAccuracy,
|
altitudeAccuracy,
|
||||||
lazy.pprint`Expected "altitudeAccuracy" to be a number, got ${altitudeAccuracy}`
|
lazy.pprint`Expected "altitudeAccuracy" to be a positive number, got ${altitudeAccuracy}`
|
||||||
);
|
);
|
||||||
|
|
||||||
if (Number.isNaN(altitude)) {
|
if (altitude === null) {
|
||||||
throw new lazy.error.InvalidArgumentError(
|
throw new lazy.error.InvalidArgumentError(
|
||||||
`When "altitudeAccuracy" is provided it's required to provide "altitude" as well`
|
`When "altitudeAccuracy" is provided it's required to provide "altitude" as well`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Number.isNaN(heading)) {
|
if (heading !== null) {
|
||||||
lazy.assert.number(
|
lazy.assert.number(
|
||||||
heading,
|
heading,
|
||||||
lazy.pprint`Expected "heading" to be a number, got ${heading}`
|
lazy.pprint`Expected "heading" to be a number, got ${heading}`
|
||||||
);
|
);
|
||||||
|
|
||||||
|
lazy.assert.that(
|
||||||
|
number => number >= 0 && number < 360,
|
||||||
|
lazy.pprint`Expected "heading" to be >= 0 and < 360, got ${heading}`
|
||||||
|
)(heading);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!Number.isNaN(speed)) {
|
if (speed !== null) {
|
||||||
lazy.assert.number(
|
lazy.assert.positiveNumber(
|
||||||
speed,
|
speed,
|
||||||
lazy.pprint`Expected "speed" to be a number, got ${speed}`
|
lazy.pprint`Expected "speed" to be a positive number, got ${speed}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
coordinates = {
|
coordinates = {
|
||||||
...coordinates,
|
...coordinates,
|
||||||
accuracy,
|
accuracy,
|
||||||
altitude,
|
// For platform API if we want to set values to null
|
||||||
altitudeAccuracy,
|
// we have to set them to NaN.
|
||||||
heading,
|
altitude: altitude === null ? NaN : altitude,
|
||||||
speed,
|
altitudeAccuracy: altitudeAccuracy === null ? NaN : altitudeAccuracy,
|
||||||
|
heading: heading === null ? NaN : heading,
|
||||||
|
speed: speed === null ? NaN : speed,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user