Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Side by Side Diff: third_party/WebKit/Source/web/ServiceWorkerGlobalScopeProxy.cpp

Issue 2218943002: Introduce ServiceWorker.EventDispatchingDelay UMA (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: incorporated mpearson@'s comment Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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, WTF::currentTime());
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 29 matching lines...) Expand all
219 void ServiceWorkerGlobalScopeProxy::dispatchPushEvent(int eventID, const WebStri ng& data) 221 void ServiceWorkerGlobalScopeProxy::dispatchPushEvent(int eventID, const WebStri ng& data)
220 { 222 {
221 WaitUntilObserver* observer = WaitUntilObserver::create(workerGlobalScope(), WaitUntilObserver::Push, eventID); 223 WaitUntilObserver* observer = WaitUntilObserver::create(workerGlobalScope(), WaitUntilObserver::Push, eventID);
222 Event* event = PushEvent::create(EventTypeNames::push, PushMessageData::crea te(data), observer); 224 Event* event = PushEvent::create(EventTypeNames::push, PushMessageData::crea te(data), observer);
223 workerGlobalScope()->dispatchExtendableEvent(event, observer); 225 workerGlobalScope()->dispatchExtendableEvent(event, observer);
224 } 226 }
225 227
226 void ServiceWorkerGlobalScopeProxy::dispatchSyncEvent(int eventID, const WebStri ng& tag, LastChanceOption lastChance) 228 void ServiceWorkerGlobalScopeProxy::dispatchSyncEvent(int eventID, const WebStri ng& tag, LastChanceOption lastChance)
227 { 229 {
228 if (!RuntimeEnabledFeatures::backgroundSyncEnabled()) { 230 if (!RuntimeEnabledFeatures::backgroundSyncEnabled()) {
229 ServiceWorkerGlobalScopeClient::from(workerGlobalScope())->didHandleSync Event(eventID, WebServiceWorkerEventResultCompleted); 231 ServiceWorkerGlobalScopeClient::from(workerGlobalScope())->didHandleSync Event(eventID, WebServiceWorkerEventResultCompleted, WTF::currentTime());
230 return; 232 return;
231 } 233 }
232 WaitUntilObserver* observer = WaitUntilObserver::create(workerGlobalScope(), WaitUntilObserver::Sync, eventID); 234 WaitUntilObserver* observer = WaitUntilObserver::create(workerGlobalScope(), WaitUntilObserver::Sync, eventID);
233 Event* event = SyncEvent::create(EventTypeNames::sync, tag, lastChance == Is LastChance, observer); 235 Event* event = SyncEvent::create(EventTypeNames::sync, tag, lastChance == Is LastChance, observer);
234 workerGlobalScope()->dispatchExtendableEvent(event, observer); 236 workerGlobalScope()->dispatchExtendableEvent(event, observer);
235 } 237 }
236 238
237 bool ServiceWorkerGlobalScopeProxy::hasFetchEventHandler() 239 bool ServiceWorkerGlobalScopeProxy::hasFetchEventHandler()
238 { 240 {
239 DCHECK(m_workerGlobalScope); 241 DCHECK(m_workerGlobalScope);
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698