Bug 1282833 - Add out of bounds type checks to Set Window Position; r?automatedtester draft
authorAndreas Tolfsen <ato@mozilla.com>
Thu, 06 Oct 2016 13:13:58 +0100
changeset 421553 d2ef531348679e03c77745b0ac8a865cd4b59584
parent 421552 43b28fda88b454f864b67f5f862797d1ee8000f9
child 533122 d8ed0cb0136cc1e379781963f527b7790d960f36
push id31547
push userbmo:ato@mozilla.com
push dateThu, 06 Oct 2016 12:27:41 +0000
reviewersautomatedtester
bugs1282833
milestone52.0a1
Bug 1282833 - Add out of bounds type checks to Set Window Position; r?automatedtester MozReview-Commit-ID: 3nx8qhdBOIZ
testing/marionette/driver.js
testing/marionette/harness/marionette/tests/unit/test_window_position.py
--- 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"])