diff options
author | James Graham <james@hoppipolla.co.uk> | 2015-09-17 00:49:05 +0100 |
---|---|---|
committer | James Graham <james@hoppipolla.co.uk> | 2015-09-25 00:58:48 +0100 |
commit | 79e548905e3c5c9891eef2fcbf20203c56f952ee (patch) | |
tree | 1ed4e133772e6b7b6f060ae7204ae64c76dd14f3 /components/webdriver_server/lib.rs | |
parent | d811f2d1baac6dcb501f3588eb509086bd1b2a66 (diff) | |
download | servo-79e548905e3c5c9891eef2fcbf20203c56f952ee.tar.gz servo-79e548905e3c5c9891eef2fcbf20203c56f952ee.zip |
Enable resetable and String prefs.
This allows both boolean and string-type preferences. It
also implements a system where prefs that are read from a
configuration file can be reset back to their initial value,
which is useful in a number of cases e.g. when running tests
to ensure that each test starts with the same values for
the prefs.
Diffstat (limited to 'components/webdriver_server/lib.rs')
-rw-r--r-- | components/webdriver_server/lib.rs | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index 6ecbdd18c68..29bac552568 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -35,7 +35,7 @@ use std::collections::BTreeMap; use std::net::SocketAddr; use std::thread::{self, sleep_ms}; use url::Url; -use util::prefs::{get_pref, set_pref}; +use util::prefs::{get_pref, reset_all_prefs, reset_pref, set_pref, PrefValue}; use util::task::spawn_named; use uuid::Uuid; use webdriver::command::{GetParameters, JavascriptCommandParameters, LocatorParameters}; @@ -150,7 +150,7 @@ impl ToJson for GetPrefsParameters { #[derive(Clone, PartialEq)] struct SetPrefsParameters { - prefs: Vec<(String, bool)> + prefs: Vec<(String, PrefValue)> } impl Parameters for SetPrefsParameters { @@ -166,9 +166,9 @@ impl Parameters for SetPrefsParameters { "prefs was not an array"))); let mut params = Vec::with_capacity(items.len()); for (name, val) in items.iter() { - let value = try!(val.as_boolean().ok_or( - WebDriverError::new(ErrorStatus::InvalidArgument, - "Pref is not a bool"))); + let value = try!(PrefValue::from_json(val).or( + Err(WebDriverError::new(ErrorStatus::InvalidArgument, + "Pref is not a boolean or string")))); let key = name.to_owned(); params.push((key, value)); } @@ -633,13 +633,14 @@ impl Handler { .iter() .map(|item| (item.clone(), get_pref(item).to_json())) .collect::<BTreeMap<_, _>>(); + Ok(WebDriverResponse::Generic(ValueResponse::new(prefs.to_json()))) } fn handle_set_prefs(&self, parameters: &SetPrefsParameters) -> WebDriverResult<WebDriverResponse> { for &(ref key, ref value) in parameters.prefs.iter() { - set_pref(key, *value); + set_pref(key, value.clone()); } Ok(WebDriverResponse::Void) } |