diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2019-12-08 12:12:40 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-12-08 12:12:40 -0500 |
commit | 136366bf641f08590ba60cbe2fa98ecc3181a98e (patch) | |
tree | 9e726e31e8a1448cce839a93aa25d54573b6a3fe /components/devtools/lib.rs | |
parent | f2b363b3f006c90d77c7cc04f72ef00e676fa23a (diff) | |
parent | b3b886e837792bc130d3514bef4d8619aed4c41d (diff) | |
download | servo-136366bf641f08590ba60cbe2fa98ecc3181a98e.tar.gz servo-136366bf641f08590ba60cbe2fa98ecc3181a98e.zip |
Auto merge of #25161 - paulrouget:cachedMsgs, r=jdm
devtools: save and send cached messages
@jdm the only real difference between your original patch and this PR is the removal of the `GetCachedMessages` messages that are not necessary anymore now that we directly send the message to the devtools.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #13161 (GitHub issue number if applicable)
Diffstat (limited to 'components/devtools/lib.rs')
-rw-r--r-- | components/devtools/lib.rs | 57 |
1 files changed, 32 insertions, 25 deletions
diff --git a/components/devtools/lib.rs b/components/devtools/lib.rs index f0a4e9facc8..63e4c7aea15 100644 --- a/components/devtools/lib.rs +++ b/components/devtools/lib.rs @@ -36,7 +36,7 @@ use crate::protocol::JsonPacketStream; use crossbeam_channel::{unbounded, Receiver, Sender}; use devtools_traits::{ChromeToDevtoolsControlMsg, ConsoleMessage, DevtoolsControlMsg}; use devtools_traits::{DevtoolScriptControlMsg, DevtoolsPageInfo, LogLevel, NetworkEvent}; -use devtools_traits::{ScriptToDevtoolsControlMsg, WorkerId}; +use devtools_traits::{PageError, ScriptToDevtoolsControlMsg, WorkerId}; use ipc_channel::ipc::IpcSender; use msg::constellation_msg::PipelineId; use std::borrow::ToOwned; @@ -46,7 +46,6 @@ use std::collections::HashMap; use std::net::{Shutdown, TcpListener, TcpStream}; use std::sync::{Arc, Mutex}; use std::thread; -use time::precise_time_ns; mod actor; /// Corresponds to http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/ @@ -89,6 +88,14 @@ struct ConsoleMsg { } #[derive(Serialize)] +struct PageErrorMsg { + from: String, + #[serde(rename = "type")] + type_: String, + pageError: PageError, +} + +#[derive(Serialize)] struct NetworkEventMsg { from: String, #[serde(rename = "type")] @@ -141,7 +148,7 @@ fn run_server( receiver: Receiver<DevtoolsControlMsg>, port: u16, ) { - let listener = TcpListener::bind(&("127.0.0.1", port)).unwrap(); + let listener = TcpListener::bind(&("0.0.0.0", port)).unwrap(); let mut registry = ActorRegistry::new(); @@ -241,6 +248,7 @@ fn run_server( script_chan: script_sender.clone(), pipeline: pipeline, streams: RefCell::new(Vec::new()), + cached_events: RefCell::new(Vec::new()), }; let emulation = EmulationActor::new(actors.new_name("emulation")); @@ -317,6 +325,22 @@ fn run_server( actors.register(Box::new(thread)); } + fn handle_page_error( + actors: Arc<Mutex<ActorRegistry>>, + id: PipelineId, + page_error: PageError, + actor_pipelines: &HashMap<PipelineId, String>, + ) { + let console_actor_name = + match find_console_actor(actors.clone(), id, None, &HashMap::new(), actor_pipelines) { + Some(name) => name, + None => return, + }; + let actors = actors.lock().unwrap(); + let console_actor = actors.find::<ConsoleActor>(&console_actor_name); + console_actor.handle_page_error(page_error); + } + fn handle_console_message( actors: Arc<Mutex<ActorRegistry>>, id: PipelineId, @@ -337,28 +361,7 @@ fn run_server( }; let actors = actors.lock().unwrap(); let console_actor = actors.find::<ConsoleActor>(&console_actor_name); - let msg = ConsoleAPICall { - from: console_actor.name.clone(), - type_: "consoleAPICall".to_owned(), - message: ConsoleMsg { - level: match console_message.logLevel { - LogLevel::Debug => "debug", - LogLevel::Info => "info", - LogLevel::Warn => "warn", - LogLevel::Error => "error", - _ => "log", - } - .to_owned(), - timeStamp: precise_time_ns(), - arguments: vec![console_message.message], - filename: console_message.filename, - lineNumber: console_message.lineNumber, - columnNumber: console_message.columnNumber, - }, - }; - for stream in &mut *console_actor.streams.borrow_mut() { - stream.write_json_packet(&msg); - } + console_actor.handle_console_api(console_message); } fn find_console_actor( @@ -586,6 +589,10 @@ fn run_server( &actor_pipelines, &actor_workers, ), + DevtoolsControlMsg::FromScript(ScriptToDevtoolsControlMsg::ReportPageError( + id, + page_error, + )) => handle_page_error(actors.clone(), id, page_error, &actor_pipelines), DevtoolsControlMsg::FromScript(ScriptToDevtoolsControlMsg::ReportCSSError( id, css_error, |