aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/console.rs
diff options
context:
space:
mode:
authorSagar Muchhal <muchhalsagar88@gmail.com>2015-02-05 19:52:35 +0000
committerJosh Matthews <josh@joshmatthews.net>2015-02-05 21:44:07 +0000
commit6699738cae3a82ae2114897ff5dc0dfdf7c59743 (patch)
tree98df788b8adb6d0fb32b46ac0751aba75afffc33 /components/script/dom/console.rs
parent149053c2a770f919538133350f9398510c998bcf (diff)
downloadservo-6699738cae3a82ae2114897ff5dc0dfdf7c59743.tar.gz
servo-6699738cae3a82ae2114897ff5dc0dfdf7c59743.zip
Add console message support to devtools. Does not actually cause logging to occur in the remote console.
Diffstat (limited to 'components/script/dom/console.rs')
-rw-r--r--components/script/dom/console.rs29
1 files changed, 24 insertions, 5 deletions
diff --git a/components/script/dom/console.rs b/components/script/dom/console.rs
index 70323c510d9..cff30395d2a 100644
--- a/components/script/dom/console.rs
+++ b/components/script/dom/console.rs
@@ -4,31 +4,35 @@
use dom::bindings::codegen::Bindings::ConsoleBinding;
use dom::bindings::codegen::Bindings::ConsoleBinding::ConsoleMethods;
-use dom::bindings::global::GlobalRef;
+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 util::str::DOMString;
#[dom_struct]
pub struct Console {
- reflector_: Reflector
+ reflector_: Reflector,
+ global: GlobalField,
}
impl Console {
- fn new_inherited() -> Console {
+ fn new_inherited(global: GlobalRef) -> Console {
Console {
- reflector_: Reflector::new()
+ reflector_: Reflector::new(),
+ global: GlobalField::from_rooted(&global),
}
}
pub fn new(global: GlobalRef) -> Temporary<Console> {
- reflect_dom_object(box Console::new_inherited(), global, ConsoleBinding::Wrap)
+ reflect_dom_object(box Console::new_inherited(global), global, ConsoleBinding::Wrap)
}
}
impl<'a> ConsoleMethods for JSRef<'a, Console> {
fn Log(self, message: DOMString) {
println!("{}", message);
+ propagate_console_msg(&self, ConsoleMessage::LogMessage(message));
}
fn Debug(self, message: DOMString) {
@@ -58,3 +62,18 @@ impl<'a> ConsoleMethods for JSRef<'a, Console> {
}
}
+fn propagate_console_msg(console: &JSRef<Console>, console_message: ConsoleMessage) {
+ let global = console.global.root();
+ match global.r() {
+ 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();
+ });
+ },
+
+ GlobalRef::Worker(_) => {
+ // TODO: support worker console logs
+ }
+ }
+}