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

Side by Side Diff: content/browser/service_worker/service_worker_browsertest.cc

Issue 2446083002: Add ServiceWorkerNavigationPreloadTest for resolving navigationPreload with null. (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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <map> 8 #include <map>
9 #include <memory> 9 #include <memory>
10 #include <utility> 10 #include <utility>
(...skipping 1404 matching lines...) Expand 10 before | Expand all | Expand 10 after
1415 ~ServiceWorkerNavigationPreloadTest() override {} 1415 ~ServiceWorkerNavigationPreloadTest() override {}
1416 1416
1417 void SetUpCommandLine(base::CommandLine* command_line) override { 1417 void SetUpCommandLine(base::CommandLine* command_line) override {
1418 command_line->AppendSwitchASCII( 1418 command_line->AppendSwitchASCII(
1419 switches::kEnableFeatures, 1419 switches::kEnableFeatures,
1420 features::kServiceWorkerNavigationPreload.name); 1420 features::kServiceWorkerNavigationPreload.name);
1421 } 1421 }
1422 1422
1423 protected: 1423 protected:
1424 void SetupForNavigationPreloadTest(const GURL& scope, 1424 void SetupForNavigationPreloadTest(const GURL& scope,
1425 const GURL& worker_url) { 1425 const GURL& worker_url,
1426 bool enable_navigation_preload) {
1426 scoped_refptr<WorkerActivatedObserver> observer = 1427 scoped_refptr<WorkerActivatedObserver> observer =
1427 new WorkerActivatedObserver(wrapper()); 1428 new WorkerActivatedObserver(wrapper());
1428 observer->Init(); 1429 observer->Init();
1429 public_context()->RegisterServiceWorker( 1430 public_context()->RegisterServiceWorker(
1430 scope, worker_url, 1431 scope, worker_url,
1431 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing))); 1432 base::Bind(&ExpectResultAndRun, true, base::Bind(&base::DoNothing)));
1432 observer->Wait(); 1433 observer->Wait();
1433 1434 if (enable_navigation_preload) {
1434 RunOnIOThread(base::Bind(&self::EnableNavigationPreloadOnIO, 1435 RunOnIOThread(base::Bind(&self::EnableNavigationPreloadOnIO,
1435 base::Unretained(this), scope)); 1436 base::Unretained(this), scope));
1437 }
1436 1438
1437 embedded_test_server()->RegisterRequestMonitor( 1439 embedded_test_server()->RegisterRequestMonitor(
1438 base::Bind(&self::MonitorRequestHandler, base::Unretained(this))); 1440 base::Bind(&self::MonitorRequestHandler, base::Unretained(this)));
1439 } 1441 }
1440 1442
1441 void RegisterStaticFile(const GURL& url, 1443 void RegisterStaticFile(const GURL& url,
1442 const std::string& content, 1444 const std::string& content,
1443 const std::string& content_type) { 1445 const std::string& content_type) {
1444 embedded_test_server()->RegisterRequestHandler( 1446 embedded_test_server()->RegisterRequestHandler(
1445 base::Bind(&self::StaticRequestHandler, base::Unretained(this), url, 1447 base::Bind(&self::StaticRequestHandler, base::Unretained(this), url,
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
1543 1545
1544 std::vector<std::string> request_log_; 1546 std::vector<std::string> request_log_;
1545 }; 1547 };
1546 1548
1547 const char ServiceWorkerNavigationPreloadTest::kPreloadResponseTestScript[] = 1549 const char ServiceWorkerNavigationPreloadTest::kPreloadResponseTestScript[] =
1548 "var preload_resolve;\n" 1550 "var preload_resolve;\n"
1549 "var preload_promise = new Promise(r => { preload_resolve = r; });\n" 1551 "var preload_promise = new Promise(r => { preload_resolve = r; });\n"
1550 "self.addEventListener('fetch', event => {\n" 1552 "self.addEventListener('fetch', event => {\n"
1551 " event.waitUntil(event.navigationPreload.then(\n" 1553 " event.waitUntil(event.navigationPreload.then(\n"
1552 " r => {\n" 1554 " r => {\n"
1555 " if (!r) {\n"
1556 " preload_resolve(\n"
1557 " {result: 'RESOLVED', info: 'Resolved with ' + r + '.'});\n"
1558 " return;\n"
1559 " }\n"
1553 " var info = {};\n" 1560 " var info = {};\n"
1554 " info.type = r.type;\n" 1561 " info.type = r.type;\n"
1555 " info.url = r.url;\n" 1562 " info.url = r.url;\n"
1556 " info.status = r.status;\n" 1563 " info.status = r.status;\n"
1557 " info.ok = r.ok;\n" 1564 " info.ok = r.ok;\n"
1558 " info.statusText = r.statusText;\n" 1565 " info.statusText = r.statusText;\n"
1559 " info.headers = [];\n" 1566 " info.headers = [];\n"
1560 " r.headers.forEach((v, n) => { info.headers.push([n,v]); });\n" 1567 " r.headers.forEach((v, n) => { info.headers.push([n,v]); });\n"
1561 " preload_resolve({result: 'RESOLVED',\n" 1568 " preload_resolve({result: 'RESOLVED',\n"
1562 " info: JSON.stringify(info)}); },\n" 1569 " info: JSON.stringify(info)}); },\n"
(...skipping 27 matching lines...) Expand all
1590 const char kPage[] = "<title>PASS</title>Hello world."; 1597 const char kPage[] = "<title>PASS</title>Hello world.";
1591 const char kScript[] = 1598 const char kScript[] =
1592 "self.addEventListener('fetch', event => {\n" 1599 "self.addEventListener('fetch', event => {\n"
1593 " // Do nothing.\n" 1600 " // Do nothing.\n"
1594 " });"; 1601 " });";
1595 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 1602 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
1596 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 1603 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
1597 RegisterStaticFile(page_url, kPage, "text/html"); 1604 RegisterStaticFile(page_url, kPage, "text/html");
1598 RegisterStaticFile(worker_url, kScript, "text/javascript"); 1605 RegisterStaticFile(worker_url, kScript, "text/javascript");
1599 1606
1600 SetupForNavigationPreloadTest(page_url, worker_url); 1607 SetupForNavigationPreloadTest(page_url, worker_url,
1608 true /* enable_navigation_preload */);
1601 1609
1602 const base::string16 title = base::ASCIIToUTF16("PASS"); 1610 const base::string16 title = base::ASCIIToUTF16("PASS");
1603 TitleWatcher title_watcher(shell()->web_contents(), title); 1611 TitleWatcher title_watcher(shell()->web_contents(), title);
1604 NavigateToURL(shell(), page_url); 1612 NavigateToURL(shell(), page_url);
1605 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 1613 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1606 EXPECT_EQ("Hello world.", GetTextContent()); 1614 EXPECT_EQ("Hello world.", GetTextContent());
1607 1615
1608 // The page request must be sent twice. Once for navigation preload, and once 1616 // The page request must be sent twice. Once for navigation preload, and once
1609 // for fallback since respondWith wasn't used. 1617 // for fallback since respondWith wasn't used.
1610 EXPECT_EQ(2, GetRequestCount(kPageUrl)); 1618 EXPECT_EQ(2, GetRequestCount(kPageUrl));
(...skipping 14 matching lines...) Expand all
1625 " {headers: [['content-type', 'text/html']]}));\n" 1633 " {headers: [['content-type', 'text/html']]}));\n"
1626 " return;\n" 1634 " return;\n"
1627 " }\n" 1635 " }\n"
1628 " event.respondWith(event.navigationPreload);\n" 1636 " event.respondWith(event.navigationPreload);\n"
1629 " });"; 1637 " });";
1630 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 1638 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
1631 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 1639 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
1632 RegisterStaticFile(page_url, kPage, "text/html"); 1640 RegisterStaticFile(page_url, kPage, "text/html");
1633 RegisterStaticFile(worker_url, kScript, "text/javascript"); 1641 RegisterStaticFile(worker_url, kScript, "text/javascript");
1634 1642
1635 SetupForNavigationPreloadTest(page_url, worker_url); 1643 SetupForNavigationPreloadTest(page_url, worker_url,
1644 true /* enable_navigation_preload */);
1636 1645
1637 const base::string16 title = base::ASCIIToUTF16("PASS"); 1646 const base::string16 title = base::ASCIIToUTF16("PASS");
1638 TitleWatcher title_watcher(shell()->web_contents(), title); 1647 TitleWatcher title_watcher(shell()->web_contents(), title);
1639 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); 1648 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR"));
1640 NavigateToURL(shell(), page_url); 1649 NavigateToURL(shell(), page_url);
1641 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 1650 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1642 EXPECT_EQ("Hello world.", GetTextContent()); 1651 EXPECT_EQ("Hello world.", GetTextContent());
1643 1652
1644 // The page request must be sent only once, since the worker responded with 1653 // The page request must be sent only once, since the worker responded with
1645 // the navigation preload response 1654 // the navigation preload response
(...skipping 14 matching lines...) Expand all
1660 " .then(text =>\n" 1669 " .then(text =>\n"
1661 " new Response(\n" 1670 " new Response(\n"
1662 " text,\n" 1671 " text,\n"
1663 " {headers: [['content-type', 'text/html']]})));\n" 1672 " {headers: [['content-type', 'text/html']]})));\n"
1664 " });"; 1673 " });";
1665 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 1674 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
1666 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 1675 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
1667 RegisterStaticFile(page_url, kPage, "text/html"); 1676 RegisterStaticFile(page_url, kPage, "text/html");
1668 RegisterStaticFile(worker_url, kScript, "text/javascript"); 1677 RegisterStaticFile(worker_url, kScript, "text/javascript");
1669 1678
1670 SetupForNavigationPreloadTest(page_url, worker_url); 1679 SetupForNavigationPreloadTest(page_url, worker_url,
1680 true /* enable_navigation_preload */);
1671 1681
1672 const base::string16 title = base::ASCIIToUTF16("PASS"); 1682 const base::string16 title = base::ASCIIToUTF16("PASS");
1673 TitleWatcher title_watcher(shell()->web_contents(), title); 1683 TitleWatcher title_watcher(shell()->web_contents(), title);
1674 NavigateToURL(shell(), page_url); 1684 NavigateToURL(shell(), page_url);
1675 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 1685 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1676 EXPECT_EQ("Hello world.", GetTextContent()); 1686 EXPECT_EQ("Hello world.", GetTextContent());
1677 1687
1678 // The page request must be sent only once, since the worker responded with 1688 // The page request must be sent only once, since the worker responded with
1679 // "Hello world". 1689 // "Hello world".
1680 EXPECT_EQ(1, GetRequestCount(kPageUrl)); 1690 EXPECT_EQ(1, GetRequestCount(kPageUrl));
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
1716 "self.addEventListener('message', event => {\n" 1726 "self.addEventListener('message', event => {\n"
1717 " event.waitUntil(\n" 1727 " event.waitUntil(\n"
1718 " preload_promise.then(\n" 1728 " preload_promise.then(\n"
1719 " result => event.ports[0].postMessage(result)));\n" 1729 " result => event.ports[0].postMessage(result)));\n"
1720 " });"; 1730 " });";
1721 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 1731 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
1722 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 1732 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
1723 RegisterStaticFile(page_url, kPage, "text/html"); 1733 RegisterStaticFile(page_url, kPage, "text/html");
1724 RegisterStaticFile(worker_url, kScript, "text/javascript"); 1734 RegisterStaticFile(worker_url, kScript, "text/javascript");
1725 1735
1726 SetupForNavigationPreloadTest(page_url, worker_url); 1736 SetupForNavigationPreloadTest(page_url, worker_url,
1737 true /* enable_navigation_preload */);
1727 1738
1728 const base::string16 title = base::ASCIIToUTF16("REJECTED"); 1739 const base::string16 title = base::ASCIIToUTF16("REJECTED");
1729 TitleWatcher title_watcher(shell()->web_contents(), title); 1740 TitleWatcher title_watcher(shell()->web_contents(), title);
1730 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED")); 1741 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED"));
1731 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); 1742 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR"));
1732 NavigateToURL(shell(), page_url); 1743 NavigateToURL(shell(), page_url);
1733 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 1744 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1734 1745
1735 EXPECT_EQ( 1746 EXPECT_EQ(
1736 "AbortError: Service Worker navigation preload aborted. Need to guard " 1747 "AbortError: Service Worker navigation preload aborted. Need to guard "
1737 "with respondWith or waitUntil.", 1748 "with respondWith or waitUntil.",
1738 GetTextContent()); 1749 GetTextContent());
1739 } 1750 }
1740 1751
1741 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NetworkError) { 1752 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NetworkError) {
1742 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 1753 const char kPageUrl[] = "/service_worker/navigation_preload.html";
1743 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 1754 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
1744 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 1755 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
1745 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 1756 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
1746 RegisterStaticFile(worker_url, kPreloadResponseTestScript, "text/javascript"); 1757 RegisterStaticFile(worker_url, kPreloadResponseTestScript, "text/javascript");
1747 1758
1748 SetupForNavigationPreloadTest(page_url, worker_url); 1759 SetupForNavigationPreloadTest(page_url, worker_url,
1760 true /* enable_navigation_preload */);
1749 1761
1750 EXPECT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete()); 1762 EXPECT_TRUE(embedded_test_server()->ShutdownAndWaitUntilComplete());
1751 1763
1752 const base::string16 title = base::ASCIIToUTF16("REJECTED"); 1764 const base::string16 title = base::ASCIIToUTF16("REJECTED");
1753 TitleWatcher title_watcher(shell()->web_contents(), title); 1765 TitleWatcher title_watcher(shell()->web_contents(), title);
1754 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED")); 1766 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED"));
1755 NavigateToURL(shell(), page_url); 1767 NavigateToURL(shell(), page_url);
1756 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 1768 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1757 EXPECT_EQ("NetworkError: Service Worker navigation preload network error.", 1769 EXPECT_EQ("NetworkError: Service Worker navigation preload network error.",
1758 GetTextContent()); 1770 GetTextContent());
1759 } 1771 }
1760 1772
1761 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, 1773 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest,
1762 PreloadHeadersSimple) { 1774 PreloadHeadersSimple) {
1763 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 1775 const char kPageUrl[] = "/service_worker/navigation_preload.html";
1764 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 1776 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
1765 const char kPage[] = "<title>ERROR</title>Hello world."; 1777 const char kPage[] = "<title>ERROR</title>Hello world.";
1766 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 1778 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
1767 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 1779 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
1768 RegisterStaticFile(page_url, kPage, "text/html"); 1780 RegisterStaticFile(page_url, kPage, "text/html");
1769 RegisterStaticFile(worker_url, kPreloadResponseTestScript, "text/javascript"); 1781 RegisterStaticFile(worker_url, kPreloadResponseTestScript, "text/javascript");
1770 1782
1771 SetupForNavigationPreloadTest(page_url, worker_url); 1783 SetupForNavigationPreloadTest(page_url, worker_url,
1784 true /* enable_navigation_preload */);
1772 1785
1773 const base::string16 title = base::ASCIIToUTF16("RESOLVED"); 1786 const base::string16 title = base::ASCIIToUTF16("RESOLVED");
1774 TitleWatcher title_watcher(shell()->web_contents(), title); 1787 TitleWatcher title_watcher(shell()->web_contents(), title);
1775 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("REJECTED")); 1788 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("REJECTED"));
1776 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); 1789 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR"));
1777 NavigateToURL(shell(), page_url); 1790 NavigateToURL(shell(), page_url);
1778 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 1791 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1779 1792
1780 // The page request must be sent only once, since the worker responded with 1793 // The page request must be sent only once, since the worker responded with
1781 // a generated Response. 1794 // a generated Response.
1782 EXPECT_EQ(1, GetRequestCount(kPageUrl)); 1795 EXPECT_EQ(1, GetRequestCount(kPageUrl));
1783 std::unique_ptr<base::Value> result = 1796 std::unique_ptr<base::Value> result =
1784 base::JSONReader::Read(GetTextContent()); 1797 base::JSONReader::Read(GetTextContent());
1785 base::DictionaryValue* dict = nullptr; 1798 base::DictionaryValue* dict = nullptr;
1786 ASSERT_TRUE(result->GetAsDictionary(&dict)); 1799 ASSERT_TRUE(result->GetAsDictionary(&dict));
1787 EXPECT_EQ("basic", GetString(*dict, "type")); 1800 EXPECT_EQ("basic", GetString(*dict, "type"));
1788 EXPECT_EQ(page_url, GURL(GetString(*dict, "url"))); 1801 EXPECT_EQ(page_url, GURL(GetString(*dict, "url")));
1789 EXPECT_EQ(200, GetInt(*dict, "status")); 1802 EXPECT_EQ(200, GetInt(*dict, "status"));
1790 EXPECT_EQ(true, GetBoolean(*dict, "ok")); 1803 EXPECT_EQ(true, GetBoolean(*dict, "ok"));
1791 EXPECT_EQ("OK", GetString(*dict, "statusText")); 1804 EXPECT_EQ("OK", GetString(*dict, "statusText"));
1792 EXPECT_TRUE(CheckHeader(*dict, "content-type", "text/html")); 1805 EXPECT_TRUE(CheckHeader(*dict, "content-type", "text/html"));
1793 EXPECT_TRUE(CheckHeader(*dict, "content-length", 1806 EXPECT_TRUE(CheckHeader(*dict, "content-length",
1794 base::IntToString(sizeof(kPage) - 1))); 1807 base::IntToString(sizeof(kPage) - 1)));
1795 } 1808 }
1796 1809
1810 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, NotEnabled) {
1811 const char kPageUrl[] = "/service_worker/navigation_preload.html";
1812 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
1813 const char kPage[] = "<title>ERROR</title>Hello world.";
1814 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
1815 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
1816 RegisterStaticFile(page_url, kPage, "text/html");
1817 RegisterStaticFile(worker_url, kPreloadResponseTestScript, "text/javascript");
1818
1819 SetupForNavigationPreloadTest(page_url, worker_url,
1820 false /* enable_navigation_preload */);
1821
1822 const base::string16 title = base::ASCIIToUTF16("RESOLVED");
1823 TitleWatcher title_watcher(shell()->web_contents(), title);
1824 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("REJECTED"));
1825 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR"));
1826 NavigateToURL(shell(), page_url);
1827 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1828
1829 // The page request must not be sent, since the worker responded with a
1830 // generated Response and the navigation preload isn't enabled.
1831 EXPECT_EQ(0, GetRequestCount(kPageUrl));
1832 EXPECT_EQ("Resolved with null.", GetTextContent());
1833 }
1834
1797 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest, 1835 IN_PROC_BROWSER_TEST_P(ServiceWorkerNavigationPreloadTest,
1798 PreloadHeadersCustom) { 1836 PreloadHeadersCustom) {
1799 const char kPageUrl[] = "/service_worker/navigation_preload.html"; 1837 const char kPageUrl[] = "/service_worker/navigation_preload.html";
1800 const char kWorkerUrl[] = "/service_worker/navigation_preload.js"; 1838 const char kWorkerUrl[] = "/service_worker/navigation_preload.js";
1801 const char kPageResponse[] = 1839 const char kPageResponse[] =
1802 "HTTP/1.1 201 HELLOWORLD\r\n" 1840 "HTTP/1.1 201 HELLOWORLD\r\n"
1803 "Connection: close\r\n" 1841 "Connection: close\r\n"
1804 "Content-Length: 32\r\n" 1842 "Content-Length: 32\r\n"
1805 "Content-Type: text/html\r\n" 1843 "Content-Type: text/html\r\n"
1806 "Custom-Header: pen pineapple\r\n" 1844 "Custom-Header: pen pineapple\r\n"
1807 "Custom-Header: apple pen\r\n" 1845 "Custom-Header: apple pen\r\n"
1808 "Set-Cookie: COOKIE1\r\n" 1846 "Set-Cookie: COOKIE1\r\n"
1809 "Set-Cookie2: COOKIE2\r\n" 1847 "Set-Cookie2: COOKIE2\r\n"
1810 "\r\n" 1848 "\r\n"
1811 "<title>ERROR</title>Hello world."; 1849 "<title>ERROR</title>Hello world.";
1812 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 1850 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
1813 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 1851 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
1814 RegisterCustomResponse(page_url, kPageResponse); 1852 RegisterCustomResponse(page_url, kPageResponse);
1815 RegisterStaticFile(worker_url, kPreloadResponseTestScript, "text/javascript"); 1853 RegisterStaticFile(worker_url, kPreloadResponseTestScript, "text/javascript");
1816 1854
1817 SetupForNavigationPreloadTest(page_url, worker_url); 1855 SetupForNavigationPreloadTest(page_url, worker_url,
1856 true /* enable_navigation_preload */);
1818 1857
1819 const base::string16 title = base::ASCIIToUTF16("RESOLVED"); 1858 const base::string16 title = base::ASCIIToUTF16("RESOLVED");
1820 TitleWatcher title_watcher(shell()->web_contents(), title); 1859 TitleWatcher title_watcher(shell()->web_contents(), title);
1821 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("REJECTED")); 1860 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("REJECTED"));
1822 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR")); 1861 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("ERROR"));
1823 NavigateToURL(shell(), page_url); 1862 NavigateToURL(shell(), page_url);
1824 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 1863 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1825 1864
1826 // The page request must be sent only once, since the worker responded with 1865 // The page request must be sent only once, since the worker responded with
1827 // a generated Response. 1866 // a generated Response.
(...skipping 27 matching lines...) Expand all
1855 "\r\n"; 1894 "\r\n";
1856 const char kRedirectedPage[] = "<title>ERROR</title>Redirected page."; 1895 const char kRedirectedPage[] = "<title>ERROR</title>Redirected page.";
1857 const GURL redirecred_page_url = 1896 const GURL redirecred_page_url =
1858 embedded_test_server()->GetURL(kRedirectedPageUrl); 1897 embedded_test_server()->GetURL(kRedirectedPageUrl);
1859 const GURL page_url = embedded_test_server()->GetURL(kPageUrl); 1898 const GURL page_url = embedded_test_server()->GetURL(kPageUrl);
1860 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl); 1899 const GURL worker_url = embedded_test_server()->GetURL(kWorkerUrl);
1861 RegisterCustomResponse(page_url, kPageResponse); 1900 RegisterCustomResponse(page_url, kPageResponse);
1862 RegisterStaticFile(worker_url, kPreloadResponseTestScript, "text/javascript"); 1901 RegisterStaticFile(worker_url, kPreloadResponseTestScript, "text/javascript");
1863 RegisterStaticFile(redirecred_page_url, kRedirectedPage, "text/html"); 1902 RegisterStaticFile(redirecred_page_url, kRedirectedPage, "text/html");
1864 1903
1865 SetupForNavigationPreloadTest(page_url, worker_url); 1904 SetupForNavigationPreloadTest(page_url, worker_url,
1905 true /* enable_navigation_preload */);
1866 1906
1867 const base::string16 title = base::ASCIIToUTF16("REJECTED"); 1907 const base::string16 title = base::ASCIIToUTF16("REJECTED");
1868 TitleWatcher title_watcher(shell()->web_contents(), title); 1908 TitleWatcher title_watcher(shell()->web_contents(), title);
1869 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED")); 1909 title_watcher.AlsoWaitForTitle(base::ASCIIToUTF16("RESOLVED"));
1870 NavigateToURL(shell(), page_url); 1910 NavigateToURL(shell(), page_url);
1871 EXPECT_EQ(title, title_watcher.WaitAndGetTitle()); 1911 EXPECT_EQ(title, title_watcher.WaitAndGetTitle());
1872 1912
1873 // The page request must be sent only once, since the worker responded with 1913 // The page request must be sent only once, since the worker responded with
1874 // a generated Response. 1914 // a generated Response.
1875 EXPECT_EQ(1, GetRequestCount(kPageUrl)); 1915 EXPECT_EQ(1, GetRequestCount(kPageUrl));
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after
2592 ServiceWorkerV8CacheStrategiesNormalTest, 2632 ServiceWorkerV8CacheStrategiesNormalTest,
2593 ::testing::Values(true, false)); 2633 ::testing::Values(true, false));
2594 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest, 2634 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest,
2595 ServiceWorkerV8CacheStrategiesAggressiveTest, 2635 ServiceWorkerV8CacheStrategiesAggressiveTest,
2596 ::testing::Values(true, false)); 2636 ::testing::Values(true, false));
2597 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest, 2637 INSTANTIATE_TEST_CASE_P(ServiceWorkerBrowserTest,
2598 ServiceWorkerDisableWebSecurityTest, 2638 ServiceWorkerDisableWebSecurityTest,
2599 ::testing::Values(true, false)); 2639 ::testing::Values(true, false));
2600 2640
2601 } // namespace content 2641 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698