diff --git a/components/webdriver_server/lib.rs b/components/webdriver_server/lib.rs index 659922f452a..7e5df2f5cab 100644 --- a/components/webdriver_server/lib.rs +++ b/components/webdriver_server/lib.rs @@ -299,6 +299,11 @@ impl Handler { } } + fn handle_delete_session(&mut self) -> WebDriverResult { + self.session = None; + Ok(WebDriverResponse::Void) + } + #[inline] fn frame_script_command(&self, cmd_msg: WebDriverScriptCommand) -> WebDriverResult<()> { Ok(self.constellation_chan.send(ConstellationMsg::WebDriverCommand( @@ -767,6 +772,7 @@ impl WebDriverHandler for Handler { match msg.command { WebDriverCommand::NewSession => self.handle_new_session(), + WebDriverCommand::DeleteSession => self.handle_delete_session(), WebDriverCommand::Get(ref parameters) => self.handle_get(parameters), WebDriverCommand::GetCurrentUrl => self.handle_current_url(), WebDriverCommand::GetWindowSize => self.handle_window_size(), @@ -809,6 +815,8 @@ impl WebDriverHandler for Handler { } fn delete_session(&mut self, _session: &Option) { + // Servo doesn't support multiple sessions, so we exit on session deletion + let _ = self.constellation_chan.send(ConstellationMsg::Exit); self.session = None; } }