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 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,31 +251,28 @@ 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(),
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!(message),
filename: filename,
lineNumber: lineNumber,
columnNumber: columnNumber,
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);
}
}
}
}
fn find_console_actor(actors: Arc<Mutex<ActorRegistry>>,
id: PipelineId,

View file

@ -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! {

View file

@ -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() {