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 b11353e5cc571f9f8cc236096a20ae3be4623b5d..ef49893734253fe81797091b7c9d74daa3c75e9e 100644 |
--- a/content/browser/service_worker/service_worker_browsertest.cc |
+++ b/content/browser/service_worker/service_worker_browsertest.cc |
@@ -29,6 +29,7 @@ |
#include "content/public/test/content_browser_test.h" |
#include "content/public/test/content_browser_test_utils.h" |
#include "content/shell/browser/shell.h" |
+#include "content/shell/browser/shell_content_browser_client.h" |
#include "net/test/embedded_test_server/embedded_test_server.h" |
#include "net/test/embedded_test_server/http_request.h" |
#include "net/test/embedded_test_server/http_response.h" |
@@ -947,4 +948,31 @@ IN_PROC_BROWSER_TEST_F(ServiceWorkerBlackBoxBrowserTest, MAYBE_Registration) { |
} |
} |
+IN_PROC_BROWSER_TEST_F(ServiceWorkerBrowserTest, CrossSiteTransfer) { |
+ // The first page registers a service worker. |
+ const std::string kRegisterPageUrl = "/service_worker/cross_site_xfer.html"; |
+ const base::string16 kOKTitle1(base::ASCIIToUTF16("OK_1")); |
+ const base::string16 kFailTitle1(base::ASCIIToUTF16("FAIL_1")); |
+ content::TitleWatcher title_watcher1(shell()->web_contents(), kOKTitle1); |
+ title_watcher1.AlsoWaitForTitle(kFailTitle1); |
+ |
+ NavigateToURL(shell(), embedded_test_server()->GetURL(kRegisterPageUrl)); |
+ ASSERT_EQ(kOKTitle1, title_watcher1.WaitAndGetTitle()); |
+ |
+ // Force process swapping behavior. |
+ ShellContentBrowserClient::SetSwapProcessesForRedirect(true); |
+ |
+ // The second pages loads via the serviceworker including a subresource. |
+ const std::string kConfirmPageUrl = |
+ "/service_worker/cross_site_xfer_scope/" |
+ "cross_site_xfer_confirm_via_serviceworker.html"; |
+ const base::string16 kOKTitle2(base::ASCIIToUTF16("OK_2")); |
+ const base::string16 kFailTitle2(base::ASCIIToUTF16("FAIL_2")); |
+ content::TitleWatcher title_watcher2(shell()->web_contents(), kOKTitle2); |
+ title_watcher2.AlsoWaitForTitle(kFailTitle2); |
+ |
+ NavigateToURL(shell(), embedded_test_server()->GetURL(kConfirmPageUrl)); |
+ EXPECT_EQ(kOKTitle2, title_watcher2.WaitAndGetTitle()); |
+} |
+ |
} // namespace content |