Bug 1282833 - Add out of bounds type checks to Set Window Position; r?automatedtester
MozReview-Commit-ID: 3nx8qhdBOIZ
--- a/testing/marionette/driver.js
+++ b/testing/marionette/driver.js
@@ -1250,17 +1250,18 @@ GeckoDriver.prototype.getWindowPosition
* Object with |x| and |y| coordinates.
*/
GeckoDriver.prototype.setWindowPosition = function(cmd, resp) {
if (this.appName != "Firefox") {
throw new UnsupportedOperationError("Unable to set the window position on mobile");
}
let {x, y} = cmd.parameters;
- if (!Number.isInteger(x) || !Number.isInteger(y)) {
+ if (!Number.isInteger(x) || !Number.isInteger(y) ||
+ x < 0 || y < 0) {
throw new InvalidArgumentError();
}
let win = this.getCurrentWindow();
win.moveTo(x, y);
return this.curBrowser.position;
};
--- a/testing/marionette/harness/marionette/tests/unit/test_window_position.py
+++ b/testing/marionette/harness/marionette/tests/unit/test_window_position.py
@@ -21,14 +21,20 @@ class TestWindowPosition(MarionetteTestC
self.assertTrue(isinstance(position["x"], int))
self.assertTrue(isinstance(position["y"], int))
def test_set_types(self):
for x, y in (["a", "b"], [1.2, 3.4], [True, False], [[], []], [{}, {}]):
with self.assertRaises(InvalidArgumentException):
self.marionette.set_window_position(x, y)
+ def test_out_of_bounds_arguments(self):
+ with self.assertRaises(InvalidArgumentException):
+ self.marionette.set_window_position(-1, 0)
+ with self.assertRaises(InvalidArgumentException):
+ self.marionette.set_window_position(0, -1)
+
def test_move(self):
old_position = self.marionette.get_window_position()
new_position = {"x": old_position["x"] + 10, "y": old_position["y"] + 10}
self.marionette.set_window_position(new_position["x"], new_position["y"])
self.assertNotEqual(old_position['x'], new_position["x"])
self.assertNotEqual(old_position['y'], new_position["y"])