fixes #5232, more console log levels sent to devtools

This commit is contained in:
Jacob Parker 2015-05-27 01:42:06 -04:00
parent 54afa01dd6
commit a00d264c8c
3 changed files with 54 additions and 40 deletions

View file

@ -39,7 +39,7 @@ use actors::timeline::TimelineActor;
use actors::worker::WorkerActor; use actors::worker::WorkerActor;
use protocol::JsonPacketStream; use protocol::JsonPacketStream;
use devtools_traits::{ConsoleMessage, DevtoolsControlMsg, NetworkEvent}; use devtools_traits::{ConsoleMessage, DevtoolsControlMsg, NetworkEvent, LogLevel};
use devtools_traits::{DevtoolsPageInfo, DevtoolScriptControlMsg}; use devtools_traits::{DevtoolsPageInfo, DevtoolScriptControlMsg};
use msg::constellation_msg::{PipelineId, WorkerId}; use msg::constellation_msg::{PipelineId, WorkerId};
use util::task::spawn_named; 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 console_actor_name = find_console_actor(actors.clone(), id, actor_pipelines);
let actors = actors.lock().unwrap(); let actors = actors.lock().unwrap();
let console_actor = actors.find::<ConsoleActor>(&console_actor_name); let console_actor = actors.find::<ConsoleActor>(&console_actor_name);
match console_message { let msg = ConsoleAPICall {
ConsoleMessage::LogMessage { from: console_actor.name.clone(),
message, __type__: "consoleAPICall".to_string(),
filename, message: ConsoleMsg {
lineNumber, level: match console_message.logLevel {
columnNumber, LogLevel::Debug => "debug",
} => { LogLevel::Info => "info",
let msg = ConsoleAPICall { LogLevel::Warn => "warn",
from: console_actor.name.clone(), LogLevel::Error => "error",
__type__: "consoleAPICall".to_string(), _ => "log"
message: ConsoleMsg { }.to_string(),
level: "log".to_string(), timeStamp: precise_time_ns(),
timeStamp: precise_time_ns(), arguments: vec!(console_message.message),
arguments: vec!(message), filename: console_message.filename,
filename: filename, lineNumber: console_message.lineNumber,
lineNumber: lineNumber, columnNumber: console_message.columnNumber,
columnNumber: columnNumber, },
}, };
}; for stream in console_actor.streams.borrow_mut().iter_mut() {
for stream in console_actor.streams.borrow_mut().iter_mut() { stream.write_json_packet(&msg);
stream.write_json_packet(&msg);
}
}
} }
} }

View file

@ -149,15 +149,22 @@ impl Decodable for Modification {
} }
} }
//TODO: Include options for Warn, Debug, Info, Error messages from Console
#[derive(Clone)] #[derive(Clone)]
pub enum ConsoleMessage { pub enum LogLevel {
LogMessage { Log,
message: String, Debug,
filename: String, Info,
lineNumber: u32, Warn,
columnNumber: u32, Error,
}, }
#[derive(Clone)]
pub struct ConsoleMessage {
pub message: String,
pub logLevel: LogLevel,
pub filename: String,
pub lineNumber: u32,
pub columnNumber: u32,
} }
bitflags! { bitflags! {

View file

@ -8,7 +8,7 @@ use dom::bindings::global::{GlobalRef, GlobalField};
use dom::bindings::js::{JSRef, Temporary}; use dom::bindings::js::{JSRef, Temporary};
use dom::bindings::utils::{Reflector, reflect_dom_object}; use dom::bindings::utils::{Reflector, reflect_dom_object};
use dom::window::WindowHelpers; use dom::window::WindowHelpers;
use devtools_traits::{DevtoolsControlMsg, ConsoleMessage}; use devtools_traits::{DevtoolsControlMsg, ConsoleMessage, LogLevel};
use util::str::DOMString; use util::str::DOMString;
// https://developer.mozilla.org/en-US/docs/Web/API/Console // 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>) { fn Log(self, messages: Vec<DOMString>) {
for message in messages { for message in messages {
println!("{}", message); println!("{}", message);
//TODO: Sending fake values for filename, lineNumber and columnNumber in LogMessage; adjust later propagate_console_msg(&self, prepare_message(LogLevel::Log, message));
propagate_console_msg(&self, ConsoleMessage::LogMessage {
message: message,
filename: "test".to_owned(),
lineNumber: 1,
columnNumber: 1,
});
} }
} }
fn Debug(self, messages: Vec<DOMString>) { fn Debug(self, messages: Vec<DOMString>) {
for message in messages { for message in messages {
println!("{}", message); 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>) { fn Info(self, messages: Vec<DOMString>) {
for message in messages { for message in messages {
println!("{}", message); 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>) { fn Warn(self, messages: Vec<DOMString>) {
for message in messages { for message in messages {
println!("{}", message); 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>) { fn Error(self, messages: Vec<DOMString>) {
for message in messages { for message in messages {
println!("{}", message); 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", None => "no message",
}; };
println!("Assertion failed: {}", 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) { fn propagate_console_msg(console: &JSRef<Console>, console_message: ConsoleMessage) {
let global = console.global.root(); let global = console.global.root();
match global.r() { match global.r() {