Chromium Code Reviews| Index: chrome/browser/extensions/service_worker_apitest.cc |
| diff --git a/chrome/browser/extensions/service_worker_apitest.cc b/chrome/browser/extensions/service_worker_apitest.cc |
| index 31e7091eef03081c352f0afb55e52fc7a5d57159..a14e31ac10f57782865827df5530147c23ee6afb 100644 |
| --- a/chrome/browser/extensions/service_worker_apitest.cc |
| +++ b/chrome/browser/extensions/service_worker_apitest.cc |
| @@ -569,6 +569,56 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerTest, NotificationAPI) { |
| "page.html")); |
| } |
| +IN_PROC_BROWSER_TEST_F(ServiceWorkerTest, WebAccessibleResourcesFetch) { |
| + EXPECT_TRUE(RunExtensionSubtest("service_worker/web_accessible_resources", |
| + "page.html")); |
| +} |
| + |
| +// This test loads a web page that has an iframe pointing to a |
| +// chrome-extension:// URL. The URL is listed in the extension's |
| +// web_accessible_resources. Initially the iframe is served from the extension's |
| +// resource file. After verifying that, we register a Service Worker that |
|
Devlin
2015/12/17 17:37:34
Do we actually need a real resource file here? I'
lazyboy
2015/12/17 19:27:22
No, we don't.
I'm envisioning the use case of
|
| +// controls the extension. Further requests to the same resource as before |
| +// should now be served by the Service Worker. |
| +IN_PROC_BROWSER_TEST_F(ServiceWorkerTest, WebAccessibleResourcesIframeSrc) { |
| + const Extension* extension = LoadExtensionWithFlags( |
| + test_data_dir_.AppendASCII("service_worker/web_accessible_resources"), |
|
Devlin
2015/12/17 17:37:34
it looks like maybe these should be two separate e
lazyboy
2015/12/17 19:27:22
Done.
|
| + kFlagNone); |
| + ASSERT_TRUE(extension); |
| + ASSERT_TRUE(StartEmbeddedTestServer()); |
| + GURL page_url = embedded_test_server()->GetURL( |
| + "/extensions/api_test/service_worker/web_accessible_resources/" |
| + "webpage.html"); |
| + |
| + content::WebContents* web_contents = AddTab(browser(), page_url); |
| + std::string result; |
| + // webpage.html will create an iframe pointing to a resource from |extension|. |
| + // Expect the resource to be served by the extension. |
| + ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
| + web_contents, |
| + base::StringPrintf("window.testIframe('%s')", extension->id().c_str()), |
| + &result)); |
| + ASSERT_EQ("FROM_EXTENSION_RESOURCE", result); |
| + |
| + // Now, register a Service Worker from the extension. |
| + content::WebContents* extension_page_web_contents = |
| + AddTab(browser(), extension->GetResourceURL("sw_register_page.html")); |
| + ExtensionTestMessageListener service_worker_ready_listener("SW_READY", false); |
| + service_worker_ready_listener.set_failure_message("SW_FAILED"); |
| + EXPECT_TRUE(content::ExecuteScript(extension_page_web_contents, |
| + "window.registerServiceWorker()")); |
| + ASSERT_TRUE(service_worker_ready_listener.WaitUntilSatisfied()); |
| + |
| + // webpage.html will create another iframe pointing to a resource from |
| + // |extension| as before. But this time, the resource should be be served |
| + // from the Service Worker. |
| + ASSERT_TRUE(content::ExecuteScriptAndExtractString( |
| + web_contents, |
| + base::StringPrintf("window.testIframe('%s')", extension->id().c_str()), |
| + &result)); |
| + ASSERT_EQ("FROM_SW_RESOURCE", result); |
| +} |
| + |
| IN_PROC_BROWSER_TEST_F(ServiceWorkerBackgroundSyncTest, Sync) { |
| const Extension* extension = LoadExtensionWithFlags( |
| test_data_dir_.AppendASCII("service_worker/sync"), kFlagNone); |