| 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 132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 143 m_workerGlobalScope->getExecutionContext(), wrapUnique(handle.release())); | 143 m_workerGlobalScope->getExecutionContext(), wrapUnique(handle.release())); |
| 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 responseID, | 153 int fetchEventID, |
| 154 int eventFinishID, | |
| 155 const WebServiceWorkerRequest& webRequest) { | 154 const WebServiceWorkerRequest& webRequest) { |
| 156 ScriptState::Scope scope( | 155 ScriptState::Scope scope( |
| 157 workerGlobalScope()->scriptController()->getScriptState()); | 156 workerGlobalScope()->scriptController()->getScriptState()); |
| 158 WaitUntilObserver* waitUntilObserver = WaitUntilObserver::create( | 157 WaitUntilObserver* waitUntilObserver = WaitUntilObserver::create( |
| 159 workerGlobalScope(), WaitUntilObserver::Fetch, eventFinishID); | 158 workerGlobalScope(), WaitUntilObserver::Fetch, fetchEventID); |
| 160 RespondWithObserver* respondWithObserver = RespondWithObserver::create( | 159 RespondWithObserver* respondWithObserver = RespondWithObserver::create( |
| 161 workerGlobalScope(), responseID, webRequest.url(), webRequest.mode(), | 160 workerGlobalScope(), fetchEventID, webRequest.url(), webRequest.mode(), |
| 162 webRequest.frameType(), webRequest.requestContext(), waitUntilObserver); | 161 webRequest.frameType(), webRequest.requestContext(), waitUntilObserver); |
| 163 Request* request = Request::create( | 162 Request* request = Request::create( |
| 164 workerGlobalScope()->scriptController()->getScriptState(), webRequest); | 163 workerGlobalScope()->scriptController()->getScriptState(), webRequest); |
| 165 request->getHeaders()->setGuard(Headers::ImmutableGuard); | 164 request->getHeaders()->setGuard(Headers::ImmutableGuard); |
| 166 FetchEventInit eventInit; | 165 FetchEventInit eventInit; |
| 167 eventInit.setCancelable(true); | 166 eventInit.setCancelable(true); |
| 168 eventInit.setRequest(request); | 167 eventInit.setRequest(request); |
| 169 eventInit.setClientId( | 168 eventInit.setClientId( |
| 170 webRequest.isMainResourceLoad() ? WebString() : webRequest.clientId()); | 169 webRequest.isMainResourceLoad() ? WebString() : webRequest.clientId()); |
| 171 eventInit.setIsReload(webRequest.isReload()); | 170 eventInit.setIsReload(webRequest.isReload()); |
| 172 FetchEvent* fetchEvent = FetchEvent::create( | 171 FetchEvent* fetchEvent = FetchEvent::create( |
| 173 workerGlobalScope()->scriptController()->getScriptState(), | 172 workerGlobalScope()->scriptController()->getScriptState(), |
| 174 EventTypeNames::fetch, eventInit, respondWithObserver, waitUntilObserver); | 173 EventTypeNames::fetch, eventInit, respondWithObserver, waitUntilObserver); |
| 175 waitUntilObserver->willDispatchEvent(); | 174 waitUntilObserver->willDispatchEvent(); |
| 176 respondWithObserver->willDispatchEvent(); | 175 respondWithObserver->willDispatchEvent(); |
| 177 DispatchEventResult dispatchResult = | 176 DispatchEventResult dispatchResult = |
| 178 workerGlobalScope()->dispatchEvent(fetchEvent); | 177 workerGlobalScope()->dispatchEvent(fetchEvent); |
| 179 respondWithObserver->didDispatchEvent(dispatchResult); | 178 respondWithObserver->didDispatchEvent(dispatchResult); |
| 180 // false is okay because waitUntil for fetch event doesn't care about the | 179 // false is okay because waitUntil for fetch event doesn't care about the |
| 181 // promise rejection or an uncaught runtime script error. | 180 // promise rejection or an uncaught runtime script error. |
| 182 waitUntilObserver->didDispatchEvent(false /* errorOccurred */); | 181 waitUntilObserver->didDispatchEvent(false /* errorOccurred */); |
| 183 } | 182 } |
| 184 | 183 |
| 185 void ServiceWorkerGlobalScopeProxy::dispatchForeignFetchEvent( | 184 void ServiceWorkerGlobalScopeProxy::dispatchForeignFetchEvent( |
| 186 int responseID, | 185 int fetchEventID, |
| 187 int eventFinishID, | |
| 188 const WebServiceWorkerRequest& webRequest) { | 186 const WebServiceWorkerRequest& webRequest) { |
| 189 if (!OriginTrials::foreignFetchEnabled(workerGlobalScope())) { | 187 if (!OriginTrials::foreignFetchEnabled(workerGlobalScope())) { |
| 190 // If origin trial tokens have expired, or are otherwise no longer valid | 188 // If origin trial tokens have expired, or are otherwise no longer valid |
| 191 // no events should be dispatched. We can check it in the browser process if | 189 // no events should be dispatched. We can check it in the browser process if |
| 192 // the service worker is installed after M56. But if the service worker was | 190 // the service worker is installed after M56. But if the service worker was |
| 193 // installed in old version of Chrome (< M56) we have to check it in the | 191 // installed in old version of Chrome (< M56) we have to check it in the |
| 194 // renderer process (here). | 192 // renderer process (here). |
| 195 ServiceWorkerGlobalScopeClient::from(workerGlobalScope()) | 193 ServiceWorkerGlobalScopeClient::from(workerGlobalScope()) |
| 196 ->respondToFetchEvent(responseID, WTF::currentTime()); | 194 ->respondToFetchEvent(fetchEventID, WTF::currentTime()); |
| 197 ServiceWorkerGlobalScopeClient::from(workerGlobalScope()) | 195 ServiceWorkerGlobalScopeClient::from(workerGlobalScope()) |
| 198 ->didHandleFetchEvent(eventFinishID, | 196 ->didHandleFetchEvent(fetchEventID, |
| 199 WebServiceWorkerEventResultCompleted, | 197 WebServiceWorkerEventResultCompleted, |
| 200 WTF::currentTime()); | 198 WTF::currentTime()); |
| 201 return; | 199 return; |
| 202 } | 200 } |
| 203 | 201 |
| 204 ScriptState::Scope scope( | 202 ScriptState::Scope scope( |
| 205 workerGlobalScope()->scriptController()->getScriptState()); | 203 workerGlobalScope()->scriptController()->getScriptState()); |
| 206 RefPtr<SecurityOrigin> origin = | 204 RefPtr<SecurityOrigin> origin = |
| 207 SecurityOrigin::create(webRequest.referrerUrl()); | 205 SecurityOrigin::create(webRequest.referrerUrl()); |
| 208 WaitUntilObserver* waitUntilObserver = WaitUntilObserver::create( | 206 WaitUntilObserver* waitUntilObserver = WaitUntilObserver::create( |
| 209 workerGlobalScope(), WaitUntilObserver::Fetch, eventFinishID); | 207 workerGlobalScope(), WaitUntilObserver::Fetch, fetchEventID); |
| 210 ForeignFetchRespondWithObserver* respondWithObserver = | 208 ForeignFetchRespondWithObserver* respondWithObserver = |
| 211 ForeignFetchRespondWithObserver::create( | 209 ForeignFetchRespondWithObserver::create( |
| 212 workerGlobalScope(), responseID, webRequest.url(), webRequest.mode(), | 210 workerGlobalScope(), fetchEventID, webRequest.url(), |
| 213 webRequest.frameType(), webRequest.requestContext(), origin, | 211 webRequest.mode(), webRequest.frameType(), |
| 214 waitUntilObserver); | 212 webRequest.requestContext(), origin, waitUntilObserver); |
| 215 Request* request = Request::create( | 213 Request* request = Request::create( |
| 216 workerGlobalScope()->scriptController()->getScriptState(), webRequest); | 214 workerGlobalScope()->scriptController()->getScriptState(), webRequest); |
| 217 request->getHeaders()->setGuard(Headers::ImmutableGuard); | 215 request->getHeaders()->setGuard(Headers::ImmutableGuard); |
| 218 ForeignFetchEventInit eventInit; | 216 ForeignFetchEventInit eventInit; |
| 219 eventInit.setCancelable(true); | 217 eventInit.setCancelable(true); |
| 220 eventInit.setRequest(request); | 218 eventInit.setRequest(request); |
| 221 eventInit.setOrigin(origin->toString()); | 219 eventInit.setOrigin(origin->toString()); |
| 222 ForeignFetchEvent* fetchEvent = ForeignFetchEvent::create( | 220 ForeignFetchEvent* fetchEvent = ForeignFetchEvent::create( |
| 223 workerGlobalScope()->scriptController()->getScriptState(), | 221 workerGlobalScope()->scriptController()->getScriptState(), |
| 224 EventTypeNames::foreignfetch, eventInit, respondWithObserver, | 222 EventTypeNames::foreignfetch, eventInit, respondWithObserver, |
| (...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 return *m_document; | 406 return *m_document; |
| 409 } | 407 } |
| 410 | 408 |
| 411 ServiceWorkerGlobalScope* ServiceWorkerGlobalScopeProxy::workerGlobalScope() | 409 ServiceWorkerGlobalScope* ServiceWorkerGlobalScopeProxy::workerGlobalScope() |
| 412 const { | 410 const { |
| 413 DCHECK(m_workerGlobalScope); | 411 DCHECK(m_workerGlobalScope); |
| 414 return m_workerGlobalScope; | 412 return m_workerGlobalScope; |
| 415 } | 413 } |
| 416 | 414 |
| 417 } // namespace blink | 415 } // namespace blink |
| OLD | NEW |