Bug 1257526 - Return unsupported operation error for screen orientation on desktop; r=automatedtester
authorAndreas Tolfsen <ato@mozilla.com>
Thu, 17 Mar 2016 14:54:48 +0000
changeset 290112 66fd82b72d1e2b584e50b3200dff2f08f4ed88c0
parent 290111 36c1fd35d9959fa380d07521b210ba315772d683
child 290113 0d344473d50fd8ead38d679e37c70adc449f200a
push id19656
push usergwagner@mozilla.com
push dateMon, 04 Apr 2016 13:43:23 +0000
treeherderb2g-inbound@e99061fde28a [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersautomatedtester
bugs1257526
milestone48.0a1
Bug 1257526 - Return unsupported operation error for screen orientation on desktop; r=automatedtester MozReview-Commit-ID: 4G9Bwaqxm5k
testing/marionette/driver.js
testing/marionette/harness/marionette/__init__.py
testing/marionette/harness/marionette/tests/unit/test_screen_orientation.py
testing/marionette/harness/marionette/tests/unit/unit-tests.ini
--- a/testing/marionette/driver.js
+++ b/testing/marionette/driver.js
@@ -2578,31 +2578,38 @@ GeckoDriver.prototype.takeScreenshot = f
 /**
  * Get the current browser orientation.
  *
  * Will return one of the valid primary orientation values
  * portrait-primary, landscape-primary, portrait-secondary, or
  * landscape-secondary.
  */
 GeckoDriver.prototype.getScreenOrientation = function(cmd, resp) {
+  if (this.appName == "Firefox") {
+    throw new UnsupportedOperationError();
+  }
   resp.body.value = this.getCurrentWindow().screen.mozOrientation;
 };
 
 /**
  * Set the current browser orientation.
  *
  * The supplied orientation should be given as one of the valid
  * orientation values.  If the orientation is unknown, an error will
  * be raised.
  *
  * Valid orientations are "portrait" and "landscape", which fall
  * back to "portrait-primary" and "landscape-primary" respectively,
  * and "portrait-secondary" as well as "landscape-secondary".
  */
 GeckoDriver.prototype.setScreenOrientation = function(cmd, resp) {
+  if (this.appName == "Firefox") {
+    throw new UnsupportedOperationError();
+  }
+
   const ors = [
     "portrait", "landscape",
     "portrait-primary", "landscape-primary",
     "portrait-secondary", "landscape-secondary"
   ];
 
   let or = String(cmd.parameters.orientation);
   let mozOr = or.toLowerCase();
--- a/testing/marionette/harness/marionette/__init__.py
+++ b/testing/marionette/harness/marionette/__init__.py
@@ -6,16 +6,17 @@
 
 from .marionette_test import (
     CommonTestCase,
     expectedFailure,
     MarionetteJSTestCase,
     MarionetteTestCase,
     skip,
     skip_if_b2g,
+    skip_if_desktop,
     SkipTest,
     skip_unless_protocol,
 )
 from .runner import (
     B2GTestCaseMixin,
     B2GTestResultMixin,
     BaseMarionetteArguments,
     BaseMarionetteTestRunner,
--- a/testing/marionette/harness/marionette/tests/unit/test_screen_orientation.py
+++ b/testing/marionette/harness/marionette/tests/unit/test_screen_orientation.py
@@ -1,90 +1,107 @@
-# -*- fill-column: 100; comment-column: 100; -*-
-
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-from marionette_driver.errors import MarionetteException
-from marionette import MarionetteTestCase
+from marionette_driver import errors
+from marionette import MarionetteTestCase, skip_if_b2g, skip_if_desktop
 from mozrunner.devices.emulator_screen import EmulatorScreen
 
 default_orientation = "portrait-primary"
 unknown_orientation = "Unknown screen orientation: %s"
 
 class TestScreenOrientation(MarionetteTestCase):
+    def setUp(self):
+        MarionetteTestCase.setUp(self)
+        self.is_mobile = self.marionette.session_capabilities.get("rotatable", False)
+
     def tearDown(self):
-        self.marionette.set_orientation(default_orientation)
-        self.assertEqual(self.marionette.orientation, default_orientation, "invalid state")
-        super(MarionetteTestCase, self).tearDown()
+        if self.is_mobile:
+            self.marionette.set_orientation(default_orientation)
+            self.assertEqual(self.marionette.orientation, default_orientation, "invalid state")
+        MarionetteTestCase.tearDown(self)
 
+    @skip_if_desktop
     def test_set_orientation_to_portrait_primary(self):
         self.marionette.set_orientation("portrait-primary")
         new_orientation = self.marionette.orientation
         self.assertEqual(new_orientation, "portrait-primary")
 
         if self.marionette.emulator:
             emulator_orientation = self.marionette.emulator.screen.orientation
             self.assertEqual(emulator_orientation, EmulatorScreen.SO_PORTRAIT_PRIMARY)
 
+    @skip_if_desktop
     def test_set_orientation_to_landscape_primary(self):
         self.marionette.set_orientation("landscape-primary")
         new_orientation = self.marionette.orientation
         self.assertEqual(new_orientation, "landscape-primary")
 
         if self.marionette.emulator:
             emulator_orientation = self.marionette.emulator.screen.orientation
             self.assertEqual(emulator_orientation, EmulatorScreen.SO_LANDSCAPE_PRIMARY)
 
+    @skip_if_desktop
     def test_set_orientation_to_portrait_secondary(self):
         self.marionette.set_orientation("portrait-secondary")
         new_orientation = self.marionette.orientation
         self.assertEqual(new_orientation, "portrait-secondary")
 
         if self.marionette.emulator:
             emulator_orientation = self.marionette.emulator.screen.orientation
             self.assertEqual(emulator_orientation, EmulatorScreen.SO_PORTRAIT_SECONDARY)
 
+    @skip_if_desktop
     def test_set_orientation_to_landscape_secondary(self):
         self.marionette.set_orientation("landscape-secondary")
         new_orientation = self.marionette.orientation
         self.assertEqual(new_orientation, "landscape-secondary")
 
         if self.marionette.emulator:
             emulator_orientation = self.marionette.emulator.screen.orientation
             self.assertEqual(emulator_orientation, EmulatorScreen.SO_LANDSCAPE_SECONDARY)
 
+    @skip_if_desktop
     def test_set_orientation_to_shorthand_portrait(self):
         # Set orientation to something other than portrait-primary first, since the default is
         # portrait-primary.
         self.marionette.set_orientation("landscape-primary")
         self.assertEqual(self.marionette.orientation, "landscape-primary", "invalid state")
 
         self.marionette.set_orientation("portrait")
         new_orientation = self.marionette.orientation
         self.assertEqual(new_orientation, "portrait-primary")
 
         if self.marionette.emulator:
             emulator_orientation = self.marionette.emulator.screen.orientation
             self.assertEqual(emulator_orientation, EmulatorScreen.SO_PORTRAIT_PRIMARY)
 
+    @skip_if_desktop
     def test_set_orientation_to_shorthand_landscape(self):
         self.marionette.set_orientation("landscape")
         new_orientation = self.marionette.orientation
         self.assertEqual(new_orientation, "landscape-primary")
 
         if self.marionette.emulator:
             emulator_orientation = self.marionette.emulator.screen.orientation
             self.assertEqual(emulator_orientation, EmulatorScreen.SO_LANDSCAPE_PRIMARY)
 
+    @skip_if_desktop
     def test_set_orientation_with_mixed_casing(self):
         self.marionette.set_orientation("lAnDsCaPe")
         new_orientation = self.marionette.orientation
         self.assertEqual(new_orientation, "landscape-primary")
 
+    @skip_if_desktop
     def test_set_invalid_orientation(self):
-        with self.assertRaisesRegexp(MarionetteException, unknown_orientation % "cheese"):
+        with self.assertRaisesRegexp(errors.MarionetteException, unknown_orientation % "cheese"):
             self.marionette.set_orientation("cheese")
 
+    @skip_if_desktop
     def test_set_null_orientation(self):
-        with self.assertRaisesRegexp(MarionetteException, unknown_orientation % "null"):
+        with self.assertRaisesRegexp(errors.MarionetteException, unknown_orientation % "null"):
             self.marionette.set_orientation(None)
+
+    @skip_if_b2g
+    def test_unsupported_operation_on_desktop(self):
+        with self.assertRaises(errors.UnsupportedOperationException):
+            self.marionette.set_orientation("landscape-primary")
--- a/testing/marionette/harness/marionette/tests/unit/unit-tests.ini
+++ b/testing/marionette/harness/marionette/tests/unit/unit-tests.ini
@@ -129,17 +129,16 @@ b2g = false
 [test_wait.py]
 [test_expected.py]
 [test_date_time_value.py]
 [test_getactiveframe_oop.py]
 disabled = "Bug 925688"
 b2g = false
 [test_chrome_async_finish.js]
 [test_screen_orientation.py]
-browser = false
 [test_errors.py]
 
 [test_execute_isolate.py]
 [test_click_scrolling.py]
 [test_profile_management.py]
 b2g = false
 [test_set_window_size.py]
 b2g = false