diff --git a/components/devtools/Cargo.toml b/components/devtools/Cargo.toml index 683c4c49e7d..5fe447183ee 100644 --- a/components/devtools/Cargo.toml +++ b/components/devtools/Cargo.toml @@ -16,10 +16,8 @@ path = "../msg" [dependencies.util] path = "../util" -[dependencies] -url = "0.2.16" -hyper = "0.3" - [dependencies] time = "*" rustc-serialize = "0.3" +url = "*" +hyper = "*" diff --git a/components/devtools/actors/network_event.rs b/components/devtools/actors/network_event.rs index a608234ad96..28a6acc18f0 100644 --- a/components/devtools/actors/network_event.rs +++ b/components/devtools/actors/network_event.rs @@ -3,28 +3,14 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ /// Liberally derived from the [Firefox JS implementation](http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/webconsole.js). -/// Mediates interaction between the remote web console and equivalent functionality (object -/// inspection, JS evaluation, autocompletion) in Servo. +/// Handles interaction with the remote web console on network events (HTTP requests, responses) in Servo. extern crate hyper; -extern crate url; use actor::{Actor, ActorRegistry}; use protocol::JsonPacketStream; - -use devtools_traits::DevtoolScriptControlMsg; -use msg::constellation_msg::PipelineId; -use devtools_traits::{DevtoolsControlMsg, NetworkEvent}; - -use collections::BTreeMap; -use core::cell::RefCell; -use std::fmt; -use rustc_serialize::json::{self, Json, ToJson}; +use rustc_serialize::json; use std::net::TcpStream; -use std::num::Float; -use std::sync::mpsc::{channel, Sender}; -use std::borrow::IntoCow; - use url::Url; use hyper::header::Headers; use hyper::http::RawStatus; @@ -43,12 +29,10 @@ struct HttpResponse { body: Option> } -#[derive(RustcEncodable)] -struct GetRequestHeadersReply { - from: String, - headers: String, - headerSize: u8, - rawHeaders: String +pub struct NetworkEventActor { + pub name: String, + request: HttpRequest, + response: HttpResponse, } #[derive(RustcEncodable)] @@ -57,25 +41,27 @@ pub struct EventActor { pub url: String, pub method: String, pub startedDateTime: String, - pub isXHR: String, - pub private: String + pub isXHR: bool, + pub private: bool } #[derive(RustcEncodable)] pub struct ResponseStartMsg { pub httpVersion: String, pub remoteAddress: String, - pub remotePort: u8, + pub remotePort: u32, pub status: String, pub statusText: String, - pub headersSize: u8, + pub headersSize: u32, pub discardResponseBody: bool, } -pub struct NetworkEventActor { - pub name: String, - request: HttpRequest, - response: HttpResponse, +#[derive(RustcEncodable)] +struct GetRequestHeadersReply { + from: String, + headers: Vec, + headerSize: u8, + rawHeaders: String } impl Actor for NetworkEventActor { @@ -86,47 +72,35 @@ impl Actor for NetworkEventActor { fn handle_message(&self, _registry: &ActorRegistry, msg_type: &str, - msg: &json::Object, + _msg: &json::Object, stream: &mut TcpStream) -> Result { Ok(match msg_type { - "getRequestHeaders" => { - println!("getRequestHeaders"); + // TODO: Pass the correct values for headers, headerSize, rawHeaders let msg = GetRequestHeadersReply { from: self.name(), - headers: "headers".to_string(), + headers: Vec::new(), headerSize: 10, - rawHeaders: "Raw headers".to_string(), + rawHeaders: "Raw headers".to_string(), }; stream.write_json_packet(&msg); true } - "getRequestCookies" => { - println!("getRequestCookies"); - true + false } - "getRequestPostData" => { - println!("getRequestPostData"); - true + false } - "getResponseHeaders" => { - println!("getResponseHeaders"); - true + false } - "getResponseCookies" => { - println!("getResponseCookies"); - true + false } - "getResponseContent" => { - println!("getResponseContent"); - true + false } - _ => false }) } @@ -147,37 +121,37 @@ impl NetworkEventActor { status: None, body: None, } - } - } - - pub fn addEvent(&mut self, network_event: NetworkEvent) { - match network_event { - NetworkEvent::HttpRequest(url, method, headers, body) => { - self.request.url = url.serialize(); - self.request.method = method.clone(); - self.request.headers = headers.clone(); - self.request.body = body; - } - NetworkEvent::HttpResponse(headers, status, body) => { - self.response.headers = headers.clone(); - self.response.status = status.clone(); - self.response.body = body.clone(); - } } } + pub fn add_request(&mut self, url: Url, method: Method, headers: Headers, body: Option>) { + self.request.url = url.serialize(); + self.request.method = method.clone(); + self.request.headers = headers.clone(); + self.request.body = body; + } + + pub fn add_response(&mut self, headers: Option, status: Option, body: Option>) { + self.response.headers = headers.clone(); + self.response.status = status.clone(); + self.response.body = body.clone(); + } + pub fn get_event_actor(&self) -> EventActor { + // TODO: Send the correct values for startedDateTime, isXHR, private EventActor { actor: self.name(), url: self.request.url.clone(), method: format!("{}", self.request.method), startedDateTime: "2015-04-22T20:47:08.545Z".to_string(), - isXHR: "false".to_string(), - private: "false".to_string(), + isXHR: false, + private: false, } } pub fn get_response_start(&self) -> ResponseStartMsg { + // TODO: Send the correct values for all these fields. + // This is a fake message. ResponseStartMsg { httpVersion: "HTTP/1.1".to_string(), remoteAddress: "63.245.217.43".to_string(), diff --git a/components/devtools/lib.rs b/components/devtools/lib.rs index 604c14b3ba6..c0b50147699 100644 --- a/components/devtools/lib.rs +++ b/components/devtools/lib.rs @@ -25,8 +25,8 @@ extern crate rustc_serialize; extern crate msg; extern crate time; extern crate util; -extern crate url; extern crate hyper; +extern crate url; use actor::{Actor, ActorRegistry}; use actors::console::ConsoleActor; @@ -53,12 +53,6 @@ use std::net::{TcpListener, TcpStream, Shutdown}; use std::sync::{Arc, Mutex}; use time::precise_time_ns; -use url::Url; - -use hyper::header::Headers; -use hyper::http::RawStatus; -use hyper::method::Method; - mod actor; /// Corresponds to http://mxr.mozilla.org/mozilla-central/source/toolkit/devtools/server/actors/ mod actors { @@ -279,61 +273,39 @@ fn run_server(sender: Sender, return console_actor_name; } - fn find_first_console_actor(actors: Arc>) -> String { - let actors = actors.lock().unwrap(); - let root = actors.find::("root"); - let ref tab_actor_name = root.tabs[0]; - let tab_actor = actors.find::(tab_actor_name); - let console_actor_name = tab_actor.console.clone(); - return console_actor_name; - } - - fn find_network_event_actor(actors: Arc>, - actor_requests: &mut HashMap, - request_id: String) -> String { - let mut actors = actors.lock().unwrap(); - match (*actor_requests).entry(request_id) { - Occupied(name) => { - name.into_mut().clone() - } - Vacant(entry) => { - println!("not found"); - let actor_name = actors.new_name("netevent"); - let actor = NetworkEventActor::new(actor_name.clone()); - entry.insert(actor_name.clone()); - actors.register(box actor); - actor_name - } - } - } - fn handle_network_event(actors: Arc>, - mut accepted_connections: Vec, + mut connections: Vec, + actor_pipelines: &HashMap, actor_requests: &mut HashMap, + pipeline_id: PipelineId, request_id: String, network_event: NetworkEvent) { - let console_actor_name = find_first_console_actor(actors.clone()); + let console_actor_name = find_console_actor(actors.clone(), pipeline_id, actor_pipelines); let netevent_actor_name = find_network_event_actor(actors.clone(), actor_requests, request_id.clone()); let mut actors = actors.lock().unwrap(); let actor = actors.find_mut::(&netevent_actor_name); match network_event { - NetworkEvent::HttpRequest(..) => { - actor.addEvent(network_event); + NetworkEvent::HttpRequest(url, method, headers, body) => { + //Store the request information in the actor + actor.add_request(url, method, headers, body); + + //Send a networkEvent message to the client let msg = NetworkEventMsg { from: console_actor_name, __type__: "networkEvent".to_string(), eventActor: actor.get_event_actor(), }; - for stream in accepted_connections.iter_mut() { + for stream in connections.iter_mut() { stream.write_json_packet(&msg); } } + NetworkEvent::HttpResponse(headers, status, body) => { + //Store the response information in the actor + actor.add_response(headers, status, body); - NetworkEvent::HttpResponse(..) => { - println!("Network event response"); - actor.addEvent(network_event); + //Send a networkEventUpdate (responseStart) to the client let msg = NetworkEventUpdateMsg { from: netevent_actor_name, __type__: "networkEventUpdate".to_string(), @@ -341,10 +313,33 @@ fn run_server(sender: Sender, response: actor.get_response_start() }; - for stream in accepted_connections.iter_mut() { + for stream in connections.iter_mut() { stream.write_json_packet(&msg); } } + //TODO: Send the other types of update messages at appropriate times + // requestHeaders, requestCookies, responseHeaders, securityInfo, etc + } + } + + // Find the name of NetworkEventActor corresponding to request_id + // Create a new one if it does not exist, add it to the actor_requests hashmap + fn find_network_event_actor(actors: Arc>, + actor_requests: &mut HashMap, + request_id: String) -> String { + let mut actors = actors.lock().unwrap(); + match (*actor_requests).entry(request_id) { + Occupied(name) => { + //TODO: Delete from map like Firefox does? + name.into_mut().clone() + } + Vacant(entry) => { + let actor_name = actors.new_name("netevent"); + let actor = NetworkEventActor::new(actor_name.clone()); + entry.insert(actor_name.clone()); + actors.register(box actor); + actor_name + } } } @@ -372,18 +367,19 @@ fn run_server(sender: Sender, Ok(DevtoolsControlMsg::SendConsoleMessage(id, console_message)) => handle_console_message(actors.clone(), id, console_message, &actor_pipelines), - Ok(DevtoolsControlMsg::NetworkEventMessage(request_id, network_event)) => { // copy the accepted_connections vector let mut connections = Vec::::new(); for stream in accepted_connections.iter() { connections.push(stream.try_clone().unwrap()); } - handle_network_event(actors.clone(), connections, &mut actor_requests, request_id, network_event); + //TODO: Get pipeline_id from NetworkEventMessage after fixing the send in http_loader + // For now, the id of the first pipeline is passed + handle_network_event(actors.clone(), connections, &actor_pipelines, &mut actor_requests, + PipelineId(0), request_id, network_event); } } } - for connection in accepted_connections.iter_mut() { let _ = connection.shutdown(Shutdown::Both); } diff --git a/components/devtools_traits/Cargo.toml b/components/devtools_traits/Cargo.toml index 586c8ecf82f..05cc4a9f283 100644 --- a/components/devtools_traits/Cargo.toml +++ b/components/devtools_traits/Cargo.toml @@ -13,10 +13,8 @@ path = "../msg" [dependencies.util] path = "../util" -[dependencies] -url = "0.2.16" -hyper = "0.3" - [dependencies] time = "*" rustc-serialize = "0.3" +url = "*" +hyper = "*" diff --git a/components/net/Cargo.toml b/components/net/Cargo.toml index 2f39830279e..3fb0f5b0a7b 100644 --- a/components/net/Cargo.toml +++ b/components/net/Cargo.toml @@ -32,3 +32,4 @@ regex = "0.1.14" regex_macros = "0.1.8" hyper = "0.3" flate2 = "0.2.0" +uuid = "*" diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index 1f3e45d387f..bc3b72dddf0 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -68,7 +68,7 @@ fn read_block(reader: &mut R) -> Result { } } -fn load(mut load_data: LoadData, start_chan: LoadConsumer, classifier: Arc, +fn load(mut load_data: LoadData, start_chan: LoadConsumer, classifier: Arc, cookies_chan: Sender, devtools_chan: Option>) { // FIXME: At the time of writing this FIXME, servo didn't have any central // location for configuration. If you're reading this and such a @@ -143,7 +143,7 @@ reason: \"certificate verify failed\" }]))"; ) => { let mut image = resources_dir_path(); image.push("badcert.html"); - let load_data = LoadData::new(Url::from_file_path(&*image).unwrap()); + let load_data = LoadData::new(Url::from_file_path(&*image).unwrap(), None); file_loader::factory(load_data, start_chan, classifier); return; }, @@ -200,15 +200,6 @@ reason: \"certificate verify failed\" }]))"; info!("{:?}", load_data.data); } - let request_id = uuid::Uuid::new_v4().to_simple_string(); - let net_event = NetworkEvent::HttpRequest( - load_data.url.clone(), - load_data.method.clone(), - load_data.headers.clone(), - load_data.data.clone() - ); - devtools_chan.as_ref().map(|chan| chan.send(DevtoolsControlMsg::NetworkEventMessage(request_id.clone(), net_event))); - // Avoid automatically sending request body if a redirect has occurred. let writer = match load_data.data { Some(ref data) if iters == 1 => { @@ -243,6 +234,18 @@ reason: \"certificate verify failed\" }]))"; } } }; + + // Send an HttpRequest message to devtools with a unique request_id + // TODO: Do this only if load_data has some pipeline_id, and send the pipeline_id in the message + let request_id = uuid::Uuid::new_v4().to_simple_string(); + if let Some(ref chan) = devtools_chan { + let net_event = NetworkEvent::HttpRequest(load_data.url.clone(), + load_data.method.clone(), + load_data.headers.clone(), + load_data.data.clone()); + chan.send(DevtoolsControlMsg::NetworkEventMessage(request_id.clone(), net_event)).unwrap(); + } + let mut response = match writer.send() { Ok(r) => r, Err(e) => { @@ -341,9 +344,12 @@ reason: \"certificate verify failed\" }]))"; } } - println!("Http loader Response"); - let net_event_response = NetworkEvent::HttpResponse(metadata.headers.clone(), metadata.status.clone(), None); - devtools_chan.as_ref().map(|chan| chan.send(DevtoolsControlMsg::NetworkEventMessage(request_id, net_event_response))); + // Send an HttpResponse message to devtools with the corresponding request_id + // TODO: Send this message only if load_data has a pipeline_id that is not None + if let Some(ref chan) = devtools_chan { + let net_event_response = NetworkEvent::HttpResponse(metadata.headers.clone(), metadata.status.clone(), None); + chan.send(DevtoolsControlMsg::NetworkEventMessage(request_id, net_event_response)).unwrap(); + } match encoding_str { Some(encoding) => { diff --git a/components/net/image_cache_task.rs b/components/net/image_cache_task.rs index d4e7f3c98b6..b0b488386bf 100644 --- a/components/net/image_cache_task.rs +++ b/components/net/image_cache_task.rs @@ -306,7 +306,7 @@ impl ImageCache { pending_load.add_listener(image_listener); e.insert(pending_load); - let load_data = LoadData::new(url.clone()); + let load_data = LoadData::new(url.clone(), None); let listener = box ResourceListener { url: url, sender: self.progress_sender.clone(), diff --git a/components/net_traits/Cargo.toml b/components/net_traits/Cargo.toml index bd336eb2a9c..6f82ca385c6 100644 --- a/components/net_traits/Cargo.toml +++ b/components/net_traits/Cargo.toml @@ -16,6 +16,9 @@ git = "https://github.com/servo/rust-png" [dependencies.util] path = "../util" +[dependencies.msg] +path = "../msg" + [dependencies.stb_image] git = "https://github.com/servo/rust-stb-image" diff --git a/components/net_traits/lib.rs b/components/net_traits/lib.rs index ba9daea4cf4..c5f5fb884e8 100644 --- a/components/net_traits/lib.rs +++ b/components/net_traits/lib.rs @@ -16,11 +16,13 @@ extern crate png; extern crate stb_image; extern crate url; extern crate util; +extern crate msg; use hyper::header::{ContentType, Headers}; use hyper::http::RawStatus; use hyper::method::Method; use hyper::mime::{Mime, Attr}; +use msg::constellation_msg::{PipelineId}; use url::Url; use std::sync::mpsc::{channel, Receiver, Sender}; @@ -47,10 +49,11 @@ pub struct LoadData { pub preserved_headers: Headers, pub data: Option>, pub cors: Option, + pub pipeline_id: Option, } impl LoadData { - pub fn new(url: Url) -> LoadData { + pub fn new(url: Url, id: Option) -> LoadData { LoadData { url: url, method: Method::Get, @@ -58,6 +61,7 @@ impl LoadData { preserved_headers: Headers::new(), data: None, cors: None, + pipeline_id: id, } } } @@ -212,7 +216,7 @@ pub enum ProgressMsg { pub fn load_whole_resource(resource_task: &ResourceTask, url: Url) -> Result<(Metadata, Vec), String> { let (start_chan, start_port) = channel(); - resource_task.send(ControlMsg::Load(LoadData::new(url), LoadConsumer::Channel(start_chan))).unwrap(); + resource_task.send(ControlMsg::Load(LoadData::new(url, None), LoadConsumer::Channel(start_chan))).unwrap(); let response = start_port.recv().unwrap(); let mut buf = vec!(); @@ -228,7 +232,7 @@ pub fn load_whole_resource(resource_task: &ResourceTask, url: Url) /// Load a URL asynchronously and iterate over chunks of bytes from the response. pub fn load_bytes_iter(resource_task: &ResourceTask, url: Url) -> (Metadata, ProgressMsgPortIterator) { let (input_chan, input_port) = channel(); - resource_task.send(ControlMsg::Load(LoadData::new(url), LoadConsumer::Channel(input_chan))).unwrap(); + resource_task.send(ControlMsg::Load(LoadData::new(url, None), LoadConsumer::Channel(input_chan))).unwrap(); let response = input_port.recv().unwrap(); let iter = ProgressMsgPortIterator { progress_port: response.progress_port }; diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs index 4e038609fef..99d412ee8b7 100644 --- a/components/script/dom/xmlhttprequest.rs +++ b/components/script/dom/xmlhttprequest.rs @@ -515,7 +515,9 @@ impl<'a> XMLHttpRequestMethods for JSRef<'a, XMLHttpRequest> { } - let mut load_data = LoadData::new(self.request_url.borrow().clone().unwrap()); + let global = self.global.root(); + let pipeline_id = global.r().pipeline(); + let mut load_data = LoadData::new(self.request_url.borrow().clone().unwrap(), Some(pipeline_id)); load_data.data = extracted; #[inline] diff --git a/components/script/script_task.rs b/components/script/script_task.rs index 5e776d4db0f..5efbb6a1deb 100644 --- a/components/script/script_task.rs +++ b/components/script/script_task.rs @@ -1358,6 +1358,7 @@ impl ScriptTask { preserved_headers: load_data.headers, data: load_data.data, cors: None, + pipeline_id: Some(id), }, LoadConsumer::Channel(input_chan))).unwrap(); let load_response = input_port.recv().unwrap(); diff --git a/components/servo/Cargo.lock b/components/servo/Cargo.lock index 4748de71fca..12bc45b7375 100644 --- a/components/servo/Cargo.lock +++ b/components/servo/Cargo.lock @@ -183,9 +183,11 @@ name = "devtools" version = "0.0.1" dependencies = [ "devtools_traits 0.0.1", + "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "rustc-serialize 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "url 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", ] @@ -193,6 +195,7 @@ dependencies = [ name = "devtools_traits" version = "0.0.1" dependencies = [ + "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "rustc-serialize 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -756,6 +759,7 @@ name = "net" version = "0.0.1" dependencies = [ "cookie 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "devtools_traits 0.0.1", "flate2 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "geom 0.1.0 (git+https://github.com/servo/rust-geom)", "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -768,6 +772,7 @@ dependencies = [ "time 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", + "uuid 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -788,6 +793,7 @@ version = "0.0.1" dependencies = [ "geom 0.1.0 (git+https://github.com/servo/rust-geom)", "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "msg 0.0.1", "png 0.1.0 (git+https://github.com/servo/rust-png)", "stb_image 0.1.0 (git+https://github.com/servo/rust-stb-image)", "url 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/components/webdriver_server/Cargo.toml b/components/webdriver_server/Cargo.toml index 17fa3188e78..c96220c4516 100644 --- a/components/webdriver_server/Cargo.toml +++ b/components/webdriver_server/Cargo.toml @@ -22,4 +22,4 @@ git = "https://github.com/jgraham/webdriver-rust.git" [dependencies] rustc-serialize = "0.3.4" url = "0.2.16" -uuid = "0.1.11" \ No newline at end of file +uuid = "*" \ No newline at end of file diff --git a/ports/cef/Cargo.lock b/ports/cef/Cargo.lock index 2671a8cdc53..499175ca490 100644 --- a/ports/cef/Cargo.lock +++ b/ports/cef/Cargo.lock @@ -192,9 +192,11 @@ name = "devtools" version = "0.0.1" dependencies = [ "devtools_traits 0.0.1", + "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "rustc-serialize 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "url 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", ] @@ -202,6 +204,7 @@ dependencies = [ name = "devtools_traits" version = "0.0.1" dependencies = [ + "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "rustc-serialize 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -758,6 +761,7 @@ name = "net" version = "0.0.1" dependencies = [ "cookie 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "devtools_traits 0.0.1", "flate2 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "geom 0.1.0 (git+https://github.com/servo/rust-geom)", "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -770,6 +774,7 @@ dependencies = [ "time 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", + "uuid 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -778,6 +783,7 @@ version = "0.0.1" dependencies = [ "geom 0.1.0 (git+https://github.com/servo/rust-geom)", "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "msg 0.0.1", "png 0.1.0 (git+https://github.com/servo/rust-png)", "stb_image 0.1.0 (git+https://github.com/servo/rust-stb-image)", "url 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/ports/gonk/Cargo.lock b/ports/gonk/Cargo.lock index 6d8e591a0ba..8d0bc47a03e 100644 --- a/ports/gonk/Cargo.lock +++ b/ports/gonk/Cargo.lock @@ -175,9 +175,11 @@ name = "devtools" version = "0.0.1" dependencies = [ "devtools_traits 0.0.1", + "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "rustc-serialize 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", + "url 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", ] @@ -185,6 +187,7 @@ dependencies = [ name = "devtools_traits" version = "0.0.1" dependencies = [ + "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", "msg 0.0.1", "rustc-serialize 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", @@ -731,6 +734,7 @@ name = "net" version = "0.0.1" dependencies = [ "cookie 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "devtools_traits 0.0.1", "flate2 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", "geom 0.1.0 (git+https://github.com/servo/rust-geom)", "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", @@ -743,6 +747,7 @@ dependencies = [ "time 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "url 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", "util 0.0.1", + "uuid 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -751,6 +756,7 @@ version = "0.0.1" dependencies = [ "geom 0.1.0 (git+https://github.com/servo/rust-geom)", "hyper 0.3.16 (registry+https://github.com/rust-lang/crates.io-index)", + "msg 0.0.1", "png 0.1.0 (git+https://github.com/servo/rust-png)", "stb_image 0.1.0 (git+https://github.com/servo/rust-stb-image)", "url 0.2.31 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/ports/gonk/src/lib.rs b/ports/gonk/src/lib.rs index d7a85e4dde2..3174c5294ee 100644 --- a/ports/gonk/src/lib.rs +++ b/ports/gonk/src/lib.rs @@ -103,7 +103,7 @@ impl Browser { }); // Create a Servo instance. - let resource_task = new_resource_task(opts.user_agent.clone()); + let resource_task = new_resource_task(opts.user_agent.clone(), devtools_chan.clone()); let image_cache_task = new_image_cache_task(resource_task.clone()); let font_cache_task = FontCacheTask::new(resource_task.clone()); diff --git a/tests/unit/net/data_loader.rs b/tests/unit/net/data_loader.rs index 517788a0344..b641b58d06a 100644 --- a/tests/unit/net/data_loader.rs +++ b/tests/unit/net/data_loader.rs @@ -20,7 +20,7 @@ fn assert_parse(url: &'static str, use net::data_loader::load; let (start_chan, start_port) = channel(); - load(LoadData::new(Url::parse(url).unwrap()), Channel(start_chan)); + load(LoadData::new(Url::parse(url).unwrap(), None), Channel(start_chan)); let response = start_port.recv().unwrap(); assert_eq!(&response.metadata.content_type, &content_type); diff --git a/tests/unit/net/resource_task.rs b/tests/unit/net/resource_task.rs index 986c11b341e..9690ae2473d 100644 --- a/tests/unit/net/resource_task.rs +++ b/tests/unit/net/resource_task.rs @@ -14,16 +14,16 @@ use url::Url; #[test] fn test_exit() { - let resource_task = new_resource_task(None); + let resource_task = new_resource_task(None, None); resource_task.send(ControlMsg::Exit).unwrap(); } #[test] fn test_bad_scheme() { - let resource_task = new_resource_task(None); + let resource_task = new_resource_task(None, None); let (start_chan, start) = channel(); let url = Url::parse("bogus://whatever").unwrap(); - resource_task.send(ControlMsg::Load(LoadData::new(url), LoadConsumer::Channel(start_chan))).unwrap(); + resource_task.send(ControlMsg::Load(LoadData::new(url, None), LoadConsumer::Channel(start_chan))).unwrap(); let response = start.recv().unwrap(); match response.progress_port.recv().unwrap() { ProgressMsg::Done(result) => { assert!(result.is_err()) } @@ -170,10 +170,10 @@ fn test_replace_hosts() { let port = listener.local_addr().unwrap().port(); //Start the resource task and make a request to our TCP server - let resource_task = new_resource_task(None); + let resource_task = new_resource_task(None, None); let (start_chan, _) = channel(); let url = Url::parse(&format!("http://foo.bar.com:{}", port)).unwrap(); - resource_task.send(ControlMsg::Load(replace_hosts(LoadData::new(url), host_table), LoadConsumer::Channel(start_chan))).unwrap(); + resource_task.send(ControlMsg::Load(replace_hosts(LoadData::new(url, None), host_table), LoadConsumer::Channel(start_chan))).unwrap(); match listener.accept() { Ok(..) => assert!(true, "received request"),