aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Sapin <simon.sapin@exyr.org>2018-07-20 15:58:41 +0200
committerSimon Sapin <simon.sapin@exyr.org>2018-07-20 15:58:41 +0200
commit230a6da5ff59cebc0dca96afa4112e55248a78c5 (patch)
treedf58812c9a2d381b6744129e2f216742f8df3ef9
parentcdd64604cf0c3f837f2b20faa786d6d2595c22d3 (diff)
downloadservo-230a6da5ff59cebc0dca96afa4112e55248a78c5.tar.gz
servo-230a6da5ff59cebc0dca96afa4112e55248a78c5.zip
servodriver: fix setting preferences
This makes `/_mozilla/mozilla/webgl/context_creation_error.html` pass, for example. ``` ./ mach test-wpt --product servodriver \ --binary etc/run_in_headless_android_emulator.py \ --binary-arg servo-x86 \ --binary-arg target/i686-linux-android/release/servo.apk \ /_mozilla/mozilla/webgl/context_creation_error.html ```
-rw-r--r--tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py41
1 files changed, 33 insertions, 8 deletions
diff --git a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py
index ad16ac78f7b..47f3c39499a 100644
--- a/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py
+++ b/tests/wpt/web-platform-tests/tools/wptrunner/wptrunner/executors/executorservodriver.py
@@ -34,17 +34,35 @@ def do_delayed_imports():
@webdriver.client.command
def get_prefs(self, *prefs):
body = {"prefs": list(prefs)}
- return self.session.send_command("POST", "servo/prefs/get", body)
+ return self.session.send_session_command("POST", "servo/prefs/get", body)
@webdriver.client.command
def set_prefs(self, prefs):
body = {"prefs": prefs}
- return self.session.send_command("POST", "servo/prefs/set", body)
+ return self.session.send_session_command("POST", "servo/prefs/set", body)
@webdriver.client.command
def reset_prefs(self, *prefs):
body = {"prefs": list(prefs)}
- return self.session.send_command("POST", "servo/prefs/reset", body)
+ return self.session.send_session_command("POST", "servo/prefs/reset", body)
+
+ def change_prefs(self, old_prefs, new_prefs):
+ # Servo interprets reset with an empty list as reset everything
+ if old_prefs:
+ self.reset_prefs(*old_prefs.keys())
+ self.set_prefs({k: parse_pref_value(v) for k, v in new_prefs.items()})
+
+
+# See parse_pref_from_command_line() in components/config/opts.rs
+def parse_pref_value(value):
+ if value == "true":
+ return True
+ if value == "false":
+ return False
+ try:
+ return float(value)
+ except ValueError:
+ return value
class ServoBaseProtocolPart(BaseProtocolPart):
@@ -111,11 +129,6 @@ class ServoWebDriverProtocol(Protocol):
self.logger.error(traceback.format_exc(e))
break
- def on_environment_change(self, old_environment, new_environment):
- #Unset all the old prefs
- self.session.extension.reset_prefs(*old_environment.get("prefs", {}).keys())
- self.session.extension.set_prefs(new_environment.get("prefs", {}))
-
class ServoWebDriverRun(object):
def __init__(self, func, session, url, timeout, current_timeout=None):
@@ -215,6 +228,12 @@ class ServoWebDriverTestharnessExecutor(TestharnessExecutor):
session.back()
return result
+ def on_environment_change(self, new_environment):
+ self.protocol.session.extension.change_prefs(
+ self.last_environment.get("prefs", {}),
+ new_environment.get("prefs", {})
+ )
+
class TimeoutError(Exception):
pass
@@ -281,3 +300,9 @@ class ServoWebDriverRefTestExecutor(RefTestExecutor):
session.url = url
session.execute_async_script(self.wait_script)
return session.screenshot()
+
+ def on_environment_change(self, new_environment):
+ self.protocol.session.extension.change_prefs(
+ self.last_environment.get("prefs", {}),
+ new_environment.get("prefs", {})
+ )