Skip to content

Commit

Permalink
servodriver: fix setting preferences
Browse files Browse the repository at this point in the history
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
```
  • Loading branch information
SimonSapin committed Jul 20, 2018
1 parent cdd6460 commit 230a6da
Showing 1 changed file with 33 additions and 8 deletions.
Expand Up @@ -34,17 +34,35 @@ def __init__(self, session):
@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):
Expand Down Expand Up @@ -111,11 +129,6 @@ def wait(self):
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):
Expand Down Expand Up @@ -215,6 +228,12 @@ def do_testharness(self, session, url, timeout):
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
Expand Down Expand Up @@ -281,3 +300,9 @@ def _screenshot(self, session, url, timeout):
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", {})
)

0 comments on commit 230a6da

Please sign in to comment.