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 2504b081d2f95759616ee82585ecfa9ab3449225..560e3b51d2b45b593306fbf4fcd283cd1f832b6c 100644 |
--- a/content/browser/service_worker/service_worker_browsertest.cc |
+++ b/content/browser/service_worker/service_worker_browsertest.cc |
@@ -1416,9 +1416,24 @@ class ServiceWorkerNavigationPreloadTest : public ServiceWorkerBrowserTest { |
} |
protected: |
+ static const std::string kNavigationPreloadHeaderName; |
+ static const std::string kEnableNavigationPreloadScript; |
+ static const std::string kPreloadResponseTestScript; |
+ |
+ static bool HasNavigationPreloadHeader( |
+ const net::test_server::HttpRequest& request) { |
+ return request.headers.find(kNavigationPreloadHeaderName) != |
+ request.headers.end(); |
+ } |
+ |
+ static std::string GetNavigationPreloadHeader( |
+ const net::test_server::HttpRequest& request) { |
+ DCHECK(HasNavigationPreloadHeader(request)); |
+ return request.headers.find(kNavigationPreloadHeaderName)->second; |
+ } |
+ |
void SetupForNavigationPreloadTest(const GURL& scope, |
- const GURL& worker_url, |
- bool enable_navigation_preload) { |
+ const GURL& worker_url) { |
scoped_refptr<WorkerActivatedObserver> observer = |
new WorkerActivatedObserver(wrapper()); |
observer->Init(); |
@@ -1426,10 +1441,6 @@ class ServiceWorkerNavigationPreloadTest : public ServiceWorkerBrowserTest { |
scope, worker_url, |
base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing))); |
observer->Wait(); |
- if (enable_navigation_preload) { |
- RunOnIOThread(base::Bind(&self::EnableNavigationPreloadOnIO, |
- base::Unretained(this), scope)); |
- } |
embedded_test_server()->RegisterRequestMonitor( |
base::Bind(&self::MonitorRequestHandler, base::Unretained(this))); |
@@ -1458,12 +1469,10 @@ class ServiceWorkerNavigationPreloadTest : public ServiceWorkerBrowserTest { |
} |
int GetRequestCount(const std::string& relative_url) const { |
- int count = 0; |
- for (const auto& request : request_log_) { |
- if (request == relative_url) |
- ++count; |
- } |
- return count; |
+ const auto& it = request_log_.find(relative_url); |
+ if (it == request_log_.end()) |
+ return 0; |
+ return it->second.size(); |
} |
std::string GetTextContent() { |
@@ -1476,7 +1485,8 @@ class ServiceWorkerNavigationPreloadTest : public ServiceWorkerBrowserTest { |
return text_content; |
} |
- static const char kPreloadResponseTestScript[]; |
+ std::map<std::string, std::vector<net::test_server::HttpRequest>> |
+ request_log_; |
private: |
class CustomResponse : public net::test_server::HttpResponse { |
@@ -1496,23 +1506,6 @@ class ServiceWorkerNavigationPreloadTest : public ServiceWorkerBrowserTest { |
DISALLOW_COPY_AND_ASSIGN(CustomResponse); |
}; |
- void EnableNavigationPreloadOnIO(const GURL& scope, |
- const base::Closure& continuation) { |
- wrapper()->FindReadyRegistrationForDocument( |
- scope, base::Bind(&self::DidFindRegistrationForEnableNavigationPreload, |
- base::Unretained(this), continuation)); |
- } |
- |
- void DidFindRegistrationForEnableNavigationPreload( |
- const base::Closure& continuation, |
- ServiceWorkerStatusCode status, |
- scoped_refptr<ServiceWorkerRegistration> registration) { |
- EXPECT_EQ(SERVICE_WORKER_OK, status); |
- ASSERT_TRUE(registration->active_version()); |
- registration->EnableNavigationPreload(true); |
- continuation.Run(); |
- } |
- |
std::unique_ptr<net::test_server::HttpResponse> StaticRequestHandler( |
const std::string& relative_url, |
const std::string& content, |
@@ -1558,72 +1551,81 @@ class ServiceWorkerNavigationPreloadTest : public ServiceWorkerBrowserTest { |
} |
void MonitorRequestHandler(const net::test_server::HttpRequest& request) { |
- request_log_.push_back(request.relative_url); |
+ request_log_[request.relative_url].push_back(request); |
} |
- |
- std::vector<std::string> request_log_; |
}; |
-const char ServiceWorkerNavigationPreloadTest::kPreloadResponseTestScript[] = |
- "var preload_resolve;\n" |
- "var preload_promise = new Promise(r => { preload_resolve = r; });\n" |
- "self.addEventListener('fetch', event => {\n" |
- " event.waitUntil(event.preloadResponse.then(\n" |
- " r => {\n" |
- " if (!r) {\n" |
- " preload_resolve(\n" |
- " {result: 'RESOLVED', info: 'Resolved with ' + r + '.'});\n" |
- " return;\n" |
- " }\n" |
- " var info = {};\n" |
- " info.type = r.type;\n" |
- " info.url = r.url;\n" |
- " info.status = r.status;\n" |
- " info.ok = r.ok;\n" |
- " info.statusText = r.statusText;\n" |
- " info.headers = [];\n" |
- " r.headers.forEach((v, n) => { info.headers.push([n,v]); });\n" |
- " preload_resolve({result: 'RESOLVED',\n" |
- " info: JSON.stringify(info)}); },\n" |
- " e => { preload_resolve({result: 'REJECTED',\n" |
- " info: e.toString()}); }));\n" |
- " event.respondWith(\n" |
- " new Response(\n" |
- " '<title>WAITING</title><script>\\n' +\n" |
- " 'var channel = new MessageChannel();\\n' +\n" |
- " 'channel.port1.onmessage = e => {\\n' +\n" |
- " ' var div = document.createElement(\\'div\\');\\n' +\n" |
- " ' div.appendChild(' +\n" |
- " ' document.createTextNode(e.data.info));\\n' +\n" |
- " ' document.body.appendChild(div);\\n' +\n" |
- " ' document.title = e.data.result;\\n' +\n" |
- " ' };\\n' +\n" |
- " 'navigator.serviceWorker.controller.postMessage(\\n' +\n" |
- " ' {}, [channel.port2]);\\n' +\n" |
- " '</script>'," |
- " {headers: [['content-type', 'text/html']]}));\n" |
- " });\n" |
- "self.addEventListener('message', event => {\n" |
- " event.waitUntil(\n" |
- " preload_promise.then(\n" |
- " result => event.ports[0].postMessage(result)));\n" |
- " });"; |
+const std::string |
+ ServiceWorkerNavigationPreloadTest::kNavigationPreloadHeaderName( |
+ "Service-Worker-Navigation-Preload"); |
+ |
+const std::string |
+ ServiceWorkerNavigationPreloadTest::kEnableNavigationPreloadScript( |
+ "self.addEventListener('install', event => {\n" |
+ " event.waitUntil(self.registration.navigationPreload.enable());\n" |
+ " });\n"); |
+ |
+const std::string |
+ ServiceWorkerNavigationPreloadTest::kPreloadResponseTestScript = |
+ "var preload_resolve;\n" |
+ "var preload_promise = new Promise(r => { preload_resolve = r; });\n" |
+ "self.addEventListener('fetch', event => {\n" |
+ " event.waitUntil(event.preloadResponse.then(\n" |
+ " r => {\n" |
+ " if (!r) {\n" |
+ " preload_resolve(\n" |
+ " {result: 'RESOLVED', \n" |
+ " info: 'Resolved with ' + r + '.'});\n" |
+ " return;\n" |
+ " }\n" |
+ " var info = {};\n" |
+ " info.type = r.type;\n" |
+ " info.url = r.url;\n" |
+ " info.status = r.status;\n" |
+ " info.ok = r.ok;\n" |
+ " info.statusText = r.statusText;\n" |
+ " info.headers = [];\n" |
+ " r.headers.forEach(\n" |
+ " (v, n) => { info.headers.push([n,v]); });\n" |
+ " preload_resolve({result: 'RESOLVED',\n" |
+ " info: JSON.stringify(info)}); },\n" |
+ " e => { preload_resolve({result: 'REJECTED',\n" |
+ " info: e.toString()}); }));\n" |
+ " event.respondWith(\n" |
+ " new Response(\n" |
+ " '<title>WAITING</title><script>\\n' +\n" |
+ " 'navigator.serviceWorker.onmessage = e => {\\n' +\n" |
+ " ' var div = document.createElement(\\'div\\');\\n' +\n" |
+ " ' div.appendChild(' +\n" |
+ " ' document.createTextNode(e.data.info));\\n' +\n" |
+ " ' document.body.appendChild(div);\\n' +\n" |
+ " ' document.title = e.data.result;\\n' +\n" |
+ " ' };\\n' +\n" |
+ " 'navigator.serviceWorker.controller.postMessage(\\n' +\n" |
+ " ' null);\\n' +\n" |
+ " '</script>'," |
+ " {headers: [['content-type', 'text/html']]}));\n" |
+ " });\n" |
+ "self.addEventListener('message', event => {\n" |
+ " event.waitUntil(\n" |
+ " preload_promise.then(\n" |
+ " result => event.source.postMessage(result)));\n" |
+ " });"; |
IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NetworkFallback) { |
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" |
- " // Do nothing.\n" |
- " });"; |
+ const std::string kScript = kEnableNavigationPreloadScript + |
+ "self.addEventListener('fetch', event => {\n" |
+ " // Do nothing.\n" |
+ " });"; |
const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
RegisterStaticFile(kPageUrl, kPage, "text/html"); |
RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); |
- SetupForNavigationPreloadTest(page_url, worker_url, |
- true /* enable_navigation_preload */); |
+ SetupForNavigationPreloadTest(page_url, worker_url); |
const base::string16 title = base::ASCIIToUTF16("PASS"); |
TitleWatcher title_watcher(shell()->web_contents(), title); |
@@ -1633,9 +1635,93 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NetworkFallback) { |
// The page request must be sent twice. Once for navigation preload, and once |
// for fallback since respondWith wasn't used. |
- EXPECT_EQ(2, GetRequestCount(kPageUrl)); |
- // TODO(horo): Check "Service-Worker-Navigation-Preload" header. |
- // See: https://github.com/w3c/ServiceWorker/issues/920#issuecomment-251150270 |
+ ASSERT_EQ(2, GetRequestCount(kPageUrl)); |
+ ASSERT_TRUE(HasNavigationPreloadHeader(request_log_[kPageUrl][0])); |
+ EXPECT_EQ("true", GetNavigationPreloadHeader(request_log_[kPageUrl][0])); |
+ EXPECT_FALSE(HasNavigationPreloadHeader(request_log_[kPageUrl][1])); |
+} |
+ |
+IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, SetHeaderValue) { |
+ const std::string kPageUrl = "/service_worker/navigation_preload.html"; |
+ const std::string kWorkerUrl = "/service_worker/navigation_preload.js"; |
+ const std::string kPage = "<title>FROM_SERVER</title>"; |
+ const std::string kScript = |
+ "function createResponse(title, body) {\n" |
+ " return new Response('<title>' + title + '</title>' + body,\n" |
+ " {headers: [['content-type', 'text/html']]})\n" |
+ "}\n" |
+ "self.addEventListener('fetch', event => {\n" |
+ " if (event.request.url.indexOf('?enable') != -1) {\n" |
+ " event.respondWith(\n" |
+ " self.registration.navigationPreload.enable()\n" |
+ " .then(_ => event.preloadResponse)\n" |
+ " .then(res => createResponse('ENABLED', res)));\n" |
+ " } else if (event.request.url.indexOf('?change') != -1) {\n" |
+ " event.respondWith(\n" |
+ " self.registration.navigationPreload.setHeaderValue('Hello')\n" |
+ " .then(_ => event.preloadResponse)\n" |
+ " .then(res => createResponse('CHANGED', res)));\n" |
+ " } else if (event.request.url.indexOf('?disable') != -1) {\n" |
+ " event.respondWith(\n" |
+ " self.registration.navigationPreload.disable()\n" |
+ " .then(_ => event.preloadResponse)\n" |
+ " .then(res => createResponse('DISABLED', res)));\n" |
+ " } else if (event.request.url.indexOf('?test') != -1) {\n" |
+ " event.respondWith(event.preloadResponse.then(res =>\n" |
+ " createResponse('TEST', res)));\n" |
+ " }\n" |
+ " });"; |
+ const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
+ const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
+ RegisterStaticFile(kPageUrl, kPage, "text/html"); |
+ RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); |
+ |
+ SetupForNavigationPreloadTest(page_url, worker_url); |
+ |
+ const std::string kPageUrl1 = kPageUrl + "?enable"; |
+ const base::string16 title1 = base::ASCIIToUTF16("ENABLED"); |
+ TitleWatcher title_watcher1(shell()->web_contents(), title1); |
+ title_watcher1.AlsoWaitForTitle(base::ASCIIToUTF16("FROM_SERVER")); |
+ NavigateToURL(shell(), embedded_test_server()->GetURL(kPageUrl1)); |
+ EXPECT_EQ(title1, title_watcher1.WaitAndGetTitle()); |
+ // When the navigation started, the navigation preload was not enabled yet. |
+ EXPECT_EQ("null", GetTextContent()); |
+ ASSERT_EQ(0, GetRequestCount(kPageUrl1)); |
+ |
+ const std::string kPageUrl2 = kPageUrl + "?change"; |
+ const base::string16 title2 = base::ASCIIToUTF16("CHANGED"); |
+ TitleWatcher title_watcher2(shell()->web_contents(), title2); |
+ title_watcher2.AlsoWaitForTitle(base::ASCIIToUTF16("FROM_SERVER")); |
+ NavigateToURL(shell(), embedded_test_server()->GetURL(kPageUrl2)); |
+ EXPECT_EQ(title2, title_watcher2.WaitAndGetTitle()); |
+ // When the navigation started, the navigation preload was enabled, but the |
+ // header was not changed yet. |
+ EXPECT_EQ("[object Response]", GetTextContent()); |
+ ASSERT_EQ(1, GetRequestCount(kPageUrl2)); |
+ ASSERT_TRUE(HasNavigationPreloadHeader(request_log_[kPageUrl2][0])); |
+ EXPECT_EQ("true", GetNavigationPreloadHeader(request_log_[kPageUrl2][0])); |
+ |
+ const std::string kPageUrl3 = kPageUrl + "?disable"; |
+ const base::string16 title3 = base::ASCIIToUTF16("DISABLED"); |
+ TitleWatcher title_watcher3(shell()->web_contents(), title3); |
+ title_watcher3.AlsoWaitForTitle(base::ASCIIToUTF16("FROM_SERVER")); |
+ NavigateToURL(shell(), embedded_test_server()->GetURL(kPageUrl3)); |
+ EXPECT_EQ(title3, title_watcher3.WaitAndGetTitle()); |
+ // When the navigation started, the navigation preload was not disabled yet. |
+ EXPECT_EQ("[object Response]", GetTextContent()); |
+ ASSERT_EQ(1, GetRequestCount(kPageUrl3)); |
+ ASSERT_TRUE(HasNavigationPreloadHeader(request_log_[kPageUrl3][0])); |
+ EXPECT_EQ("Hello", GetNavigationPreloadHeader(request_log_[kPageUrl3][0])); |
+ |
+ const std::string kPageUrl4 = kPageUrl + "?test"; |
+ const base::string16 title4 = base::ASCIIToUTF16("TEST"); |
+ TitleWatcher title_watcher4(shell()->web_contents(), title4); |
+ title_watcher4.AlsoWaitForTitle(base::ASCIIToUTF16("FROM_SERVER")); |
+ NavigateToURL(shell(), embedded_test_server()->GetURL(kPageUrl4)); |
+ EXPECT_EQ(title4, title_watcher4.WaitAndGetTitle()); |
+ // When the navigation started, the navigation preload must be disabled. |
+ EXPECT_EQ("null", GetTextContent()); |
+ ASSERT_EQ(0, GetRequestCount(kPageUrl4)); |
} |
IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
@@ -1643,7 +1729,8 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
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[] = |
+ const std::string kScript = |
+ kEnableNavigationPreloadScript + |
"self.addEventListener('fetch', event => {\n" |
" if (!event.preloadResponse) {\n" |
" event.respondWith(\n" |
@@ -1658,8 +1745,7 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
RegisterStaticFile(kPageUrl, kPage, "text/html"); |
RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); |
- SetupForNavigationPreloadTest(page_url, worker_url, |
- true /* enable_navigation_preload */); |
+ SetupForNavigationPreloadTest(page_url, worker_url); |
const base::string16 title = base::ASCIIToUTF16("PASS"); |
TitleWatcher title_watcher(shell()->web_contents(), title); |
@@ -1670,16 +1756,17 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
// The page request must be sent only once, since the worker responded with |
// the navigation preload response |
- EXPECT_EQ(1, GetRequestCount(kPageUrl)); |
- // TODO(horo): Check "Service-Worker-Navigation-Preload" header. |
- // See: https://github.com/w3c/ServiceWorker/issues/920#issuecomment-251150270 |
+ ASSERT_EQ(1, GetRequestCount(kPageUrl)); |
+ EXPECT_EQ("true", |
+ request_log_[kPageUrl][0].headers[kNavigationPreloadHeaderName]); |
} |
IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, GetResponseText) { |
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[] = |
+ const std::string kScript = |
+ kEnableNavigationPreloadScript + |
"self.addEventListener('fetch', event => {\n" |
" event.respondWith(\n" |
" event.preloadResponse\n" |
@@ -1694,8 +1781,7 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, GetResponseText) { |
RegisterStaticFile(kPageUrl, kPage, "text/html"); |
RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); |
- SetupForNavigationPreloadTest(page_url, worker_url, |
- true /* enable_navigation_preload */); |
+ SetupForNavigationPreloadTest(page_url, worker_url); |
const base::string16 title = base::ASCIIToUTF16("PASS"); |
TitleWatcher title_watcher(shell()->web_contents(), title); |
@@ -1716,7 +1802,8 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
// In this script, event.preloadResponse is not guarded by event.waitUntil. |
// So the preload request should be canceled, when the fetch event handler |
// has been executed. |
- const char kScript[] = |
+ const std::string kScript = |
+ kEnableNavigationPreloadScript + |
"var preload_resolve;\n" |
"var preload_promise = new Promise(r => { preload_resolve = r; });\n" |
"self.addEventListener('fetch', event => {\n" |
@@ -1728,8 +1815,7 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
" event.respondWith(\n" |
" new Response(\n" |
" '<title>WAITING</title><script>\\n' +\n" |
- " 'var channel = new MessageChannel();\\n' +\n" |
- " 'channel.port1.onmessage = e => {\\n' +\n" |
+ " 'navigator.serviceWorker.onmessage = e => {\\n' +\n" |
" ' var div = document.createElement(\\'div\\');\\n' +\n" |
" ' div.appendChild(' +\n" |
" ' document.createTextNode(e.data.info));\\n' +\n" |
@@ -1737,22 +1823,21 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
" ' document.title = e.data.result;\\n' +\n" |
" ' };\\n' +\n" |
" 'navigator.serviceWorker.controller.postMessage(\\n' +\n" |
- " ' {}, [channel.port2]);\\n' +\n" |
+ " ' null);\\n' +\n" |
" '</script>'," |
" {headers: [['content-type', 'text/html']]}));\n" |
" });\n" |
"self.addEventListener('message', event => {\n" |
" event.waitUntil(\n" |
" preload_promise.then(\n" |
- " result => event.ports[0].postMessage(result)));\n" |
+ " result => event.source.postMessage(result)));\n" |
" });"; |
const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
RegisterStaticFile(kPageUrl, kPage, "text/html"); |
RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); |
- SetupForNavigationPreloadTest(page_url, worker_url, |
- true /* enable_navigation_preload */); |
+ SetupForNavigationPreloadTest(page_url, worker_url); |
const base::string16 title = base::ASCIIToUTF16("REJECTED"); |
TitleWatcher title_watcher(shell()->web_contents(), title); |
@@ -1772,10 +1857,11 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NetworkError) { |
const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; |
const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
- RegisterStaticFile(kWorkerUrl, kPreloadResponseTestScript, "text/javascript"); |
+ RegisterStaticFile( |
+ kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, |
+ "text/javascript"); |
- SetupForNavigationPreloadTest(page_url, worker_url, |
- true /* enable_navigation_preload */); |
+ SetupForNavigationPreloadTest(page_url, worker_url); |
EXPECT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete()); |
@@ -1796,10 +1882,11 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
RegisterStaticFile(kPageUrl, kPage, "text/html"); |
- RegisterStaticFile(kWorkerUrl, kPreloadResponseTestScript, "text/javascript"); |
+ RegisterStaticFile( |
+ kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, |
+ "text/javascript"); |
- SetupForNavigationPreloadTest(page_url, worker_url, |
- true /* enable_navigation_preload */); |
+ SetupForNavigationPreloadTest(page_url, worker_url); |
const base::string16 title = base::ASCIIToUTF16("RESOLVED"); |
TitleWatcher title_watcher(shell()->web_contents(), title); |
@@ -1834,8 +1921,7 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NotEnabled) { |
RegisterStaticFile(kPageUrl, kPage, "text/html"); |
RegisterStaticFile(kWorkerUrl, kPreloadResponseTestScript, "text/javascript"); |
- SetupForNavigationPreloadTest(page_url, worker_url, |
- false /* enable_navigation_preload */); |
+ SetupForNavigationPreloadTest(page_url, worker_url); |
const base::string16 title = base::ASCIIToUTF16("RESOLVED"); |
TitleWatcher title_watcher(shell()->web_contents(), title); |
@@ -1868,10 +1954,11 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
RegisterCustomResponse(kPageUrl, kPageResponse); |
- RegisterStaticFile(kWorkerUrl, kPreloadResponseTestScript, "text/javascript"); |
+ RegisterStaticFile( |
+ kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, |
+ "text/javascript"); |
- SetupForNavigationPreloadTest(page_url, worker_url, |
- true /* enable_navigation_preload */); |
+ SetupForNavigationPreloadTest(page_url, worker_url); |
const base::string16 title = base::ASCIIToUTF16("RESOLVED"); |
TitleWatcher title_watcher(shell()->web_contents(), title); |
@@ -1916,11 +2003,12 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, RejectRedirects) { |
const GURL page_url = embedded_test_server()->GetURL(kPageUrl); |
const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); |
RegisterCustomResponse(kPageUrl, kPageResponse); |
- RegisterStaticFile(kWorkerUrl, kPreloadResponseTestScript, "text/javascript"); |
+ RegisterStaticFile( |
+ kWorkerUrl, kEnableNavigationPreloadScript + kPreloadResponseTestScript, |
+ "text/javascript"); |
RegisterStaticFile(kRedirectedPageUrl, kRedirectedPage, "text/html"); |
- SetupForNavigationPreloadTest(page_url, worker_url, |
- true /* enable_navigation_preload */); |
+ SetupForNavigationPreloadTest(page_url, worker_url); |
const base::string16 title = base::ASCIIToUTF16("REJECTED"); |
TitleWatcher title_watcher(shell()->web_contents(), title); |
@@ -1948,7 +2036,8 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
const char kPage[] = |
"<title></title>\n" |
"<script>document.title = document.location.search;</script>"; |
- const char kScript[] = |
+ const std::string kScript = |
+ kEnableNavigationPreloadScript + |
"self.addEventListener('fetch', event => {\n" |
" if (event.request.url.indexOf('navigation_preload.html') == -1)\n" |
" return; // For in scope redirection.\n" |
@@ -1967,8 +2056,7 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
RegisterKeepSearchRedirect(kInScopeRedirectPageUrl, page_url.spec()); |
SetupForNavigationPreloadTest( |
- embedded_test_server()->GetURL("/service_worker/"), worker_url, |
- true /* enable_navigation_preload */); |
+ embedded_test_server()->GetURL("/service_worker/"), worker_url); |
const GURL redirect_page_url = |
embedded_test_server()->GetURL(kRedirectPageUrl).Resolve("?1"); |
@@ -2014,10 +2102,10 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
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 std::string kScript = kEnableNavigationPreloadScript + |
+ "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); |
@@ -2025,8 +2113,7 @@ IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, |
RegisterStaticFile(kPageUrl, kPage, ""); |
RegisterStaticFile(kWorkerUrl, kScript, "text/javascript"); |
- SetupForNavigationPreloadTest(page_url, worker_url, |
- true /* enable_navigation_preload */); |
+ SetupForNavigationPreloadTest(page_url, worker_url); |
const base::string16 title = base::ASCIIToUTF16("PASS"); |
TitleWatcher title_watcher(shell()->web_contents(), title); |