From 1452614e2872ca389571ff5a063a64022e27b6a6 Mon Sep 17 00:00:00 2001 From: Ruud van Asseldonk Date: Fri, 13 Feb 2015 13:15:14 +0100 Subject: [PATCH 1/5] Do not glob-export DevtoolsControlMsg variants. --- components/compositing/constellation.rs | 4 ++-- components/devtools/lib.rs | 10 +++++----- components/devtools_traits/lib.rs | 1 - components/script/dom/console.rs | 5 +++-- components/script/script_task.rs | 9 +++++---- 5 files changed, 15 insertions(+), 14 deletions(-) diff --git a/components/compositing/constellation.rs b/components/compositing/constellation.rs index 07c1faea6dd..4b704ce783a 100644 --- a/components/compositing/constellation.rs +++ b/components/compositing/constellation.rs @@ -7,7 +7,7 @@ use pipeline::{Pipeline, CompositionPipeline}; use compositor_task::CompositorProxy; use compositor_task::Msg as CompositorMsg; use devtools_traits; -use devtools_traits::DevtoolsControlChan; +use devtools_traits::{DevtoolsControlChan, DevtoolsControlMsg}; use geom::rect::{Rect, TypedRect}; use geom::scale_factor::ScaleFactor; use gfx::font_cache_task::FontCacheTask; @@ -521,7 +521,7 @@ impl Constellation { self.image_cache_task.exit(); self.resource_task.send(resource_task::ControlMsg::Exit).unwrap(); self.devtools_chan.as_ref().map(|chan| { - chan.send(devtools_traits::ServerExitMsg).unwrap(); + chan.send(DevtoolsControlMsg::ServerExitMsg).unwrap(); }); self.storage_task.send(StorageTaskMsg::Exit).unwrap(); self.font_cache_task.exit(); diff --git a/components/devtools/lib.rs b/components/devtools/lib.rs index 759937c6354..16d973e90b4 100644 --- a/components/devtools/lib.rs +++ b/components/devtools/lib.rs @@ -35,8 +35,8 @@ use actors::root::RootActor; use actors::tab::TabActor; use protocol::JsonPacketStream; -use devtools_traits::{ServerExitMsg, DevtoolsControlMsg, NewGlobal, DevtoolScriptControlMsg}; -use devtools_traits::{DevtoolsPageInfo, SendConsoleMessage, ConsoleMessage}; +use devtools_traits::{ConsoleMessage, DevtoolsControlMsg}; +use devtools_traits::{DevtoolsPageInfo, DevtoolScriptControlMsg}; use msg::constellation_msg::PipelineId; use util::task::spawn_named; @@ -231,11 +231,11 @@ fn run_server(receiver: Receiver, port: u16) { match acceptor.accept() { Err(ref e) if e.kind == TimedOut => { match receiver.try_recv() { - Ok(ServerExitMsg) | Err(Disconnected) => break, - Ok(NewGlobal(id, sender, pageinfo)) => + Ok(DevtoolsControlMsg::ServerExitMsg) | Err(Disconnected) => break, + Ok(DevtoolsControlMsg::NewGlobal(id, sender, pageinfo)) => handle_new_global(actors.clone(), id,sender, &mut actor_pipelines, pageinfo), - Ok(SendConsoleMessage(id, console_message)) => + Ok(DevtoolsControlMsg::SendConsoleMessage(id, console_message)) => handle_console_message(actors.clone(), id, console_message, &actor_pipelines), Err(Empty) => acceptor.set_timeout(Some(POLL_TIMEOUT)), diff --git a/components/devtools_traits/lib.rs b/components/devtools_traits/lib.rs index 349452bc40f..b066d786454 100644 --- a/components/devtools_traits/lib.rs +++ b/components/devtools_traits/lib.rs @@ -20,7 +20,6 @@ extern crate "serialize" as rustc_serialize; extern crate url; extern crate util; -pub use self::DevtoolsControlMsg::*; pub use self::DevtoolScriptControlMsg::*; pub use self::EvaluateJSReply::*; diff --git a/components/script/dom/console.rs b/components/script/dom/console.rs index cff30395d2a..4dec1c3bd45 100644 --- a/components/script/dom/console.rs +++ b/components/script/dom/console.rs @@ -7,7 +7,7 @@ use dom::bindings::codegen::Bindings::ConsoleBinding::ConsoleMethods; use dom::bindings::global::{GlobalRef, GlobalField}; use dom::bindings::js::{JSRef, Temporary}; use dom::bindings::utils::{Reflector, reflect_dom_object}; -use devtools_traits::{SendConsoleMessage, ConsoleMessage}; +use devtools_traits::{DevtoolsControlMsg, ConsoleMessage}; use util::str::DOMString; #[dom_struct] @@ -68,7 +68,8 @@ fn propagate_console_msg(console: &JSRef, console_message: ConsoleMessa GlobalRef::Window(window_ref) => { let pipelineId = window_ref.page().id; console.global.root().r().as_window().page().devtools_chan.as_ref().map(|chan| { - chan.send(SendConsoleMessage(pipelineId, console_message.clone())).unwrap(); + chan.send(DevtoolsControlMsg::SendConsoleMessage( + pipelineId, console_message.clone())).unwrap(); }); }, diff --git a/components/script/script_task.rs b/components/script/script_task.rs index 7e9269442e1..b28fcc95bff 100644 --- a/components/script/script_task.rs +++ b/components/script/script_task.rs @@ -41,8 +41,8 @@ use page::{Page, IterablePage, Frame}; use timers::TimerId; use devtools; -use devtools_traits::{DevtoolsControlChan, DevtoolsControlPort, NewGlobal, GetRootNode, DevtoolsPageInfo}; -use devtools_traits::{DevtoolScriptControlMsg, EvaluateJS, GetDocumentElement}; +use devtools_traits::{DevtoolsControlChan, DevtoolsControlPort, GetRootNode, DevtoolsPageInfo}; +use devtools_traits::{DevtoolsControlMsg, DevtoolScriptControlMsg, EvaluateJS, GetDocumentElement}; use devtools_traits::{GetChildren, GetLayout, ModifyAttribute, WantsLiveNotifications}; use script_traits::CompositorEvent; use script_traits::CompositorEvent::{ResizeEvent, ReflowEvent, ClickEvent}; @@ -947,8 +947,9 @@ impl ScriptTask { title: document.r().Title(), url: final_url }; - chan.send(NewGlobal(pipeline_id, self.devtools_sender.clone(), - page_info)).unwrap(); + chan.send(DevtoolsControlMsg::NewGlobal(pipeline_id, + self.devtools_sender.clone(), + page_info)).unwrap(); } } } From 6ff3a5a3c1ac4a67ec2f1383a19a479eea2de503 Mon Sep 17 00:00:00 2001 From: Ruud van Asseldonk Date: Fri, 13 Feb 2015 13:35:31 +0100 Subject: [PATCH 2/5] Do not glob-export DevtoolScriptControlMsg variants. --- components/devtools/actors/console.rs | 5 +++-- components/devtools/actors/inspector.rs | 5 +++-- components/devtools/actors/tab.rs | 8 +++++--- components/devtools_traits/lib.rs | 1 - components/script/script_task.rs | 19 +++++++++---------- 5 files changed, 20 insertions(+), 18 deletions(-) diff --git a/components/devtools/actors/console.rs b/components/devtools/actors/console.rs index 60636059ced..6b1123ea38a 100644 --- a/components/devtools/actors/console.rs +++ b/components/devtools/actors/console.rs @@ -9,7 +9,7 @@ use actor::{Actor, ActorRegistry}; use protocol::JsonPacketStream; -use devtools_traits::{EvaluateJS, NullValue, VoidValue, NumberValue, StringValue, BooleanValue}; +use devtools_traits::{NullValue, VoidValue, NumberValue, StringValue, BooleanValue}; use devtools_traits::{ActorValue, DevtoolScriptControlMsg}; use msg::constellation_msg::PipelineId; @@ -221,7 +221,8 @@ impl Actor for ConsoleActor { "evaluateJS" => { let input = msg.get(&"text".to_string()).unwrap().as_string().unwrap().to_string(); let (chan, port) = channel(); - self.script_chan.send(EvaluateJS(self.pipeline, input.clone(), chan)).unwrap(); + self.script_chan.send(DevtoolScriptControlMsg::EvaluateJS( + self.pipeline, input.clone(), chan)).unwrap(); //TODO: extract conversion into protocol module or some other useful place let result = match try!(port.recv().map_err(|_| ())) { diff --git a/components/devtools/actors/inspector.rs b/components/devtools/actors/inspector.rs index 33871b1929f..43c8881a0f0 100644 --- a/components/devtools/actors/inspector.rs +++ b/components/devtools/actors/inspector.rs @@ -4,8 +4,9 @@ /// Liberally derived from the [Firefox JS implementation](http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/inspector.js). -use devtools_traits::{GetRootNode, GetDocumentElement, GetChildren, DevtoolScriptControlMsg}; -use devtools_traits::{GetLayout, NodeInfo, ModifyAttribute}; +use devtools_traits::{DevtoolScriptControlMsg, NodeInfo}; +use devtools_traits::DevtoolScriptControlMsg::{GetRootNode, GetDocumentElement, GetChildren}; +use devtools_traits::DevtoolScriptControlMsg::{GetLayout, ModifyAttribute}; use actor::{Actor, ActorRegistry}; use protocol::JsonPacketStream; diff --git a/components/devtools/actors/tab.rs b/components/devtools/actors/tab.rs index f0057243b73..1265361915f 100644 --- a/components/devtools/actors/tab.rs +++ b/components/devtools/actors/tab.rs @@ -8,7 +8,7 @@ use actor::{Actor, ActorRegistry}; use actors::console::ConsoleActor; -use devtools_traits::WantsLiveNotifications; +use devtools_traits::DevtoolScriptControlMsg; use protocol::JsonPacketStream; use serialize::json; @@ -100,7 +100,8 @@ impl Actor for TabActor { let console_actor = registry.find::(self.console.as_slice()); console_actor.streams.borrow_mut().push(stream.clone()); stream.write_json_packet(&msg); - console_actor.script_chan.send(WantsLiveNotifications(console_actor.pipeline, true)).unwrap(); + console_actor.script_chan.send( + DevtoolScriptControlMsg::WantsLiveNotifications(console_actor.pipeline, true)).unwrap(); true } @@ -114,7 +115,8 @@ impl Actor for TabActor { let console_actor = registry.find::(self.console.as_slice()); console_actor.streams.borrow_mut().pop(); stream.write_json_packet(&msg); - console_actor.script_chan.send(WantsLiveNotifications(console_actor.pipeline, false)).unwrap(); + console_actor.script_chan.send( + DevtoolScriptControlMsg::WantsLiveNotifications(console_actor.pipeline, false)).unwrap(); true } diff --git a/components/devtools_traits/lib.rs b/components/devtools_traits/lib.rs index b066d786454..2197391f5fa 100644 --- a/components/devtools_traits/lib.rs +++ b/components/devtools_traits/lib.rs @@ -20,7 +20,6 @@ extern crate "serialize" as rustc_serialize; extern crate url; extern crate util; -pub use self::DevtoolScriptControlMsg::*; pub use self::EvaluateJSReply::*; use rustc_serialize::{Decodable, Decoder}; diff --git a/components/script/script_task.rs b/components/script/script_task.rs index b28fcc95bff..8573efa9d3f 100644 --- a/components/script/script_task.rs +++ b/components/script/script_task.rs @@ -41,9 +41,8 @@ use page::{Page, IterablePage, Frame}; use timers::TimerId; use devtools; -use devtools_traits::{DevtoolsControlChan, DevtoolsControlPort, GetRootNode, DevtoolsPageInfo}; -use devtools_traits::{DevtoolsControlMsg, DevtoolScriptControlMsg, EvaluateJS, GetDocumentElement}; -use devtools_traits::{GetChildren, GetLayout, ModifyAttribute, WantsLiveNotifications}; +use devtools_traits::{DevtoolsControlChan, DevtoolsControlPort, DevtoolsPageInfo}; +use devtools_traits::{DevtoolsControlMsg, DevtoolScriptControlMsg}; use script_traits::CompositorEvent; use script_traits::CompositorEvent::{ResizeEvent, ReflowEvent, ClickEvent}; use script_traits::CompositorEvent::{MouseDownEvent, MouseUpEvent}; @@ -633,19 +632,19 @@ impl ScriptTask { fn handle_msg_from_devtools(&self, msg: DevtoolScriptControlMsg) { match msg { - EvaluateJS(id, s, reply) => + DevtoolScriptControlMsg::EvaluateJS(id, s, reply) => devtools::handle_evaluate_js(&*self.page.borrow(), id, s, reply), - GetRootNode(id, reply) => + DevtoolScriptControlMsg::GetRootNode(id, reply) => devtools::handle_get_root_node(&*self.page.borrow(), id, reply), - GetDocumentElement(id, reply) => + DevtoolScriptControlMsg::GetDocumentElement(id, reply) => devtools::handle_get_document_element(&*self.page.borrow(), id, reply), - GetChildren(id, node_id, reply) => + DevtoolScriptControlMsg::GetChildren(id, node_id, reply) => devtools::handle_get_children(&*self.page.borrow(), id, node_id, reply), - GetLayout(id, node_id, reply) => + DevtoolScriptControlMsg::GetLayout(id, node_id, reply) => devtools::handle_get_layout(&*self.page.borrow(), id, node_id, reply), - ModifyAttribute(id, node_id, modifications) => + DevtoolScriptControlMsg::ModifyAttribute(id, node_id, modifications) => devtools::handle_modify_attribute(&*self.page.borrow(), id, node_id, modifications), - WantsLiveNotifications(pipeline_id, to_send) => + DevtoolScriptControlMsg::WantsLiveNotifications(pipeline_id, to_send) => devtools::handle_wants_live_notifications(&*self.page.borrow(), pipeline_id, to_send), } } From 0fbfb8cffca3a9639e34c08027df1ddb967fd79e Mon Sep 17 00:00:00 2001 From: Ruud van Asseldonk Date: Fri, 13 Feb 2015 14:09:10 +0100 Subject: [PATCH 3/5] Do not glob-export EvaluateJSReply variants. This closes #4921. --- components/compositing/constellation.rs | 1 - components/devtools/actors/console.rs | 16 ++++++++-------- components/devtools_traits/lib.rs | 2 -- components/script/devtools.rs | 11 +++++------ 4 files changed, 13 insertions(+), 17 deletions(-) diff --git a/components/compositing/constellation.rs b/components/compositing/constellation.rs index 4b704ce783a..dedf6e07b5e 100644 --- a/components/compositing/constellation.rs +++ b/components/compositing/constellation.rs @@ -6,7 +6,6 @@ use pipeline::{Pipeline, CompositionPipeline}; use compositor_task::CompositorProxy; use compositor_task::Msg as CompositorMsg; -use devtools_traits; use devtools_traits::{DevtoolsControlChan, DevtoolsControlMsg}; use geom::rect::{Rect, TypedRect}; use geom::scale_factor::ScaleFactor; diff --git a/components/devtools/actors/console.rs b/components/devtools/actors/console.rs index 6b1123ea38a..ce099d574ec 100644 --- a/components/devtools/actors/console.rs +++ b/components/devtools/actors/console.rs @@ -9,8 +9,8 @@ use actor::{Actor, ActorRegistry}; use protocol::JsonPacketStream; -use devtools_traits::{NullValue, VoidValue, NumberValue, StringValue, BooleanValue}; -use devtools_traits::{ActorValue, DevtoolScriptControlMsg}; +use devtools_traits; +use devtools_traits::{DevtoolScriptControlMsg}; use msg::constellation_msg::PipelineId; use collections::BTreeMap; @@ -226,18 +226,18 @@ impl Actor for ConsoleActor { //TODO: extract conversion into protocol module or some other useful place let result = match try!(port.recv().map_err(|_| ())) { - VoidValue => { + devtools_traits::EvaluateJSReply::VoidValue => { let mut m = BTreeMap::new(); m.insert("type".to_string(), "undefined".to_string().to_json()); Json::Object(m) } - NullValue => { + devtools_traits::EvaluateJSReply::NullValue => { let mut m = BTreeMap::new(); m.insert("type".to_string(), "null".to_string().to_json()); Json::Object(m) } - BooleanValue(val) => val.to_json(), - NumberValue(val) => { + devtools_traits::EvaluateJSReply::BooleanValue(val) => val.to_json(), + devtools_traits::EvaluateJSReply::NumberValue(val) => { if val.is_nan() { let mut m = BTreeMap::new(); m.insert("type".to_string(), "NaN".to_string().to_json()); @@ -258,8 +258,8 @@ impl Actor for ConsoleActor { val.to_json() } } - StringValue(s) => s.to_json(), - ActorValue(s) => { + devtools_traits::EvaluateJSReply::StringValue(s) => s.to_json(), + devtools_traits::EvaluateJSReply::ActorValue(s) => { //TODO: make initial ActorValue message include these properties. let mut m = BTreeMap::new(); m.insert("type".to_string(), "object".to_string().to_json()); diff --git a/components/devtools_traits/lib.rs b/components/devtools_traits/lib.rs index 2197391f5fa..13815e8cf9e 100644 --- a/components/devtools_traits/lib.rs +++ b/components/devtools_traits/lib.rs @@ -20,8 +20,6 @@ extern crate "serialize" as rustc_serialize; extern crate url; extern crate util; -pub use self::EvaluateJSReply::*; - use rustc_serialize::{Decodable, Decoder}; use msg::constellation_msg::PipelineId; use util::str::DOMString; diff --git a/components/script/devtools.rs b/components/script/devtools.rs index e5683d4819a..5333b9a4cee 100644 --- a/components/script/devtools.rs +++ b/components/script/devtools.rs @@ -2,7 +2,6 @@ * 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 devtools_traits; use devtools_traits::{EvaluateJSReply, NodeInfo, Modification}; use dom::bindings::conversions::FromJSValConvertible; use dom::bindings::conversions::StringificationBehavior; @@ -31,16 +30,16 @@ pub fn handle_evaluate_js(page: &Rc, pipeline: PipelineId, eval: String, r let rval = window.r().evaluate_js_on_global_with_result(eval.as_slice()); reply.send(if rval.is_undefined() { - devtools_traits::VoidValue + EvaluateJSReply::VoidValue } else if rval.is_boolean() { - devtools_traits::BooleanValue(rval.to_boolean()) + EvaluateJSReply::BooleanValue(rval.to_boolean()) } else if rval.is_double() { - devtools_traits::NumberValue(FromJSValConvertible::from_jsval(cx, rval, ()).unwrap()) + EvaluateJSReply::NumberValue(FromJSValConvertible::from_jsval(cx, rval, ()).unwrap()) } else if rval.is_string() { //FIXME: use jsstring_to_str when jsval grows to_jsstring - devtools_traits::StringValue(FromJSValConvertible::from_jsval(cx, rval, StringificationBehavior::Default).unwrap()) + EvaluateJSReply::StringValue(FromJSValConvertible::from_jsval(cx, rval, StringificationBehavior::Default).unwrap()) } else if rval.is_null() { - devtools_traits::NullValue + EvaluateJSReply::NullValue } else { //FIXME: jsvals don't have an is_int32/is_number yet assert!(rval.is_object()); From 17486820924f6e2a5ebfb1c63630970d220a1075 Mon Sep 17 00:00:00 2001 From: Ruud van Asseldonk Date: Fri, 13 Feb 2015 15:49:14 +0100 Subject: [PATCH 4/5] Import DevtoolScriptControlMsg variant directly. --- components/devtools/actors/tab.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/components/devtools/actors/tab.rs b/components/devtools/actors/tab.rs index 1265361915f..ffabf959661 100644 --- a/components/devtools/actors/tab.rs +++ b/components/devtools/actors/tab.rs @@ -8,7 +8,7 @@ use actor::{Actor, ActorRegistry}; use actors::console::ConsoleActor; -use devtools_traits::DevtoolScriptControlMsg; +use devtools_traits::DevtoolScriptControlMsg::WantsLiveNotifications; use protocol::JsonPacketStream; use serialize::json; @@ -101,7 +101,7 @@ impl Actor for TabActor { console_actor.streams.borrow_mut().push(stream.clone()); stream.write_json_packet(&msg); console_actor.script_chan.send( - DevtoolScriptControlMsg::WantsLiveNotifications(console_actor.pipeline, true)).unwrap(); + WantsLiveNotifications(console_actor.pipeline, true)).unwrap(); true } @@ -116,7 +116,7 @@ impl Actor for TabActor { console_actor.streams.borrow_mut().pop(); stream.write_json_packet(&msg); console_actor.script_chan.send( - DevtoolScriptControlMsg::WantsLiveNotifications(console_actor.pipeline, false)).unwrap(); + WantsLiveNotifications(console_actor.pipeline, false)).unwrap(); true } From 6c1d62f9113b986dd8d212873bfb0e9d1c755f4b Mon Sep 17 00:00:00 2001 From: Ruud van Asseldonk Date: Fri, 13 Feb 2015 15:55:47 +0100 Subject: [PATCH 5/5] Import EvaluateJS variants directly. --- components/devtools/actors/console.rs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/components/devtools/actors/console.rs b/components/devtools/actors/console.rs index ce099d574ec..4816787e0e8 100644 --- a/components/devtools/actors/console.rs +++ b/components/devtools/actors/console.rs @@ -9,8 +9,9 @@ use actor::{Actor, ActorRegistry}; use protocol::JsonPacketStream; -use devtools_traits; -use devtools_traits::{DevtoolScriptControlMsg}; +use devtools_traits::EvaluateJSReply::{NullValue, VoidValue, NumberValue}; +use devtools_traits::EvaluateJSReply::{StringValue, BooleanValue, ActorValue}; +use devtools_traits::DevtoolScriptControlMsg; use msg::constellation_msg::PipelineId; use collections::BTreeMap; @@ -226,18 +227,18 @@ impl Actor for ConsoleActor { //TODO: extract conversion into protocol module or some other useful place let result = match try!(port.recv().map_err(|_| ())) { - devtools_traits::EvaluateJSReply::VoidValue => { + VoidValue => { let mut m = BTreeMap::new(); m.insert("type".to_string(), "undefined".to_string().to_json()); Json::Object(m) } - devtools_traits::EvaluateJSReply::NullValue => { + NullValue => { let mut m = BTreeMap::new(); m.insert("type".to_string(), "null".to_string().to_json()); Json::Object(m) } - devtools_traits::EvaluateJSReply::BooleanValue(val) => val.to_json(), - devtools_traits::EvaluateJSReply::NumberValue(val) => { + BooleanValue(val) => val.to_json(), + NumberValue(val) => { if val.is_nan() { let mut m = BTreeMap::new(); m.insert("type".to_string(), "NaN".to_string().to_json()); @@ -258,8 +259,8 @@ impl Actor for ConsoleActor { val.to_json() } } - devtools_traits::EvaluateJSReply::StringValue(s) => s.to_json(), - devtools_traits::EvaluateJSReply::ActorValue(s) => { + StringValue(s) => s.to_json(), + ActorValue(s) => { //TODO: make initial ActorValue message include these properties. let mut m = BTreeMap::new(); m.insert("type".to_string(), "object".to_string().to_json());