mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
Add pref reset support to the WebDriver API.
This commit is contained in:
parent
8d9ab50a96
commit
bd4e0a1439
1 changed files with 27 additions and 4 deletions
|
@ -49,7 +49,8 @@ use webdriver::server::{self, Session, WebDriverHandler};
|
||||||
|
|
||||||
fn extension_routes() -> Vec<(Method, &'static str, ServoExtensionRoute)> {
|
fn extension_routes() -> Vec<(Method, &'static str, ServoExtensionRoute)> {
|
||||||
return vec![(Post, "/session/{sessionId}/servo/prefs/get", ServoExtensionRoute::GetPrefs),
|
return vec![(Post, "/session/{sessionId}/servo/prefs/get", ServoExtensionRoute::GetPrefs),
|
||||||
(Post, "/session/{sessionId}/servo/prefs/set", ServoExtensionRoute::SetPrefs)]
|
(Post, "/session/{sessionId}/servo/prefs/set", ServoExtensionRoute::SetPrefs),
|
||||||
|
(Post, "/session/{sessionId}/servo/prefs/reset", ServoExtensionRoute::ResetPrefs)]
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn start_server(port: u16, constellation_chan: ConstellationChan) {
|
pub fn start_server(port: u16, constellation_chan: ConstellationChan) {
|
||||||
|
@ -77,6 +78,7 @@ struct Handler {
|
||||||
enum ServoExtensionRoute {
|
enum ServoExtensionRoute {
|
||||||
GetPrefs,
|
GetPrefs,
|
||||||
SetPrefs,
|
SetPrefs,
|
||||||
|
ResetPrefs,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl WebDriverExtensionRoute for ServoExtensionRoute {
|
impl WebDriverExtensionRoute for ServoExtensionRoute {
|
||||||
|
@ -94,6 +96,10 @@ impl WebDriverExtensionRoute for ServoExtensionRoute {
|
||||||
let parameters: SetPrefsParameters = try!(Parameters::from_json(&body_data));
|
let parameters: SetPrefsParameters = try!(Parameters::from_json(&body_data));
|
||||||
ServoExtensionCommand::SetPrefs(parameters)
|
ServoExtensionCommand::SetPrefs(parameters)
|
||||||
}
|
}
|
||||||
|
&ServoExtensionRoute::ResetPrefs => {
|
||||||
|
let parameters: GetPrefsParameters = try!(Parameters::from_json(&body_data));
|
||||||
|
ServoExtensionCommand::ResetPrefs(parameters)
|
||||||
|
}
|
||||||
};
|
};
|
||||||
Ok(WebDriverCommand::Extension(command))
|
Ok(WebDriverCommand::Extension(command))
|
||||||
}
|
}
|
||||||
|
@ -102,14 +108,16 @@ impl WebDriverExtensionRoute for ServoExtensionRoute {
|
||||||
#[derive(Clone, PartialEq)]
|
#[derive(Clone, PartialEq)]
|
||||||
enum ServoExtensionCommand {
|
enum ServoExtensionCommand {
|
||||||
GetPrefs(GetPrefsParameters),
|
GetPrefs(GetPrefsParameters),
|
||||||
SetPrefs(SetPrefsParameters)
|
SetPrefs(SetPrefsParameters),
|
||||||
|
ResetPrefs(GetPrefsParameters),
|
||||||
}
|
}
|
||||||
|
|
||||||
impl WebDriverExtensionCommand for ServoExtensionCommand {
|
impl WebDriverExtensionCommand for ServoExtensionCommand {
|
||||||
fn parameters_json(&self) -> Option<Json> {
|
fn parameters_json(&self) -> Option<Json> {
|
||||||
match self {
|
match self {
|
||||||
&ServoExtensionCommand::GetPrefs(ref x) => Some(x.to_json()),
|
&ServoExtensionCommand::GetPrefs(ref x) => Some(x.to_json()),
|
||||||
&ServoExtensionCommand::SetPrefs(ref x) => Some(x.to_json())
|
&ServoExtensionCommand::SetPrefs(ref x) => Some(x.to_json()),
|
||||||
|
&ServoExtensionCommand::ResetPrefs(ref x) => Some(x.to_json()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -166,7 +174,7 @@ impl Parameters for SetPrefsParameters {
|
||||||
"prefs was not an array")));
|
"prefs was not an array")));
|
||||||
let mut params = Vec::with_capacity(items.len());
|
let mut params = Vec::with_capacity(items.len());
|
||||||
for (name, val) in items.iter() {
|
for (name, val) in items.iter() {
|
||||||
let value = try!(PrefValue::from_json(val).or(
|
let value = try!(PrefValue::from_json(val.clone()).or(
|
||||||
Err(WebDriverError::new(ErrorStatus::InvalidArgument,
|
Err(WebDriverError::new(ErrorStatus::InvalidArgument,
|
||||||
"Pref is not a boolean or string"))));
|
"Pref is not a boolean or string"))));
|
||||||
let key = name.to_owned();
|
let key = name.to_owned();
|
||||||
|
@ -644,6 +652,20 @@ impl Handler {
|
||||||
}
|
}
|
||||||
Ok(WebDriverResponse::Void)
|
Ok(WebDriverResponse::Void)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn handle_reset_prefs(&self,
|
||||||
|
parameters: &GetPrefsParameters) -> WebDriverResult<WebDriverResponse> {
|
||||||
|
let prefs = if parameters.prefs.len() == 0 {
|
||||||
|
reset_all_prefs();
|
||||||
|
BTreeMap::new()
|
||||||
|
} else {
|
||||||
|
parameters.prefs
|
||||||
|
.iter()
|
||||||
|
.map(|item| (item.clone(), reset_pref(item).to_json()))
|
||||||
|
.collect::<BTreeMap<_, _>>()
|
||||||
|
};
|
||||||
|
Ok(WebDriverResponse::Generic(ValueResponse::new(prefs.to_json())))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl WebDriverHandler<ServoExtensionRoute> for Handler {
|
impl WebDriverHandler<ServoExtensionRoute> for Handler {
|
||||||
|
@ -685,6 +707,7 @@ impl WebDriverHandler<ServoExtensionRoute> for Handler {
|
||||||
match extension {
|
match extension {
|
||||||
&ServoExtensionCommand::GetPrefs(ref x) => self.handle_get_prefs(x),
|
&ServoExtensionCommand::GetPrefs(ref x) => self.handle_get_prefs(x),
|
||||||
&ServoExtensionCommand::SetPrefs(ref x) => self.handle_set_prefs(x),
|
&ServoExtensionCommand::SetPrefs(ref x) => self.handle_set_prefs(x),
|
||||||
|
&ServoExtensionCommand::ResetPrefs(ref x) => self.handle_reset_prefs(x),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => Err(WebDriverError::new(ErrorStatus::UnsupportedOperation,
|
_ => Err(WebDriverError::new(ErrorStatus::UnsupportedOperation,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue