diff options
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) } |