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

Unified Diff: chrome/browser/extensions/service_worker_apitest.cc

Issue 1532633003: Extension SW: Add tests that serve web_accessible_resources from a SW. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add iframe test Created 5 years 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
« no previous file with comments | « no previous file | chrome/test/data/extensions/api_test/service_worker/web_accessible_resources/data_for_extension » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
« no previous file with comments | « no previous file | chrome/test/data/extensions/api_test/service_worker/web_accessible_resources/data_for_extension » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698