mirror of
https://github.com/servo/servo.git
synced 2025-06-13 10:54:29 +00:00
fixes #5232, more console log levels sent to devtools
This commit is contained in:
parent
54afa01dd6
commit
a00d264c8c
3 changed files with 54 additions and 40 deletions
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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! {
|
||||||
|
|
|
@ -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() {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue