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

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

Issue 2002883002: ServiceWorker: Store the existence of fetch event handler (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 4 years, 7 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_browsertest.cc
diff --git a/content/browser/service_worker/service_worker_browsertest.cc b/content/browser/service_worker/service_worker_browsertest.cc
index 5e917c3a683c1592666cc35af15670433c42489c..60c6b2bad01ea5e7e20668f906df300a31826a29 100644
--- a/content/browser/service_worker/service_worker_browsertest.cc
+++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -651,8 +651,27 @@ class ServiceWorkerVersionBrowserTest : public ServiceWorkerBrowserTest {
int request_id =
version_->StartRequest(ServiceWorkerMetrics::EventType::INSTALL,
CreateReceiver(BrowserThread::UI, done, result));
- version_->DispatchSimpleEvent<ServiceWorkerHostMsg_InstallEventFinished>(
- request_id, ServiceWorkerMsg_InstallEvent(request_id));
+ version_->DispatchEvent<ServiceWorkerHostMsg_InstallEventFinished>(
+ request_id, ServiceWorkerMsg_InstallEvent(request_id),
+ base::Bind(&self::ReceiveInstallEventOnIOThread, this, done, result));
+ }
+
+ void ReceiveInstallEventOnIOThread(const base::Closure& done,
+ ServiceWorkerStatusCode* out_result,
+ int request_id,
+ blink::WebServiceWorkerEventResult result,
+ bool has_fetch_handler) {
+ version_->FinishRequest(
+ request_id, result == blink::WebServiceWorkerEventResultCompleted);
+ version_->set_has_fetch_handler(has_fetch_handler);
+
+ ServiceWorkerStatusCode status = SERVICE_WORKER_OK;
+ if (result == blink::WebServiceWorkerEventResultRejected)
+ status = SERVICE_WORKER_ERROR_EVENT_WAITUNTIL_REJECTED;
+
+ *out_result = status;
+ if (!done.is_null())
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, done);
}
void StoreOnIOThread(const base::Closure& done,
@@ -866,6 +885,18 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
SERVICE_WORKER_OK);
}
+IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
+ InstallWithFetchHandler) {
+ InstallTestHelper("/service_worker/fetch_event.js", SERVICE_WORKER_OK);
+ EXPECT_TRUE(version_->has_fetch_handler());
+}
+
+IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,
+ InstallWithoutFetchHandler) {
+ InstallTestHelper("/service_worker/worker.js", SERVICE_WORKER_OK);
+ EXPECT_FALSE(version_->has_fetch_handler());
+}
+
// Check that ServiceWorker script requests set a "Service-Worker: script"
// header.
IN_PROC_BROWSER_TEST_F(ServiceWorkerVersionBrowserTest,

Powered by Google App Engine
This is Rietveld 408576698