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 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 RespondWithObserver* respondWithObserver = RespondWithObserver::create(worke
rGlobalScope(), responseID, webRequest.url(), webRequest.mode(), webRequest.fram
eType(), webRequest.requestContext(), waitUntilObserver); | 139 RespondWithObserver* respondWithObserver = RespondWithObserver::create(worke
rGlobalScope(), responseID, webRequest.url(), webRequest.mode(), webRequest.fram
eType(), webRequest.requestContext(), waitUntilObserver); |
140 Request* request = Request::create(workerGlobalScope()->scriptController()->
getScriptState(), webRequest); | 140 Request* request = Request::create(workerGlobalScope()->scriptController()->
getScriptState(), webRequest); |
141 request->getHeaders()->setGuard(Headers::ImmutableGuard); | 141 request->getHeaders()->setGuard(Headers::ImmutableGuard); |
142 FetchEventInit eventInit; | 142 FetchEventInit eventInit; |
143 eventInit.setCancelable(true); | 143 eventInit.setCancelable(true); |
144 eventInit.setRequest(request); | 144 eventInit.setRequest(request); |
145 eventInit.setClientId(webRequest.isMainResourceLoad() ? WebString() : webReq
uest.clientId()); | 145 eventInit.setClientId(webRequest.isMainResourceLoad() ? WebString() : webReq
uest.clientId()); |
146 eventInit.setIsReload(webRequest.isReload()); | 146 eventInit.setIsReload(webRequest.isReload()); |
147 FetchEvent* fetchEvent = FetchEvent::create(workerGlobalScope()->scriptContr
oller()->getScriptState(), EventTypeNames::fetch, eventInit, respondWithObserver
, waitUntilObserver); | 147 FetchEvent* fetchEvent = FetchEvent::create(workerGlobalScope()->scriptContr
oller()->getScriptState(), EventTypeNames::fetch, eventInit, respondWithObserver
, waitUntilObserver); |
148 waitUntilObserver->willDispatchEvent(); | 148 waitUntilObserver->willDispatchEvent(); |
| 149 respondWithObserver->willDispatchEvent(); |
149 DispatchEventResult dispatchResult = workerGlobalScope()->dispatchEvent(fetc
hEvent); | 150 DispatchEventResult dispatchResult = workerGlobalScope()->dispatchEvent(fetc
hEvent); |
150 respondWithObserver->didDispatchEvent(dispatchResult); | 151 respondWithObserver->didDispatchEvent(dispatchResult); |
151 // false is okay because waitUntil for fetch event doesn't care about the | 152 // false is okay because waitUntil for fetch event doesn't care about the |
152 // promise rejection or an uncaught runtime script error. | 153 // promise rejection or an uncaught runtime script error. |
153 waitUntilObserver->didDispatchEvent(false /* errorOccurred */); | 154 waitUntilObserver->didDispatchEvent(false /* errorOccurred */); |
154 } | 155 } |
155 | 156 |
156 void ServiceWorkerGlobalScopeProxy::dispatchForeignFetchEvent(int responseID, in
t eventFinishID, const WebServiceWorkerRequest& webRequest) | 157 void ServiceWorkerGlobalScopeProxy::dispatchForeignFetchEvent(int responseID, in
t eventFinishID, const WebServiceWorkerRequest& webRequest) |
157 { | 158 { |
158 if (!OriginTrials::foreignFetchEnabled(workerGlobalScope())) { | 159 if (!OriginTrials::foreignFetchEnabled(workerGlobalScope())) { |
159 // If origin trial tokens have expired, or are otherwise no longer valid | 160 // If origin trial tokens have expired, or are otherwise no longer valid |
160 // no events should be dispatched. | 161 // no events should be dispatched. |
161 // TODO(mek): Ideally the browser wouldn't even start the service worker | 162 // TODO(mek): Ideally the browser wouldn't even start the service worker |
162 // if its tokens have expired. | 163 // if its tokens have expired. |
163 ServiceWorkerGlobalScopeClient::from(workerGlobalScope())->respondToFetc
hEvent(responseID); | 164 ServiceWorkerGlobalScopeClient::from(workerGlobalScope())->respondToFetc
hEvent(responseID, WTF::currentTime()); |
164 ServiceWorkerGlobalScopeClient::from(workerGlobalScope())->didHandleFetc
hEvent(eventFinishID, WebServiceWorkerEventResultCompleted); | 165 ServiceWorkerGlobalScopeClient::from(workerGlobalScope())->didHandleFetc
hEvent(eventFinishID, WebServiceWorkerEventResultCompleted); |
165 return; | 166 return; |
166 } | 167 } |
167 | 168 |
168 ScriptState::Scope scope(workerGlobalScope()->scriptController()->getScriptS
tate()); | 169 ScriptState::Scope scope(workerGlobalScope()->scriptController()->getScriptS
tate()); |
169 RefPtr<SecurityOrigin> origin = SecurityOrigin::create(webRequest.referrerUr
l()); | 170 RefPtr<SecurityOrigin> origin = SecurityOrigin::create(webRequest.referrerUr
l()); |
170 WaitUntilObserver* waitUntilObserver = WaitUntilObserver::create(workerGloba
lScope(), WaitUntilObserver::Fetch, eventFinishID); | 171 WaitUntilObserver* waitUntilObserver = WaitUntilObserver::create(workerGloba
lScope(), WaitUntilObserver::Fetch, eventFinishID); |
171 ForeignFetchRespondWithObserver* respondWithObserver = ForeignFetchRespondWi
thObserver::create(workerGlobalScope(), responseID, webRequest.url(), webRequest
.mode(), webRequest.frameType(), webRequest.requestContext(), origin, waitUntilO
bserver); | 172 ForeignFetchRespondWithObserver* respondWithObserver = ForeignFetchRespondWi
thObserver::create(workerGlobalScope(), responseID, webRequest.url(), webRequest
.mode(), webRequest.frameType(), webRequest.requestContext(), origin, waitUntilO
bserver); |
172 Request* request = Request::create(workerGlobalScope()->scriptController()->
getScriptState(), webRequest); | 173 Request* request = Request::create(workerGlobalScope()->scriptController()->
getScriptState(), webRequest); |
173 request->getHeaders()->setGuard(Headers::ImmutableGuard); | 174 request->getHeaders()->setGuard(Headers::ImmutableGuard); |
174 ForeignFetchEventInit eventInit; | 175 ForeignFetchEventInit eventInit; |
175 eventInit.setCancelable(true); | 176 eventInit.setCancelable(true); |
176 eventInit.setRequest(request); | 177 eventInit.setRequest(request); |
177 eventInit.setOrigin(origin->toString()); | 178 eventInit.setOrigin(origin->toString()); |
178 ForeignFetchEvent* fetchEvent = ForeignFetchEvent::create(workerGlobalScope(
)->scriptController()->getScriptState(), EventTypeNames::foreignfetch, eventInit
, respondWithObserver, waitUntilObserver); | 179 ForeignFetchEvent* fetchEvent = ForeignFetchEvent::create(workerGlobalScope(
)->scriptController()->getScriptState(), EventTypeNames::foreignfetch, eventInit
, respondWithObserver, waitUntilObserver); |
179 waitUntilObserver->willDispatchEvent(); | 180 waitUntilObserver->willDispatchEvent(); |
| 181 respondWithObserver->willDispatchEvent(); |
180 DispatchEventResult dispatchResult = workerGlobalScope()->dispatchEvent(fetc
hEvent); | 182 DispatchEventResult dispatchResult = workerGlobalScope()->dispatchEvent(fetc
hEvent); |
181 respondWithObserver->didDispatchEvent(dispatchResult); | 183 respondWithObserver->didDispatchEvent(dispatchResult); |
182 // false is okay because waitUntil for foreign fetch event doesn't care | 184 // false is okay because waitUntil for foreign fetch event doesn't care |
183 // about the promise rejection or an uncaught runtime script error. | 185 // about the promise rejection or an uncaught runtime script error. |
184 waitUntilObserver->didDispatchEvent(false /* errorOccurred */); | 186 waitUntilObserver->didDispatchEvent(false /* errorOccurred */); |
185 } | 187 } |
186 | 188 |
187 void ServiceWorkerGlobalScopeProxy::dispatchInstallEvent(int eventID) | 189 void ServiceWorkerGlobalScopeProxy::dispatchInstallEvent(int eventID) |
188 { | 190 { |
189 WaitUntilObserver* observer = WaitUntilObserver::create(workerGlobalScope(),
WaitUntilObserver::Install, eventID); | 191 WaitUntilObserver* observer = WaitUntilObserver::create(workerGlobalScope(),
WaitUntilObserver::Install, eventID); |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
321 return *m_document; | 323 return *m_document; |
322 } | 324 } |
323 | 325 |
324 ServiceWorkerGlobalScope* ServiceWorkerGlobalScopeProxy::workerGlobalScope() con
st | 326 ServiceWorkerGlobalScope* ServiceWorkerGlobalScopeProxy::workerGlobalScope() con
st |
325 { | 327 { |
326 DCHECK(m_workerGlobalScope); | 328 DCHECK(m_workerGlobalScope); |
327 return m_workerGlobalScope; | 329 return m_workerGlobalScope; |
328 } | 330 } |
329 | 331 |
330 } // namespace blink | 332 } // namespace blink |
OLD | NEW |