Chromium Code Reviews| Index: third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.cpp |
| diff --git a/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.cpp b/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.cpp |
| index f8fccec40e5783ee2274d2e2e87b69bf5f06af1e..7604e48c9effb44ab1035b2fe50eb88dc8d8d2b2 100644 |
| --- a/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.cpp |
| +++ b/third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.cpp |
| @@ -131,9 +131,10 @@ void ServiceWorkerGlobalScopeProxy::dispatchExtendableMessageEvent(int eventID, |
| workerGlobalScope()->dispatchExtendableEvent(event, observer); |
| } |
| -void ServiceWorkerGlobalScopeProxy::dispatchFetchEvent(int eventID, const WebServiceWorkerRequest& webRequest) |
| +void ServiceWorkerGlobalScopeProxy::dispatchFetchEvent(int responseEventID, int finishEventID, const WebServiceWorkerRequest& webRequest) |
|
falken
2016/06/06 10:01:40
I feel these names could be improved. responseEven
shimazu
2016/06/09 05:44:21
Done.
|
| { |
| - RespondWithObserver* observer = RespondWithObserver::create(workerGlobalScope(), eventID, webRequest.url(), webRequest.mode(), webRequest.frameType(), webRequest.requestContext()); |
| + WaitUntilObserver* waitUntilObserver = WaitUntilObserver::create(workerGlobalScope(), WaitUntilObserver::Fetch, finishEventID); |
| + RespondWithObserver* respondWithObserver = RespondWithObserver::create(workerGlobalScope(), responseEventID, webRequest.url(), webRequest.mode(), webRequest.frameType(), webRequest.requestContext(), waitUntilObserver); |
| Request* request = Request::create(workerGlobalScope()->scriptController()->getScriptState(), webRequest); |
| request->getHeaders()->setGuard(Headers::ImmutableGuard); |
| FetchEventInit eventInit; |
| @@ -141,24 +142,29 @@ void ServiceWorkerGlobalScopeProxy::dispatchFetchEvent(int eventID, const WebSer |
| eventInit.setRequest(request); |
| eventInit.setClientId(webRequest.isMainResourceLoad() ? WebString() : webRequest.clientId()); |
| eventInit.setIsReload(webRequest.isReload()); |
| - FetchEvent* fetchEvent = FetchEvent::create(EventTypeNames::fetch, eventInit, observer); |
| + FetchEvent* fetchEvent = FetchEvent::create(EventTypeNames::fetch, eventInit, respondWithObserver, waitUntilObserver); |
| + waitUntilObserver->willDispatchEvent(); |
| DispatchEventResult dispatchResult = workerGlobalScope()->dispatchEvent(fetchEvent); |
| - observer->didDispatchEvent(dispatchResult); |
| + respondWithObserver->didDispatchEvent(dispatchResult); |
| + waitUntilObserver->didDispatchEvent(dispatchResult != DispatchEventResult::NotCanceled); |
| } |
| -void ServiceWorkerGlobalScopeProxy::dispatchForeignFetchEvent(int eventID, const WebServiceWorkerRequest& webRequest) |
| +void ServiceWorkerGlobalScopeProxy::dispatchForeignFetchEvent(int responseEventID, int finishEventID, const WebServiceWorkerRequest& webRequest) |
| { |
| RefPtr<SecurityOrigin> origin = SecurityOrigin::create(webRequest.referrerUrl()); |
| - ForeignFetchRespondWithObserver* observer = ForeignFetchRespondWithObserver::create(workerGlobalScope(), eventID, webRequest.url(), webRequest.mode(), webRequest.frameType(), webRequest.requestContext(), origin); |
| + WaitUntilObserver* waitUntilObserver = WaitUntilObserver::create(workerGlobalScope(), WaitUntilObserver::Fetch, finishEventID); |
| + ForeignFetchRespondWithObserver* respondWithObserver = ForeignFetchRespondWithObserver::create(workerGlobalScope(), responseEventID, webRequest.url(), webRequest.mode(), webRequest.frameType(), webRequest.requestContext(), origin, waitUntilObserver); |
| Request* request = Request::create(workerGlobalScope()->scriptController()->getScriptState(), webRequest); |
| request->getHeaders()->setGuard(Headers::ImmutableGuard); |
| ForeignFetchEventInit eventInit; |
| eventInit.setCancelable(true); |
| eventInit.setRequest(request); |
| eventInit.setOrigin(origin->toString()); |
| - ForeignFetchEvent* fetchEvent = ForeignFetchEvent::create(EventTypeNames::foreignfetch, eventInit, observer); |
| + ForeignFetchEvent* fetchEvent = ForeignFetchEvent::create(EventTypeNames::foreignfetch, eventInit, respondWithObserver, waitUntilObserver); |
| + waitUntilObserver->willDispatchEvent(); |
| DispatchEventResult dispatchResult = workerGlobalScope()->dispatchEvent(fetchEvent); |
| - observer->didDispatchEvent(dispatchResult); |
| + respondWithObserver->didDispatchEvent(dispatchResult); |
| + waitUntilObserver->didDispatchEvent(dispatchResult != DispatchEventResult::NotCanceled); |
| } |
| void ServiceWorkerGlobalScopeProxy::dispatchInstallEvent(int eventID) |