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

Unified Diff: content/browser/service_worker/service_worker_context_wrapper.cc

Issue 2924213002: Draft: Dispatching extension events to stopped extension SW.
Patch Set: rebase @tott Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/service_worker/service_worker_context_wrapper.cc
diff --git a/content/browser/service_worker/service_worker_context_wrapper.cc b/content/browser/service_worker/service_worker_context_wrapper.cc
index fbb00d4fc0fd42a3bd650f6ce2cb7cc28cbcfdd0..c20afa034a7a5239ecf631f746b27e9d01c74c0a 100644
--- a/content/browser/service_worker/service_worker_context_wrapper.cc
+++ b/content/browser/service_worker/service_worker_context_wrapper.cc
@@ -82,6 +82,41 @@ void SkipWaitingWorkerOnIO(
registration->ActivateWaitingVersionWhenReady();
}
+void ServiceWorkerStarted(
+ scoped_refptr<ServiceWorkerRegistration> service_worker_registration,
+ base::OnceCallback<void(int, int)> info_callback) {
+ int thread_id = service_worker_registration->active_version()
+ ->embedded_worker()
+ ->thread_id();
+ int process_id = service_worker_registration->active_version()
+ ->embedded_worker()
+ ->process_id();
+ std::move(info_callback).Run(process_id, thread_id);
+}
+
+void ErrorCallback(base::OnceCallback<void()> error_callback,
+ ServiceWorkerStatusCode code) {
+ std::move(error_callback).Run();
+}
+
+void DispatchWorkerInfo(
+ base::OnceCallback<void(int, int)> info_callback,
+ base::OnceCallback<void()> failure_callback,
+ ServiceWorkerStatusCode service_worker_status,
+ scoped_refptr<ServiceWorkerRegistration> service_worker_registration) {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ if (service_worker_status == SERVICE_WORKER_OK) {
+ DCHECK(service_worker_registration->active_version());
+ service_worker_registration->active_version()->RunAfterStartWorker(
+ ServiceWorkerMetrics::EventType::EXTERNAL_REQUEST,
+ base::Bind(&ServiceWorkerStarted, service_worker_registration,
+ base::Passed(&info_callback)),
+ base::Bind(&ErrorCallback, base::Passed(&failure_callback)));
+ } else {
+ std::move(failure_callback).Run();
+ }
+}
+
} // namespace
void ServiceWorkerContext::AddExcludedHeadersForFetchEvent(
@@ -841,6 +876,16 @@ bool ServiceWorkerContextWrapper::FinishedExternalRequest(
return version->FinishExternalRequest(request_uuid);
}
+void ServiceWorkerContextWrapper::GetWorkerInfoAfterStartWorker(
+ const GURL& origin,
+ base::OnceCallback<void(int, int)> info_callback,
+ base::OnceCallback<void()> failure_callback) {
+ DCHECK_CURRENTLY_ON(BrowserThread::IO);
+ FindReadyRegistrationForPattern(
+ origin, base::Bind(&DispatchWorkerInfo, base::Passed(&info_callback),
+ base::Passed(&failure_callback)));
+}
+
void ServiceWorkerContextWrapper::DidDeleteAndStartOver(
ServiceWorkerStatusCode status) {
DCHECK_CURRENTLY_ON(BrowserThread::IO);
« no previous file with comments | « content/browser/service_worker/service_worker_context_wrapper.h ('k') | content/public/browser/service_worker_context.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698