aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom
diff options
context:
space:
mode:
authorKeith Yeung <kungfukeith11@gmail.com>2017-10-11 22:32:48 -0700
committerKeith Yeung <kungfukeith11@gmail.com>2017-10-24 20:54:19 -0700
commit99f9696a24ece562f74831dbde957af1149eb9eb (patch)
tree2b497025152d2946b539ae0088f5635443a88296 /components/script/dom
parenta65253a11aea13bb7cf26aabdcbac41c02d36f68 (diff)
downloadservo-99f9696a24ece562f74831dbde957af1149eb9eb.tar.gz
servo-99f9696a24ece562f74831dbde957af1149eb9eb.zip
Merge functionality of WebsocketConnect into Fetch
Diffstat (limited to 'components/script/dom')
-rw-r--r--components/script/dom/eventsource.rs9
-rw-r--r--components/script/dom/request.rs5
-rw-r--r--components/script/dom/websocket.rs25
-rw-r--r--components/script/dom/xmlhttprequest.rs5
4 files changed, 24 insertions, 20 deletions
diff --git a/components/script/dom/eventsource.rs b/components/script/dom/eventsource.rs
index 3be3f6035df..1150c70742c 100644
--- a/components/script/dom/eventsource.rs
+++ b/components/script/dom/eventsource.rs
@@ -23,7 +23,8 @@ use js::conversions::ToJSValConvertible;
use js::jsapi::JSAutoCompartment;
use js::jsval::UndefinedValue;
use mime::{Mime, TopLevel, SubLevel};
-use net_traits::{CoreResourceMsg, FetchMetadata, FetchResponseMsg, FetchResponseListener, NetworkError};
+use net_traits::{CoreResourceMsg, FetchChannels, FetchMetadata};
+use net_traits::{FetchResponseMsg, FetchResponseListener, NetworkError};
use net_traits::request::{CacheMode, CorsSettings, CredentialsMode};
use net_traits::request::{RequestInit, RequestMode};
use network_listener::{NetworkListener, PreInvoke};
@@ -489,7 +490,8 @@ impl EventSource {
ROUTER.add_route(action_receiver.to_opaque(), Box::new(move |message| {
listener.notify_fetch(message.to().unwrap());
}));
- global.core_resource_thread().send(CoreResourceMsg::Fetch(request, action_sender)).unwrap();
+ global.core_resource_thread().send(
+ CoreResourceMsg::Fetch(request, FetchChannels::ResponseMsg(action_sender))).unwrap();
// Step 13
Ok(ev)
}
@@ -552,6 +554,7 @@ impl EventSourceTimeoutCallback {
request.headers.set(LastEventId(String::from(event_source.last_event_id.borrow().clone())));
}
// Step 5.4
- global.core_resource_thread().send(CoreResourceMsg::Fetch(request, self.action_sender)).unwrap();
+ global.core_resource_thread().send(
+ CoreResourceMsg::Fetch(request, FetchChannels::ResponseMsg(self.action_sender))).unwrap();
}
}
diff --git a/components/script/dom/request.rs b/components/script/dom/request.rs
index 0cc0c584f49..f0b28f59b69 100644
--- a/components/script/dom/request.rs
+++ b/components/script/dom/request.rs
@@ -549,7 +549,7 @@ impl RequestMethods for Request {
// https://fetch.spec.whatwg.org/#dom-request-mode
fn Mode(&self) -> RequestMode {
- self.request.borrow().mode.into()
+ self.request.borrow().mode.clone().into()
}
// https://fetch.spec.whatwg.org/#dom-request-credentials
@@ -758,7 +758,8 @@ impl Into<RequestMode> for NetTraitsRequestMode {
NetTraitsRequestMode::SameOrigin => RequestMode::Same_origin,
NetTraitsRequestMode::NoCors => RequestMode::No_cors,
NetTraitsRequestMode::CorsMode => RequestMode::Cors,
- NetTraitsRequestMode::WebSocket => unreachable!("Websocket request mode should never be exposed to Dom"),
+ NetTraitsRequestMode::WebSocket { .. } =>
+ unreachable!("Websocket request mode should never be exposed to Dom"),
}
}
}
diff --git a/components/script/dom/websocket.rs b/components/script/dom/websocket.rs
index 47d3a6f3668..d8425d1d5b8 100644
--- a/components/script/dom/websocket.rs
+++ b/components/script/dom/websocket.rs
@@ -20,15 +20,15 @@ use dom::event::{Event, EventBubbles, EventCancelable};
use dom::eventtarget::EventTarget;
use dom::globalscope::GlobalScope;
use dom::messageevent::MessageEvent;
-use dom::urlhelper::UrlHelper;
use dom_struct::dom_struct;
use ipc_channel::ipc::{self, IpcReceiver, IpcSender};
use js::jsapi::JSAutoCompartment;
use js::jsval::UndefinedValue;
use js::typedarray::{ArrayBuffer, CreateWith};
-use net_traits::{WebSocketCommunicate, WebSocketConnectData, WebSocketDomAction, WebSocketNetworkEvent};
-use net_traits::CoreResourceMsg::WebsocketConnect;
+use net_traits::{CoreResourceMsg, FetchChannels};
+use net_traits::{WebSocketDomAction, WebSocketNetworkEvent};
use net_traits::MessageData;
+use net_traits::request::{RequestInit, RequestMode};
use script_runtime::CommonScriptMsg;
use script_runtime::ScriptThreadEventCategory::WebSocketEvent;
use servo_url::ServoUrl;
@@ -176,12 +176,6 @@ impl WebSocket {
let ws = WebSocket::new(global, url_record.clone());
let address = Trusted::new(&*ws);
- let connect_data = WebSocketConnectData {
- resource_url: url_record,
- origin: UrlHelper::Origin(&global.get_url()).0,
- protocols: protocols,
- };
-
// Create the interface for communication with the resource thread
let (dom_action_sender, resource_action_receiver):
(IpcSender<WebSocketDomAction>,
@@ -190,13 +184,18 @@ impl WebSocket {
(IpcSender<WebSocketNetworkEvent>,
IpcReceiver<WebSocketNetworkEvent>) = ipc::channel().unwrap();
- let connect = WebSocketCommunicate {
+ // Step 8.
+ let request = RequestInit {
+ url: url_record,
+ origin: global.origin().immutable().clone(),
+ mode: RequestMode::WebSocket { protocols },
+ ..RequestInit::default()
+ };
+ let channels = FetchChannels::WebSocket {
event_sender: resource_event_sender,
action_receiver: resource_action_receiver,
};
-
- // Step 8.
- let _ = global.core_resource_thread().send(WebsocketConnect(connect, connect_data));
+ let _ = global.core_resource_thread().send(CoreResourceMsg::Fetch(request, channels));
*ws.sender.borrow_mut() = Some(dom_action_sender);
diff --git a/components/script/dom/xmlhttprequest.rs b/components/script/dom/xmlhttprequest.rs
index 68a96ca38d6..7b05b080d71 100644
--- a/components/script/dom/xmlhttprequest.rs
+++ b/components/script/dom/xmlhttprequest.rs
@@ -52,7 +52,7 @@ use ipc_channel::router::ROUTER;
use js::jsapi::{Heap, JSContext, JS_ParseJSON};
use js::jsapi::JS_ClearPendingException;
use js::jsval::{JSVal, NullValue, UndefinedValue};
-use net_traits::{FetchMetadata, FilteredMetadata};
+use net_traits::{FetchChannels, FetchMetadata, FilteredMetadata};
use net_traits::{FetchResponseListener, NetworkError, ReferrerPolicy};
use net_traits::CoreResourceMsg::Fetch;
use net_traits::request::{CredentialsMode, Destination, RequestInit, RequestMode};
@@ -266,7 +266,8 @@ impl XMLHttpRequest {
ROUTER.add_route(action_receiver.to_opaque(), Box::new(move |message| {
listener.notify_fetch(message.to().unwrap());
}));
- global.core_resource_thread().send(Fetch(init, action_sender)).unwrap();
+ global.core_resource_thread().send(
+ Fetch(init, FetchChannels::ResponseMsg(action_sender))).unwrap();
}
}