Commit 6e82c763 authored by Makoto Shimazu's avatar Makoto Shimazu Committed by Commit Bot

Add browser tests for DNT via a service worker falling back to network

Adding tests to check if DNT header is perserved when a page is controlled by a
service worker but requests fall back to the network.

Bug: 853085
Change-Id: I9beeda397d4fbdef13aee11e36af3efaaec142f1
Reviewed-on: https://chromium-review.googlesource.com/1139458Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Commit-Queue: Makoto Shimazu <shimazu@chromium.org>
Cr-Commit-Position: refs/heads/master@{#576767}
parent 34245de0
......@@ -262,6 +262,71 @@ IN_PROC_BROWSER_TEST_F(DoNotTrackTest, FetchFromServiceWorker) {
ExpectPageTextEq("1");
}
// Checks that the DNT header is preserved when fetching from a page controlled
// by a service worker which doesn't have a fetch handler and falls back to the
// network.
IN_PROC_BROWSER_TEST_F(DoNotTrackTest,
FetchFromServiceWorkerControlledPage_NoFetchHandler) {
ASSERT_TRUE(embedded_test_server()->Start());
if (!EnableDoNotTrack())
return;
{
// Register a service worker which controls /service_worker.
const GURL url = embedded_test_server()->GetURL(
"/service_worker/create_service_worker.html?"
"worker_url=/service_worker/empty.js");
EXPECT_TRUE(NavigateToURL(shell(), url));
const base::string16 title = base::ASCIIToUTF16("DONE");
TitleWatcher watcher(shell()->web_contents(), title);
EXPECT_EQ(title, watcher.WaitAndGetTitle());
}
{
// Issue a request from a controlled page.
const GURL url = embedded_test_server()->GetURL(
"/service_worker/fetch_from_page.html?url=/echoheader?DNT");
EXPECT_TRUE(NavigateToURL(shell(), url));
const base::string16 title = base::ASCIIToUTF16("DONE");
TitleWatcher watcher(shell()->web_contents(), title);
EXPECT_EQ(title, watcher.WaitAndGetTitle());
}
ExpectPageTextEq("1");
}
// Checks that the DNT header is preserved when fetching from a page controlled
// by a service worker which has a fetch handler but falls back to the network.
IN_PROC_BROWSER_TEST_F(DoNotTrackTest,
FetchFromServiceWorkerControlledPage_PassThrough) {
ASSERT_TRUE(embedded_test_server()->Start());
if (!EnableDoNotTrack())
return;
{
// Register a service worker which controls /service_worker.
const GURL url = embedded_test_server()->GetURL(
"/service_worker/create_service_worker.html?"
"worker_url=/service_worker/fetch_event_pass_through.js");
EXPECT_TRUE(NavigateToURL(shell(), url));
const base::string16 title = base::ASCIIToUTF16("DONE");
TitleWatcher watcher(shell()->web_contents(), title);
EXPECT_EQ(title, watcher.WaitAndGetTitle());
}
{
// Issue a request from a controlled page.
const GURL url = embedded_test_server()->GetURL(
"/service_worker/fetch_from_page.html?url=/echoheader?DNT");
EXPECT_TRUE(NavigateToURL(shell(), url));
const base::string16 title = base::ASCIIToUTF16("DONE");
TitleWatcher watcher(shell()->web_contents(), title);
EXPECT_EQ(title, watcher.WaitAndGetTitle());
}
ExpectPageTextEq("1");
}
} // namespace
} // namespace content
......@@ -2,7 +2,9 @@
const params = new URLSearchParams(location.search);
async function run() {
const reg = await navigator.serviceWorker.register(
params.get('worker_url'));
params.get('worker_url'));
await navigator.serviceWorker.ready;
document.title = 'DONE';
}
self.onload = run;
</script>
<!doctype html>
<title>Fetch url specified by a query param</title>
<script>
const params = new URLSearchParams(location.search);
async function run() {
const response = await fetch(params.get('url'));
document.body.innerText += await response.text();
document.title = 'DONE';
}
self.onload = run;
</script>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment