OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 WaitUntilObserver* observer = WaitUntilObserver::create( | 144 WaitUntilObserver* observer = WaitUntilObserver::create( |
145 workerGlobalScope(), WaitUntilObserver::Message, eventID); | 145 workerGlobalScope(), WaitUntilObserver::Message, eventID); |
146 | 146 |
147 Event* event = | 147 Event* event = |
148 ExtendableMessageEvent::create(value, origin, ports, source, observer); | 148 ExtendableMessageEvent::create(value, origin, ports, source, observer); |
149 workerGlobalScope()->dispatchExtendableEvent(event, observer); | 149 workerGlobalScope()->dispatchExtendableEvent(event, observer); |
150 } | 150 } |
151 | 151 |
152 void ServiceWorkerGlobalScopeProxy::dispatchFetchEvent( | 152 void ServiceWorkerGlobalScopeProxy::dispatchFetchEvent( |
153 int fetchEventID, | 153 int fetchEventID, |
154 const WebServiceWorkerRequest& webRequest) { | 154 const WebServiceWorkerRequest& webRequest, |
| 155 bool navigationPreloadSent) { |
155 ScriptState::Scope scope( | 156 ScriptState::Scope scope( |
156 workerGlobalScope()->scriptController()->getScriptState()); | 157 workerGlobalScope()->scriptController()->getScriptState()); |
157 WaitUntilObserver* waitUntilObserver = WaitUntilObserver::create( | 158 WaitUntilObserver* waitUntilObserver = WaitUntilObserver::create( |
158 workerGlobalScope(), WaitUntilObserver::Fetch, fetchEventID); | 159 workerGlobalScope(), WaitUntilObserver::Fetch, fetchEventID); |
159 RespondWithObserver* respondWithObserver = RespondWithObserver::create( | 160 RespondWithObserver* respondWithObserver = RespondWithObserver::create( |
160 workerGlobalScope(), fetchEventID, webRequest.url(), webRequest.mode(), | 161 workerGlobalScope(), fetchEventID, webRequest.url(), webRequest.mode(), |
161 webRequest.frameType(), webRequest.requestContext(), waitUntilObserver); | 162 webRequest.frameType(), webRequest.requestContext(), waitUntilObserver); |
162 Request* request = Request::create( | 163 Request* request = Request::create( |
163 workerGlobalScope()->scriptController()->getScriptState(), webRequest); | 164 workerGlobalScope()->scriptController()->getScriptState(), webRequest); |
164 request->getHeaders()->setGuard(Headers::ImmutableGuard); | 165 request->getHeaders()->setGuard(Headers::ImmutableGuard); |
165 FetchEventInit eventInit; | 166 FetchEventInit eventInit; |
166 eventInit.setCancelable(true); | 167 eventInit.setCancelable(true); |
167 eventInit.setRequest(request); | 168 eventInit.setRequest(request); |
168 eventInit.setClientId( | 169 eventInit.setClientId( |
169 webRequest.isMainResourceLoad() ? WebString() : webRequest.clientId()); | 170 webRequest.isMainResourceLoad() ? WebString() : webRequest.clientId()); |
170 eventInit.setIsReload(webRequest.isReload()); | 171 eventInit.setIsReload(webRequest.isReload()); |
| 172 ScriptState* scriptState = |
| 173 workerGlobalScope()->scriptController()->getScriptState(); |
171 FetchEvent* fetchEvent = FetchEvent::create( | 174 FetchEvent* fetchEvent = FetchEvent::create( |
172 workerGlobalScope()->scriptController()->getScriptState(), | 175 scriptState, EventTypeNames::fetch, eventInit, respondWithObserver, |
173 EventTypeNames::fetch, eventInit, respondWithObserver, waitUntilObserver); | 176 waitUntilObserver, navigationPreloadSent); |
| 177 if (navigationPreloadSent) { |
| 178 ServiceWorkerGlobalScopeClient::from(workerGlobalScope()) |
| 179 ->registerPreloadResponseCallback( |
| 180 fetchEventID, |
| 181 fetchEvent->createPreloadResponseCallback(scriptState)); |
| 182 } |
174 waitUntilObserver->willDispatchEvent(); | 183 waitUntilObserver->willDispatchEvent(); |
175 respondWithObserver->willDispatchEvent(); | 184 respondWithObserver->willDispatchEvent(); |
176 DispatchEventResult dispatchResult = | 185 DispatchEventResult dispatchResult = |
177 workerGlobalScope()->dispatchEvent(fetchEvent); | 186 workerGlobalScope()->dispatchEvent(fetchEvent); |
178 respondWithObserver->didDispatchEvent(dispatchResult); | 187 respondWithObserver->didDispatchEvent(dispatchResult); |
179 // false is okay because waitUntil for fetch event doesn't care about the | 188 // false is okay because waitUntil for fetch event doesn't care about the |
180 // promise rejection or an uncaught runtime script error. | 189 // promise rejection or an uncaught runtime script error. |
181 waitUntilObserver->didDispatchEvent(false /* errorOccurred */); | 190 waitUntilObserver->didDispatchEvent(false /* errorOccurred */); |
182 } | 191 } |
183 | 192 |
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
407 return *m_document; | 416 return *m_document; |
408 } | 417 } |
409 | 418 |
410 ServiceWorkerGlobalScope* ServiceWorkerGlobalScopeProxy::workerGlobalScope() | 419 ServiceWorkerGlobalScope* ServiceWorkerGlobalScopeProxy::workerGlobalScope() |
411 const { | 420 const { |
412 DCHECK(m_workerGlobalScope); | 421 DCHECK(m_workerGlobalScope); |
413 return m_workerGlobalScope; | 422 return m_workerGlobalScope; |
414 } | 423 } |
415 | 424 |
416 } // namespace blink | 425 } // namespace blink |
OLD | NEW |