mirror of
https://github.com/servo/servo.git
synced 2025-07-22 23:03:42 +01:00
Introduce service-worker mode
This commit is contained in:
parent
6342a4b455
commit
6adc653083
6 changed files with 85 additions and 71 deletions
|
@ -7,6 +7,7 @@ use dom::bindings::codegen::Bindings::RequestBinding::RequestInit;
|
|||
use dom::bindings::codegen::Bindings::ResponseBinding::ResponseBinding::ResponseMethods;
|
||||
use dom::bindings::codegen::Bindings::ResponseBinding::ResponseType as DOMResponseType;
|
||||
use dom::bindings::error::Error;
|
||||
use dom::bindings::inheritance::Castable;
|
||||
use dom::bindings::js::Root;
|
||||
use dom::bindings::refcounted::{Trusted, TrustedPromise};
|
||||
use dom::bindings::reflector::DomObject;
|
||||
|
@ -16,13 +17,14 @@ use dom::headers::Guard;
|
|||
use dom::promise::Promise;
|
||||
use dom::request::Request;
|
||||
use dom::response::Response;
|
||||
use dom::serviceworkerglobalscope::ServiceWorkerGlobalScope;
|
||||
use ipc_channel::ipc;
|
||||
use ipc_channel::router::ROUTER;
|
||||
use js::jsapi::JSAutoCompartment;
|
||||
use net_traits::{FetchResponseListener, NetworkError};
|
||||
use net_traits::{FilteredMetadata, FetchMetadata, Metadata};
|
||||
use net_traits::CoreResourceMsg::Fetch as NetTraitsFetch;
|
||||
use net_traits::request::Request as NetTraitsRequest;
|
||||
use net_traits::request::{Request as NetTraitsRequest, ServiceWorkersMode};
|
||||
use net_traits::request::RequestInit as NetTraitsRequestInit;
|
||||
use network_listener::{NetworkListener, PreInvoke};
|
||||
use servo_url::ServoUrl;
|
||||
|
@ -83,12 +85,17 @@ pub fn Fetch(global: &GlobalScope, input: RequestInfo, init: RootedTraceableBox<
|
|||
},
|
||||
Ok(r) => r.get_request(),
|
||||
};
|
||||
let request_init = request_init_from_request(request);
|
||||
let mut request_init = request_init_from_request(request);
|
||||
|
||||
// Step 3
|
||||
response.Headers().set_guard(Guard::Immutable);
|
||||
if global.downcast::<ServiceWorkerGlobalScope>().is_some() {
|
||||
request_init.service_workers_mode = ServiceWorkersMode::Foreign;
|
||||
}
|
||||
|
||||
// Step 4
|
||||
response.Headers().set_guard(Guard::Immutable);
|
||||
|
||||
// Step 5
|
||||
let (action_sender, action_receiver) = ipc::channel().unwrap();
|
||||
let fetch_context = Arc::new(Mutex::new(FetchContext {
|
||||
fetch_promise: Some(TrustedPromise::new(promise.clone())),
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue