mirror of
https://github.com/servo/servo.git
synced 2025-08-05 21:50:18 +01:00
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 ```
This commit is contained in:
parent
cdd64604cf
commit
230a6da5ff
1 changed files with 33 additions and 8 deletions
|
@ -34,17 +34,35 @@ def do_delayed_imports():
|
||||||
@webdriver.client.command
|
@webdriver.client.command
|
||||||
def get_prefs(self, *prefs):
|
def get_prefs(self, *prefs):
|
||||||
body = {"prefs": list(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
|
@webdriver.client.command
|
||||||
def set_prefs(self, prefs):
|
def set_prefs(self, prefs):
|
||||||
body = {"prefs": 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
|
@webdriver.client.command
|
||||||
def reset_prefs(self, *prefs):
|
def reset_prefs(self, *prefs):
|
||||||
body = {"prefs": list(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):
|
class ServoBaseProtocolPart(BaseProtocolPart):
|
||||||
|
@ -111,11 +129,6 @@ class ServoWebDriverProtocol(Protocol):
|
||||||
self.logger.error(traceback.format_exc(e))
|
self.logger.error(traceback.format_exc(e))
|
||||||
break
|
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):
|
class ServoWebDriverRun(object):
|
||||||
def __init__(self, func, session, url, timeout, current_timeout=None):
|
def __init__(self, func, session, url, timeout, current_timeout=None):
|
||||||
|
@ -215,6 +228,12 @@ class ServoWebDriverTestharnessExecutor(TestharnessExecutor):
|
||||||
session.back()
|
session.back()
|
||||||
return result
|
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):
|
class TimeoutError(Exception):
|
||||||
pass
|
pass
|
||||||
|
@ -281,3 +300,9 @@ class ServoWebDriverRefTestExecutor(RefTestExecutor):
|
||||||
session.url = url
|
session.url = url
|
||||||
session.execute_async_script(self.wait_script)
|
session.execute_async_script(self.wait_script)
|
||||||
return session.screenshot()
|
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", {})
|
||||||
|
)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue