From 9ccf7c0a57a7aa6dfd22bdd946cdf0fd14307e18 Mon Sep 17 00:00:00 2001 From: codehag Date: Sun, 14 Oct 2018 19:26:47 +0200 Subject: [PATCH] DevTools - add Emulation Actor --- .../devtools/actors/browsing_context.rs | 3 ++ components/devtools/actors/emulation.rs | 35 +++++++++++++++++++ components/devtools/lib.rs | 10 +++++- 3 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 components/devtools/actors/emulation.rs diff --git a/components/devtools/actors/browsing_context.rs b/components/devtools/actors/browsing_context.rs index 13e304eceffa..2c8589a9ddaf 100644 --- a/components/devtools/actors/browsing_context.rs +++ b/components/devtools/actors/browsing_context.rs @@ -72,6 +72,7 @@ pub struct BrowsingContextActorMsg { url: String, outerWindowID: u32, consoleActor: String, + emulationActor: String, inspectorActor: String, timelineActor: String, profilerActor: String, @@ -84,6 +85,7 @@ pub struct BrowsingContextActor { pub title: String, pub url: String, pub console: String, + pub emulation: String, pub inspector: String, pub timeline: String, pub profiler: String, @@ -192,6 +194,7 @@ impl BrowsingContextActor { url: self.url.clone(), outerWindowID: 0, //FIXME: this should probably be the pipeline id consoleActor: self.console.clone(), + emulationActor: self.emulation.clone(), inspectorActor: self.inspector.clone(), timelineActor: self.timeline.clone(), profilerActor: self.profiler.clone(), diff --git a/components/devtools/actors/emulation.rs b/components/devtools/actors/emulation.rs new file mode 100644 index 000000000000..3ab156791e06 --- /dev/null +++ b/components/devtools/actors/emulation.rs @@ -0,0 +1,35 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +use actor::{Actor, ActorMessageStatus, ActorRegistry}; +use serde_json::{Map, Value}; +use std::net::TcpStream; + +pub struct EmulationActor { + pub name: String, +} + +impl Actor for EmulationActor { + fn name(&self) -> String { + self.name.clone() + } + + fn handle_message( + &self, + _registry: &ActorRegistry, + msg_type: &str, + _msg: &Map, + _stream: &mut TcpStream, + ) -> Result { + Ok(match msg_type { + _ => ActorMessageStatus::Ignored, + }) + } +} + +impl EmulationActor { + pub fn new(name: String) -> EmulationActor { + EmulationActor { name: name } + } +} diff --git a/components/devtools/lib.rs b/components/devtools/lib.rs index 1d76fbfb457d..547f96bc4457 100644 --- a/components/devtools/lib.rs +++ b/components/devtools/lib.rs @@ -28,6 +28,7 @@ use actor::{Actor, ActorRegistry}; use actors::browsing_context::BrowsingContextActor; use actors::console::ConsoleActor; use actors::device::DeviceActor; +use actors::emulation::EmulationActor; use actors::framerate::FramerateActor; use actors::inspector::InspectorActor; use actors::network_event::{EventActor, NetworkEventActor, ResponseStartMsg}; @@ -60,6 +61,7 @@ mod actors { pub mod browsing_context; pub mod console; pub mod device; + pub mod emulation; pub mod framerate; pub mod inspector; pub mod memory; @@ -230,13 +232,16 @@ fn run_server( let (pipeline, worker_id) = ids; //TODO: move all this actor creation into a constructor method on BrowsingContextActor - let (target, console, inspector, timeline, profiler, performance, styleSheets, thread) = { + let (target, console, emulation, inspector, timeline, profiler, performance, styleSheets, thread) = { let console = ConsoleActor { name: actors.new_name("console"), script_chan: script_sender.clone(), pipeline: pipeline, streams: RefCell::new(Vec::new()), }; + + let emulation = EmulationActor::new(actors.new_name("emulation")); + let inspector = InspectorActor { name: actors.new_name("inspector"), walker: RefCell::new(None), @@ -262,6 +267,7 @@ fn run_server( title: String::from(title), url: url.into_string(), console: console.name(), + emulation: emulation.name(), inspector: inspector.name(), timeline: timeline.name(), profiler: profiler.name(), @@ -276,6 +282,7 @@ fn run_server( ( target, console, + emulation, inspector, timeline, profiler, @@ -298,6 +305,7 @@ fn run_server( actor_pipelines.insert(pipeline, target.name.clone()); actors.register(Box::new(target)); actors.register(Box::new(console)); + actors.register(Box::new(emulation)); actors.register(Box::new(inspector)); actors.register(Box::new(timeline)); actors.register(Box::new(profiler));