Auto merge of #18981 - KiChjang:fold-type-destination, r=avadacatavra

Merge request type and destination

Fixes #18278.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18981)
<!-- Reviewable:end -->
This commit is contained in:
bors-servo 2017-10-24 17:02:18 -05:00 committed by GitHub
commit dcd7d2fa32
20 changed files with 88 additions and 152 deletions

View file

@ -30,7 +30,7 @@ use js::jsapi::{JSAutoCompartment, JSContext, NullHandleValue};
use js::jsval::UndefinedValue;
use msg::constellation_msg::TopLevelBrowsingContextId;
use net_traits::{IpcSend, load_whole_resource};
use net_traits::request::{CredentialsMode, Destination, RequestInit, Type as RequestType};
use net_traits::request::{CredentialsMode, Destination, RequestInit};
use script_runtime::{CommonScriptMsg, ScriptChan, ScriptPort, new_rt_and_cx, Runtime};
use script_runtime::ScriptThreadEventCategory::WorkerEvent;
use script_traits::{TimerEvent, TimerSource, WorkerGlobalScopeInit, WorkerScriptLoadOrigin};
@ -179,7 +179,6 @@ impl DedicatedWorkerGlobalScope {
let request = RequestInit {
url: worker_url.clone(),
type_: RequestType::Script,
destination: Destination::Worker,
credentials_mode: CredentialsMode::Include,
use_url_credentials: true,

View file

@ -46,7 +46,7 @@ use net_traits::image::base::{Image, ImageMetadata};
use net_traits::image_cache::{CanRequestImages, ImageCache, ImageOrMetadataAvailable};
use net_traits::image_cache::{ImageResponder, ImageResponse, ImageState, PendingImageId};
use net_traits::image_cache::UsePlaceholder;
use net_traits::request::{RequestInit, Type as RequestType};
use net_traits::request::RequestInit;
use network_listener::{NetworkListener, PreInvoke};
use num_traits::ToPrimitive;
use script_thread::ScriptThread;
@ -275,7 +275,6 @@ impl HTMLImageElement {
let request = RequestInit {
url: img_url.clone(),
origin: document.origin().immutable().clone(),
type_: RequestType::Image,
pipeline_id: Some(document.global().pipeline_id()),
.. RequestInit::default()
};

View file

@ -37,7 +37,7 @@ use ipc_channel::router::ROUTER;
use microtask::{Microtask, MicrotaskRunnable};
use mime::{Mime, SubLevel, TopLevel};
use net_traits::{FetchResponseListener, FetchMetadata, Metadata, NetworkError};
use net_traits::request::{CredentialsMode, Destination, RequestInit, Type as RequestType};
use net_traits::request::{CredentialsMode, Destination, RequestInit};
use network_listener::{NetworkListener, PreInvoke};
use script_thread::ScriptThread;
use servo_url::ServoUrl;
@ -586,14 +586,13 @@ impl HTMLMediaElement {
// Step 4.remote.2.
// FIXME(nox): Handle CORS setting from crossorigin attribute.
let document = document_from_node(self);
let type_ = match self.media_type_id() {
HTMLMediaElementTypeId::HTMLAudioElement => RequestType::Audio,
HTMLMediaElementTypeId::HTMLVideoElement => RequestType::Video,
let destination = match self.media_type_id() {
HTMLMediaElementTypeId::HTMLAudioElement => Destination::Audio,
HTMLMediaElementTypeId::HTMLVideoElement => Destination::Video,
};
let request = RequestInit {
url,
type_,
destination: Destination::Media,
destination,
credentials_mode: CredentialsMode::Include,
use_url_credentials: true,
origin: document.origin().immutable().clone(),

View file

@ -30,7 +30,7 @@ use ipc_channel::ipc;
use ipc_channel::router::ROUTER;
use js::jsval::UndefinedValue;
use net_traits::{FetchMetadata, FetchResponseListener, Metadata, NetworkError};
use net_traits::request::{CorsSettings, CredentialsMode, Destination, RequestInit, RequestMode, Type as RequestType};
use net_traits::request::{CorsSettings, CredentialsMode, Destination, RequestInit, RequestMode};
use network_listener::{NetworkListener, PreInvoke};
use servo_atoms::Atom;
use servo_config::opts;
@ -238,7 +238,6 @@ fn fetch_a_classic_script(script: &HTMLScriptElement,
// Step 1, 2.
let request = RequestInit {
url: url.clone(),
type_: RequestType::Script,
destination: Destination::Script,
// https://html.spec.whatwg.org/multipage/#create-a-potential-cors-request
// Step 1

View file

@ -15,7 +15,6 @@ use dom::bindings::codegen::Bindings::RequestBinding::RequestInit;
use dom::bindings::codegen::Bindings::RequestBinding::RequestMethods;
use dom::bindings::codegen::Bindings::RequestBinding::RequestMode;
use dom::bindings::codegen::Bindings::RequestBinding::RequestRedirect;
use dom::bindings::codegen::Bindings::RequestBinding::RequestType;
use dom::bindings::error::{Error, Fallible};
use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object};
use dom::bindings::root::{DomRoot, MutNullableDom};
@ -36,7 +35,6 @@ use net_traits::request::RedirectMode as NetTraitsRequestRedirect;
use net_traits::request::Referrer as NetTraitsRequestReferrer;
use net_traits::request::Request as NetTraitsRequest;
use net_traits::request::RequestMode as NetTraitsRequestMode;
use net_traits::request::Type as NetTraitsRequestType;
use servo_url::ServoUrl;
use std::cell::{Cell, Ref};
use std::rc::Rc;
@ -526,11 +524,6 @@ impl RequestMethods for Request {
self.headers.or_init(|| Headers::new(&self.global()))
}
// https://fetch.spec.whatwg.org/#dom-request-type
fn Type(&self) -> RequestType {
self.request.borrow().type_.into()
}
// https://fetch.spec.whatwg.org/#dom-request-destination
fn Destination(&self) -> RequestDestination {
self.request.borrow().destination.into()
@ -703,20 +696,21 @@ impl Into<NetTraitsRequestDestination> for RequestDestination {
fn into(self) -> NetTraitsRequestDestination {
match self {
RequestDestination::_empty => NetTraitsRequestDestination::None,
RequestDestination::Audio => NetTraitsRequestDestination::Audio,
RequestDestination::Document => NetTraitsRequestDestination::Document,
RequestDestination::Embed => NetTraitsRequestDestination::Embed,
RequestDestination::Font => NetTraitsRequestDestination::Font,
RequestDestination::Image => NetTraitsRequestDestination::Image,
RequestDestination::Manifest => NetTraitsRequestDestination::Manifest,
RequestDestination::Media => NetTraitsRequestDestination::Media,
RequestDestination::Object => NetTraitsRequestDestination::Object,
RequestDestination::Report => NetTraitsRequestDestination::Report,
RequestDestination::Script => NetTraitsRequestDestination::Script,
RequestDestination::Serviceworker => NetTraitsRequestDestination::ServiceWorker,
RequestDestination::Sharedworker => NetTraitsRequestDestination::SharedWorker,
RequestDestination::Style => NetTraitsRequestDestination::Style,
RequestDestination::Track => NetTraitsRequestDestination::Track,
RequestDestination::Video => NetTraitsRequestDestination::Video,
RequestDestination::Worker => NetTraitsRequestDestination::Worker,
RequestDestination::Xslt => NetTraitsRequestDestination::XSLT,
RequestDestination::Xslt => NetTraitsRequestDestination::Xslt,
}
}
}
@ -725,50 +719,23 @@ impl Into<RequestDestination> for NetTraitsRequestDestination {
fn into(self) -> RequestDestination {
match self {
NetTraitsRequestDestination::None => RequestDestination::_empty,
NetTraitsRequestDestination::Audio => RequestDestination::Audio,
NetTraitsRequestDestination::Document => RequestDestination::Document,
NetTraitsRequestDestination::Embed => RequestDestination::Embed,
NetTraitsRequestDestination::Font => RequestDestination::Font,
NetTraitsRequestDestination::Image => RequestDestination::Image,
NetTraitsRequestDestination::Manifest => RequestDestination::Manifest,
NetTraitsRequestDestination::Media => RequestDestination::Media,
NetTraitsRequestDestination::Object => RequestDestination::Object,
NetTraitsRequestDestination::Report => RequestDestination::Report,
NetTraitsRequestDestination::Script => RequestDestination::Script,
NetTraitsRequestDestination::ServiceWorker => RequestDestination::Serviceworker,
NetTraitsRequestDestination::ServiceWorker
=> panic!("ServiceWorker request destination should not be exposed to DOM"),
NetTraitsRequestDestination::SharedWorker => RequestDestination::Sharedworker,
NetTraitsRequestDestination::Style => RequestDestination::Style,
NetTraitsRequestDestination::XSLT => RequestDestination::Xslt,
NetTraitsRequestDestination::Track => RequestDestination::Track,
NetTraitsRequestDestination::Video => RequestDestination::Video,
NetTraitsRequestDestination::Worker => RequestDestination::Worker,
}
}
}
impl Into<NetTraitsRequestType> for RequestType {
fn into(self) -> NetTraitsRequestType {
match self {
RequestType::_empty => NetTraitsRequestType::None,
RequestType::Audio => NetTraitsRequestType::Audio,
RequestType::Font => NetTraitsRequestType::Font,
RequestType::Image => NetTraitsRequestType::Image,
RequestType::Script => NetTraitsRequestType::Script,
RequestType::Style => NetTraitsRequestType::Style,
RequestType::Track => NetTraitsRequestType::Track,
RequestType::Video => NetTraitsRequestType::Video,
}
}
}
impl Into<RequestType> for NetTraitsRequestType {
fn into(self) -> RequestType {
match self {
NetTraitsRequestType::None => RequestType::_empty,
NetTraitsRequestType::Audio => RequestType::Audio,
NetTraitsRequestType::Font => RequestType::Font,
NetTraitsRequestType::Image => RequestType::Image,
NetTraitsRequestType::Script => RequestType::Script,
NetTraitsRequestType::Style => RequestType::Style,
NetTraitsRequestType::Track => RequestType::Track,
NetTraitsRequestType::Video => RequestType::Video,
NetTraitsRequestDestination::Xslt => RequestDestination::Xslt,
}
}
}

View file

@ -23,7 +23,7 @@ use ipc_channel::router::ROUTER;
use js::jsapi::{JS_SetInterruptCallback, JSAutoCompartment, JSContext};
use js::jsval::UndefinedValue;
use net_traits::{load_whole_resource, IpcSend, CustomResponseMediator};
use net_traits::request::{CredentialsMode, Destination, RequestInit, Type as RequestType};
use net_traits::request::{CredentialsMode, Destination, RequestInit};
use script_runtime::{CommonScriptMsg, ScriptChan, new_rt_and_cx, Runtime};
use script_traits::{TimerEvent, WorkerGlobalScopeInit, ScopeThings, ServiceWorkerMsg, WorkerScriptLoadOrigin};
use servo_config::prefs::PREFS;
@ -161,7 +161,6 @@ impl ServiceWorkerGlobalScope {
let request = RequestInit {
url: script_url.clone(),
type_: RequestType::Script,
destination: Destination::ServiceWorker,
credentials_mode: CredentialsMode::Include,
use_url_credentials: true,

View file

@ -13,7 +13,7 @@ interface Request {
readonly attribute ByteString method;
readonly attribute USVString url;
[SameObject] readonly attribute Headers headers;
readonly attribute RequestType type;
readonly attribute RequestDestination destination;
readonly attribute USVString referrer;
readonly attribute ReferrerPolicy referrerPolicy;
@ -22,6 +22,7 @@ interface Request {
readonly attribute RequestCache cache;
readonly attribute RequestRedirect redirect;
readonly attribute DOMString integrity;
[NewObject, Throws] Request clone();
};
@ -41,31 +42,21 @@ dictionary RequestInit {
any window; // can only be set to null
};
enum RequestType {
"",
"audio",
"font",
"image",
"script",
"style",
"track",
"video"
};
enum RequestDestination {
"",
"audio",
"document",
"embed",
"font",
"image",
"manifest",
"media",
"object",
"report",
"script",
"serviceworker",
"sharedworker",
"style",
"track",
"video",
"worker",
"xslt"
};

View file

@ -30,7 +30,7 @@ use js::jsapi::{HandleValue, JSAutoCompartment, JSContext, JSRuntime};
use js::jsval::UndefinedValue;
use js::panic::maybe_resume_unwind;
use net_traits::{IpcSend, load_whole_resource};
use net_traits::request::{CredentialsMode, Destination, RequestInit as NetRequestInit, Type as RequestType};
use net_traits::request::{CredentialsMode, Destination, RequestInit as NetRequestInit};
use script_runtime::{CommonScriptMsg, ScriptChan, ScriptPort, get_reports, Runtime};
use script_traits::{TimerEvent, TimerEventId};
use script_traits::WorkerGlobalScopeInit;
@ -199,7 +199,6 @@ impl WorkerGlobalScopeMethods for WorkerGlobalScope {
let global_scope = self.upcast::<GlobalScope>();
let request = NetRequestInit {
url: url.clone(),
type_: RequestType::Script,
destination: Destination::Script,
credentials_mode: CredentialsMode::Include,
use_url_credentials: true,

View file

@ -43,7 +43,6 @@ use net_traits::load_whole_resource;
use net_traits::request::Destination;
use net_traits::request::RequestInit;
use net_traits::request::RequestMode;
use net_traits::request::Type as RequestType;
use script_runtime::CommonScriptMsg;
use script_runtime::Runtime;
use script_runtime::ScriptThreadEventCategory;
@ -573,7 +572,6 @@ impl WorkletThread {
let resource_fetcher = self.global_init.resource_threads.sender();
let request = RequestInit {
url: script_url,
type_: RequestType::Script,
destination: Destination::Script,
mode: RequestMode::CorsMode,
credentials_mode: credentials.into(),

View file

@ -49,7 +49,6 @@ fn request_init_from_request(request: NetTraitsRequest) -> NetTraitsRequestInit
headers: request.headers.clone(),
unsafe_request: request.unsafe_request,
body: request.body.clone(),
type_: request.type_,
destination: request.destination,
synchronous: request.synchronous,
mode: request.mode,

View file

@ -13,7 +13,7 @@ use ipc_channel::ipc;
use ipc_channel::router::ROUTER;
use net_traits::{FetchResponseMsg, FetchResponseListener, FetchMetadata, NetworkError};
use net_traits::image_cache::{ImageCache, PendingImageId};
use net_traits::request::{Type as RequestType, RequestInit as FetchRequestInit};
use net_traits::request::{Destination, RequestInit as FetchRequestInit};
use network_listener::{NetworkListener, PreInvoke};
use servo_url::ServoUrl;
use std::sync::{Arc, Mutex};
@ -71,7 +71,7 @@ pub fn fetch_image_for_layout(url: ServoUrl,
let request = FetchRequestInit {
url: url,
origin: document.origin().immutable().clone(),
type_: RequestType::Image,
destination: Destination::Image,
pipeline_id: Some(document.global().pipeline_id()),
.. FetchRequestInit::default()
};

View file

@ -21,7 +21,7 @@ use hyper_serde::Serde;
use ipc_channel::ipc;
use ipc_channel::router::ROUTER;
use net_traits::{FetchResponseListener, FetchMetadata, FilteredMetadata, Metadata, NetworkError, ReferrerPolicy};
use net_traits::request::{CorsSettings, CredentialsMode, Destination, RequestInit, RequestMode, Type as RequestType};
use net_traits::request::{CorsSettings, CredentialsMode, Destination, RequestInit, RequestMode};
use network_listener::{NetworkListener, PreInvoke};
use parking_lot::RwLock;
use servo_arc::Arc;
@ -247,7 +247,6 @@ impl<'a> StylesheetLoader<'a> {
let request = RequestInit {
url: url.clone(),
type_: RequestType::Style,
destination: Destination::Style,
// https://html.spec.whatwg.org/multipage/#create-a-potential-cors-request
// Step 1