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

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

Issue 2473263003: Set "Service-Worker-Navigation-Preload" header (Closed)
Patch Set: Created 4 years, 1 month 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 | content/browser/service_worker/service_worker_fetch_dispatcher.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 59aa3d4d20b087b604675c4a277116ecc8973b1f..c2cf171dfa512c777178abd657c869c29bd610fa 100644
--- a/content/browser/service_worker/service_worker_browsertest.cc
+++ b/content/browser/service_worker/service_worker_browsertest.cc
@@ -1428,8 +1428,7 @@ class ServiceWorkerNavigationPreloadTest : public ServiceWorkerBrowserTest {
protected:
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();
@@ -1437,10 +1436,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)));
@@ -1469,12 +1464,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() {
@@ -1487,7 +1480,12 @@ class ServiceWorkerNavigationPreloadTest : public ServiceWorkerBrowserTest {
return text_content;
}
- static const char kPreloadResponseTestScript[];
+ static const std::string kNavigationPreloadHeaderName;
+ static const std::string kEnableNavigationPreloadScript;
+ static const std::string kPreloadResponseTestScript;
+
+ std::map<std::string, std::vector<net::test_server::HttpRequest>>
+ request_log_;
private:
class CustomResponse : public net::test_server::HttpResponse {
@@ -1507,23 +1505,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,
@@ -1569,72 +1550,82 @@ 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"
+ " 'var channel = new MessageChannel();\\n' +\n"
falken 2016/11/07 06:09:39 Sorry, I remember now we don't need to use Message
horo 2016/11/08 08:19:48 Done.
+ " '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"
+ " });";
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);
@@ -1644,9 +1635,100 @@ 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));
+ EXPECT_NE(std::string::npos, request_log_[kPageUrl][0].all_headers.find(
+ kNavigationPreloadHeaderName));
+ EXPECT_EQ("true",
+ request_log_[kPageUrl][0].headers[kNavigationPreloadHeaderName]);
+ EXPECT_EQ(std::string::npos, request_log_[kPageUrl][1].all_headers.find(
+ kNavigationPreloadHeaderName));
+}
+
+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(tite, body) {\n"
+ " return new Response('<title>' + tite + '</title>' + body,\n"
falken 2016/11/07 06:09:38 title
horo 2016/11/08 08:19:49 Done.
+ " {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 nagitation started, the navigation preload was not enabled yet.
falken 2016/11/07 06:09:38 s/nagigation/navigation (throughout file)
horo 2016/11/08 08:19:49 Done.
+ 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 nagitation started, the navigation preload was enabled, but the
+ // header was not changed yet.
+ EXPECT_EQ("[object Response]", GetTextContent());
+ ASSERT_EQ(1, GetRequestCount(kPageUrl2));
+ EXPECT_NE(std::string::npos, request_log_[kPageUrl2][0].all_headers.find(
+ kNavigationPreloadHeaderName));
+ EXPECT_EQ("true",
+ request_log_[kPageUrl2][0].headers[kNavigationPreloadHeaderName]);
+
+ 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 nagitation started, the navigation preload was not disabled yet.
+ EXPECT_EQ("[object Response]", GetTextContent());
+ ASSERT_EQ(1, GetRequestCount(kPageUrl3));
+ EXPECT_NE(std::string::npos, request_log_[kPageUrl3][0].all_headers.find(
+ kNavigationPreloadHeaderName));
+ EXPECT_EQ("Hello",
+ request_log_[kPageUrl3][0].headers[kNavigationPreloadHeaderName]);
falken 2016/11/07 06:09:38 could these helpers make it easier to read? HasNa
horo 2016/11/08 08:19:48 Done.
+
+ 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 nagitation started, the navigation preload must be disabled.
+ EXPECT_EQ("null", GetTextContent());
+ ASSERT_EQ(0, GetRequestCount(kPageUrl4));
}
IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest,
@@ -1654,7 +1736,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"
@@ -1669,8 +1752,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);
@@ -1681,16 +1763,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"
@@ -1705,8 +1788,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);
@@ -1727,7 +1809,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"
@@ -1762,8 +1845,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("REJECTED");
TitleWatcher title_watcher(shell()->web_contents(), title);
@@ -1783,10 +1865,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());
@@ -1807,10 +1890,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);
@@ -1845,8 +1929,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);
@@ -1879,10 +1962,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);
@@ -1927,11 +2011,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);
@@ -1959,7 +2044,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"
@@ -1978,8 +2064,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");
@@ -2025,10 +2110,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);
@@ -2036,8 +2121,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);
« no previous file with comments | « no previous file | content/browser/service_worker/service_worker_fetch_dispatcher.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698