aboutsummaryrefslogtreecommitdiffstats
path: root/components/webdriver_server/lib.rs
diff options
context:
space:
mode:
authorJames Graham <james@hoppipolla.co.uk>2015-09-17 00:49:05 +0100
committerJames Graham <james@hoppipolla.co.uk>2015-09-25 00:58:48 +0100
commit79e548905e3c5c9891eef2fcbf20203c56f952ee (patch)
tree1ed4e133772e6b7b6f060ae7204ae64c76dd14f3 /components/webdriver_server/lib.rs
parentd811f2d1baac6dcb501f3588eb509086bd1b2a66 (diff)
downloadservo-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.rs13
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)
}