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 f595226d03ce9a1902e6314445f96dc1c3f8bc89..d3c4ac8891d27c4b1a4a0096ff2c7d385eeb0797 100644 |
--- a/content/browser/service_worker/service_worker_browsertest.cc |
+++ b/content/browser/service_worker/service_worker_browsertest.cc |
@@ -1921,6 +1921,40 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, RejectRedirects) { |
GetTextContent()); |
} |
+// When the content type of the page is not correctly set, |
+// OnStartLoadingResponseBody() of mojom::URLLoaderClient is called before |
+// OnReceiveResponse(). This behavior is caused by MimeSniffingResourceHandler. |
+// This test checks that even if the MimeSniffingResourceHandler is triggerd |
+// navigation preload must be handled correctly. |
falken
2016/11/04 09:46:55
Thanks for docu. s/triggerd/triggered
horo
2016/11/04 09:58:19
Done.
|
+IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
+ RespondWithNavigationPreloadWithMimeSniffing) { |
+ const char kPageUrl[] = "/service_worker/navigation_preload.html"; |
+ const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; |
+ const char kPage[] = "<title>PASS</title>Hello world."; |
+ const char kScript[] = |
+ "self.addEventListener('fetch', event => {\n" |
+ " event.respondWith(event.preloadResponse);\n" |
+ " });"; |
+ const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
+ const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
+ |
+ // Setting an empty content type to triger MimeSniffingResourceHandler. |
falken
2016/11/04 09:46:55
s/triger/trigger
horo
2016/11/04 09:58:19
Done.
|
+ RegisterStaticFile(page_url, kPage, ""); |
+ RegisterStaticFile(worker_url, kScript, "text/javascript"); |
+ |
+ SetupForNavigationPreloadTest(page_url, worker_url, |
+ true /* enable_navigation_preload */); |
+ |
+ TitleWatcher title_watcher(shell()->web_contents(), |
+ base::ASCIIToUTF16("PASS")); |
+ NavigateToURL(shell(), page_url); |
+ EXPECT_EQ("Hello world.", GetTextContent()); |
+ |
+ // The page request must be sent only once, since the worker responded with |
+ // the navigation preload response |
+ EXPECT_EQ(1, GetRequestCount(kPageUrl)); |
+} |
+ |
// Flaky on Win/Mac: http://crbug.com/533631 |
#if defined(OS_WIN) || defined(OS_MACOSX) |
#define MAYBE_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure DISABLED_ResponseFromHTTPSServiceWorkerIsMarkedAsSecure |