diff options
Diffstat (limited to 'components/script/dom/console.rs')
-rw-r--r-- | components/script/dom/console.rs | 44 |
1 files changed, 22 insertions, 22 deletions
diff --git a/components/script/dom/console.rs b/components/script/dom/console.rs index c19855b76ff..d4fd97a81d8 100644 --- a/components/script/dom/console.rs +++ b/components/script/dom/console.rs @@ -5,7 +5,7 @@ use devtools_traits::{ConsoleMessage, LogLevel, ScriptToDevtoolsControlMsg}; use dom::bindings::codegen::Bindings::ConsoleBinding; use dom::bindings::codegen::Bindings::ConsoleBinding::ConsoleMethods; -use dom::bindings::global::{GlobalField, GlobalRef}; +use dom::bindings::global::{GlobalRef, global_root_from_reflector}; use dom::bindings::js::Root; use dom::bindings::reflector::{Reflector, reflect_dom_object}; use util::str::DOMString; @@ -14,22 +14,33 @@ use util::str::DOMString; #[dom_struct] pub struct Console { reflector_: Reflector, - global: GlobalField, } impl Console { - fn new_inherited(global: GlobalRef) -> Console { + fn new_inherited() -> Console { Console { reflector_: Reflector::new(), - global: GlobalField::from_rooted(&global), } } pub fn new(global: GlobalRef) -> Root<Console> { - reflect_dom_object(box Console::new_inherited(global), + reflect_dom_object(box Console::new_inherited(), global, ConsoleBinding::Wrap) } + + fn send_to_devtools(&self, level: LogLevel, message: DOMString) { + let global = global_root_from_reflector(self); + let global = global.r(); + if let Some(chan) = global.devtools_chan() { + let console_message = prepare_message(level, message); + let devtools_message = ScriptToDevtoolsControlMsg::ConsoleAPI( + global.pipeline(), + console_message, + global.get_worker_id()); + chan.send(devtools_message).unwrap(); + } + } } impl ConsoleMethods for Console { @@ -37,7 +48,7 @@ impl ConsoleMethods for Console { fn Log(&self, messages: Vec<DOMString>) { for message in messages { println!("{}", message); - propagate_console_msg(&self, prepare_message(LogLevel::Log, message)); + self.send_to_devtools(LogLevel::Log, message); } } @@ -45,7 +56,7 @@ impl ConsoleMethods for Console { fn Debug(&self, messages: Vec<DOMString>) { for message in messages { println!("{}", message); - propagate_console_msg(&self, prepare_message(LogLevel::Debug, message)); + self.send_to_devtools(LogLevel::Debug, message); } } @@ -53,7 +64,7 @@ impl ConsoleMethods for Console { fn Info(&self, messages: Vec<DOMString>) { for message in messages { println!("{}", message); - propagate_console_msg(&self, prepare_message(LogLevel::Info, message)); + self.send_to_devtools(LogLevel::Info, message); } } @@ -61,7 +72,7 @@ impl ConsoleMethods for Console { fn Warn(&self, messages: Vec<DOMString>) { for message in messages { println!("{}", message); - propagate_console_msg(&self, prepare_message(LogLevel::Warn, message)); + self.send_to_devtools(LogLevel::Warn, message); } } @@ -69,7 +80,7 @@ impl ConsoleMethods for Console { fn Error(&self, messages: Vec<DOMString>) { for message in messages { println!("{}", message); - propagate_console_msg(&self, prepare_message(LogLevel::Error, message)); + self.send_to_devtools(LogLevel::Error, message); } } @@ -78,7 +89,7 @@ impl ConsoleMethods for Console { if !condition { let message = message.unwrap_or_else(|| DOMString::from("no message")); println!("Assertion failed: {}", message); - propagate_console_msg(&self, prepare_message(LogLevel::Error, message)); + self.send_to_devtools(LogLevel::Error, message); } } } @@ -93,14 +104,3 @@ fn prepare_message(logLevel: LogLevel, message: DOMString) -> ConsoleMessage { columnNumber: 1, } } - -fn propagate_console_msg(console: &&Console, console_message: ConsoleMessage) { - let global = console.global.root(); - let pipelineId = global.r().pipeline(); - global.r().devtools_chan().as_ref().map(|chan| { - chan.send(ScriptToDevtoolsControlMsg::ConsoleAPI(pipelineId, - console_message.clone(), - global.r().get_worker_id())) - .unwrap(); - }); -} |