Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow Firefox to be able to connect to devtools again #10158

Merged
merged 3 commits into from Mar 24, 2016
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

@@ -77,6 +77,12 @@ struct EvaluateJSReply {
helperResult: Json,
}

#[derive(RustcEncodable)]
struct SetPreferencesReply {
from: String,
updated: Vec<String>,
}

pub struct ConsoleActor {
pub name: String,
pub pipeline: PipelineId,
@@ -237,6 +243,15 @@ impl Actor for ConsoleActor {
ActorMessageStatus::Processed
}

"setPreferences" => {
let msg = SetPreferencesReply {
from: self.name(),
updated: vec![],
};
stream.write_json_packet(&msg);
ActorMessageStatus::Processed
}

_ => ActorMessageStatus::Ignored
})
}
@@ -21,12 +21,14 @@ struct ActorTraits {
}

#[derive(RustcEncodable)]
struct ErrorReply {
struct ListAddonsReply {
from: String,
error: String,
message: String,
addons: Vec<AddonMsg>,
}

#[derive(RustcEncodable)]
enum AddonMsg {}

#[derive(RustcEncodable)]
struct ListTabsReply {
from: String,
@@ -57,10 +59,9 @@ impl Actor for RootActor {
stream: &mut TcpStream) -> Result<ActorMessageStatus, ()> {
Ok(match msg_type {
"listAddons" => {
let actor = ErrorReply {
let actor = ListAddonsReply {
from: "root".to_owned(),
error: "noAddons".to_owned(),
message: "This root actor has no browser addons.".to_owned(),
addons: vec![],
};
stream.write_json_packet(&actor);
ActorMessageStatus::Processed
@@ -74,6 +74,7 @@ pub struct TabActor {
pub timeline: String,
pub profiler: String,
pub performance: String,
pub thread: String,
}

impl Actor for TabActor {
@@ -98,7 +99,7 @@ impl Actor for TabActor {
let msg = TabAttachedReply {
from: self.name(),
__type__: "tabAttached".to_owned(),
threadActor: self.name(),
threadActor: self.thread.clone(),
cacheDisabled: false,
javascriptEnabled: true,
traits: TabTraits,
@@ -0,0 +1,90 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

use actor::{Actor, ActorMessageStatus, ActorRegistry};
use protocol::JsonPacketStream;
use rustc_serialize::json;
use std::net::TcpStream;

#[derive(RustcEncodable)]
struct ThreadAttachedReply {
from: String,
__type__: String,
actor: String,
poppedFrames: Vec<PoppedFrameMsg>,
why: WhyMsg,
}

#[derive(RustcEncodable)]
enum PoppedFrameMsg {}

#[derive(RustcEncodable)]
struct WhyMsg {
__type__: String,
}

#[derive(RustcEncodable)]
struct ThreadResumedReply {
from: String,
__type__: String,
}

#[derive(RustcEncodable)]
struct ReconfigureReply {
from: String
}

pub struct ThreadActor {
name: String,
}

impl ThreadActor {
pub fn new(name: String) -> ThreadActor {
ThreadActor {
name: name,
}
}
}

impl Actor for ThreadActor {
fn name(&self) -> String {
self.name.clone()
}

fn handle_message(&self,
registry: &ActorRegistry,
msg_type: &str,
_msg: &json::Object,
stream: &mut TcpStream) -> Result<ActorMessageStatus, ()> {
Ok(match msg_type {
"attach" => {
let msg = ThreadAttachedReply {
from: self.name(),
__type__: "paused".to_owned(),
actor: registry.new_name("pause"),
poppedFrames: vec![],
why: WhyMsg { __type__: "attached".to_owned() },
};
stream.write_json_packet(&msg);
ActorMessageStatus::Processed
},

"resume" => {
let msg = ThreadResumedReply {
from: self.name(),
__type__: "resumed".to_owned(),
};
stream.write_json_packet(&msg);
ActorMessageStatus::Processed
},

"reconfigure" => {
stream.write_json_packet(&ReconfigureReply { from: self.name() });
ActorMessageStatus::Processed
}

_ => ActorMessageStatus::Ignored,
})
}
}
@@ -42,6 +42,7 @@ use actors::performance::PerformanceActor;
use actors::profiler::ProfilerActor;
use actors::root::RootActor;
use actors::tab::TabActor;
use actors::thread::ThreadActor;
use actors::timeline::TimelineActor;
use actors::worker::WorkerActor;
use devtools_traits::{ChromeToDevtoolsControlMsg, ConsoleMessage, DevtoolsControlMsg};
@@ -73,6 +74,7 @@ mod actors {
pub mod profiler;
pub mod root;
pub mod tab;
pub mod thread;
pub mod timeline;
pub mod worker;
}
@@ -248,7 +250,7 @@ fn run_server(sender: Sender<DevtoolsControlMsg>,
let (pipeline, worker_id) = ids;

//TODO: move all this actor creation into a constructor method on TabActor
let (tab, console, inspector, timeline, profiler, performance) = {
let (tab, console, inspector, timeline, profiler, performance, thread) = {
let console = ConsoleActor {
name: actors.new_name("console"),
script_chan: script_sender.clone(),
@@ -271,6 +273,8 @@ fn run_server(sender: Sender<DevtoolsControlMsg>,
let profiler = ProfilerActor::new(actors.new_name("profiler"));
let performance = PerformanceActor::new(actors.new_name("performance"));

let thread = ThreadActor::new(actors.new_name("context"));

let DevtoolsPageInfo { title, url } = page_info;
let tab = TabActor {
name: actors.new_name("tab"),
@@ -281,12 +285,13 @@ fn run_server(sender: Sender<DevtoolsControlMsg>,
timeline: timeline.name(),
profiler: profiler.name(),
performance: performance.name(),
thread: thread.name(),
};

let root = actors.find_mut::<RootActor>("root");
root.tabs.push(tab.name.clone());

(tab, console, inspector, timeline, profiler, performance)
(tab, console, inspector, timeline, profiler, performance, thread)
};

if let Some(id) = worker_id {
@@ -306,6 +311,7 @@ fn run_server(sender: Sender<DevtoolsControlMsg>,
actors.register(box timeline);
actors.register(box profiler);
actors.register(box performance);
actors.register(box thread);
}

fn handle_console_message(actors: Arc<Mutex<ActorRegistry>>,
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.