diff options
author | Jacob Parker <j3parker@csclub.uwaterloo.ca> | 2015-05-27 01:42:06 -0400 |
---|---|---|
committer | Jacob Parker <j3parker@csclub.uwaterloo.ca> | 2015-06-01 18:39:43 -0400 |
commit | a00d264c8cf864b905a1c081990b711c17f0883e (patch) | |
tree | 48f85f62c011a14538e7a034a9c4823c35212146 | |
parent | 54afa01dd665b8facbbba7d49974ac5532e3b83f (diff) | |
download | servo-a00d264c8cf864b905a1c081990b711c17f0883e.tar.gz servo-a00d264c8cf864b905a1c081990b711c17f0883e.zip |
fixes #5232, more console log levels sent to devtools
-rw-r--r-- | components/devtools/lib.rs | 45 | ||||
-rw-r--r-- | components/devtools_traits/lib.rs | 23 | ||||
-rw-r--r-- | components/script/dom/console.rs | 26 |
3 files changed, 54 insertions, 40 deletions
diff --git a/components/devtools/lib.rs b/components/devtools/lib.rs index 71fa0b0a614..57f075e9327 100644 --- a/components/devtools/lib.rs +++ b/components/devtools/lib.rs @@ -39,7 +39,7 @@ use actors::timeline::TimelineActor; use actors::worker::WorkerActor; use protocol::JsonPacketStream; -use devtools_traits::{ConsoleMessage, DevtoolsControlMsg, NetworkEvent}; +use devtools_traits::{ConsoleMessage, DevtoolsControlMsg, NetworkEvent, LogLevel}; use devtools_traits::{DevtoolsPageInfo, DevtoolScriptControlMsg}; use msg::constellation_msg::{PipelineId, WorkerId}; use util::task::spawn_named; @@ -251,29 +251,26 @@ fn run_server(sender: Sender<DevtoolsControlMsg>, let console_actor_name = find_console_actor(actors.clone(), id, actor_pipelines); let actors = actors.lock().unwrap(); let console_actor = actors.find::<ConsoleActor>(&console_actor_name); - match console_message { - ConsoleMessage::LogMessage { - message, - filename, - lineNumber, - columnNumber, - } => { - let msg = ConsoleAPICall { - from: console_actor.name.clone(), - __type__: "consoleAPICall".to_string(), - message: ConsoleMsg { - level: "log".to_string(), - timeStamp: precise_time_ns(), - arguments: vec!(message), - filename: filename, - lineNumber: lineNumber, - columnNumber: columnNumber, - }, - }; - for stream in console_actor.streams.borrow_mut().iter_mut() { - stream.write_json_packet(&msg); - } - } + let msg = ConsoleAPICall { + from: console_actor.name.clone(), + __type__: "consoleAPICall".to_string(), + message: ConsoleMsg { + level: match console_message.logLevel { + LogLevel::Debug => "debug", + LogLevel::Info => "info", + LogLevel::Warn => "warn", + LogLevel::Error => "error", + _ => "log" + }.to_string(), + timeStamp: precise_time_ns(), + arguments: vec!(console_message.message), + filename: console_message.filename, + lineNumber: console_message.lineNumber, + columnNumber: console_message.columnNumber, + }, + }; + for stream in console_actor.streams.borrow_mut().iter_mut() { + stream.write_json_packet(&msg); } } diff --git a/components/devtools_traits/lib.rs b/components/devtools_traits/lib.rs index f0a2d19dcb1..5f584347c4f 100644 --- a/components/devtools_traits/lib.rs +++ b/components/devtools_traits/lib.rs @@ -149,15 +149,22 @@ impl Decodable for Modification { } } -//TODO: Include options for Warn, Debug, Info, Error messages from Console #[derive(Clone)] -pub enum ConsoleMessage { - LogMessage { - message: String, - filename: String, - lineNumber: u32, - columnNumber: u32, - }, +pub enum LogLevel { + Log, + Debug, + Info, + Warn, + Error, +} + +#[derive(Clone)] +pub struct ConsoleMessage { + pub message: String, + pub logLevel: LogLevel, + pub filename: String, + pub lineNumber: u32, + pub columnNumber: u32, } bitflags! { diff --git a/components/script/dom/console.rs b/components/script/dom/console.rs index 0ef57f026b5..45cd3e43f76 100644 --- a/components/script/dom/console.rs +++ b/components/script/dom/console.rs @@ -8,7 +8,7 @@ use dom::bindings::global::{GlobalRef, GlobalField}; use dom::bindings::js::{JSRef, Temporary}; use dom::bindings::utils::{Reflector, reflect_dom_object}; use dom::window::WindowHelpers; -use devtools_traits::{DevtoolsControlMsg, ConsoleMessage}; +use devtools_traits::{DevtoolsControlMsg, ConsoleMessage, LogLevel}; use util::str::DOMString; // https://developer.mozilla.org/en-US/docs/Web/API/Console @@ -36,19 +36,14 @@ impl<'a> ConsoleMethods for JSRef<'a, Console> { fn Log(self, messages: Vec<DOMString>) { for message in messages { println!("{}", message); - //TODO: Sending fake values for filename, lineNumber and columnNumber in LogMessage; adjust later - propagate_console_msg(&self, ConsoleMessage::LogMessage { - message: message, - filename: "test".to_owned(), - lineNumber: 1, - columnNumber: 1, - }); + propagate_console_msg(&self, prepare_message(LogLevel::Log, message)); } } fn Debug(self, messages: Vec<DOMString>) { for message in messages { println!("{}", message); + propagate_console_msg(&self, prepare_message(LogLevel::Debug, message)); } } @@ -56,6 +51,7 @@ impl<'a> ConsoleMethods for JSRef<'a, Console> { fn Info(self, messages: Vec<DOMString>) { for message in messages { println!("{}", message); + propagate_console_msg(&self, prepare_message(LogLevel::Info, message)); } } @@ -63,6 +59,7 @@ impl<'a> ConsoleMethods for JSRef<'a, Console> { fn Warn(self, messages: Vec<DOMString>) { for message in messages { println!("{}", message); + propagate_console_msg(&self, prepare_message(LogLevel::Warn, message)); } } @@ -70,6 +67,7 @@ impl<'a> ConsoleMethods for JSRef<'a, Console> { fn Error(self, messages: Vec<DOMString>) { for message in messages { println!("{}", message); + propagate_console_msg(&self, prepare_message(LogLevel::Error, message)); } } @@ -81,10 +79,22 @@ impl<'a> ConsoleMethods for JSRef<'a, Console> { None => "no message", }; println!("Assertion failed: {}", message); + propagate_console_msg(&self, prepare_message(LogLevel::Error, message.to_owned())); } } } +fn prepare_message(logLevel: LogLevel, message: String) -> ConsoleMessage { + //TODO: Sending fake values for filename, lineNumber and columnNumber in LogMessage; adjust later + ConsoleMessage{ + message: message, + logLevel: logLevel, + filename: "test".to_owned(), + lineNumber: 1, + columnNumber: 1 + } +} + fn propagate_console_msg(console: &JSRef<Console>, console_message: ConsoleMessage) { let global = console.global.root(); match global.r() { |