diff options
Diffstat (limited to 'chromium/content/browser/cross_site_transfer_browsertest.cc')
-rw-r--r-- | chromium/content/browser/cross_site_transfer_browsertest.cc | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/chromium/content/browser/cross_site_transfer_browsertest.cc b/chromium/content/browser/cross_site_transfer_browsertest.cc index 5f1c338daa3..bc1b974fb45 100644 --- a/chromium/content/browser/cross_site_transfer_browsertest.cc +++ b/chromium/content/browser/cross_site_transfer_browsertest.cc @@ -9,7 +9,6 @@ #include "base/files/file_util.h" #include "base/files/scoped_temp_dir.h" #include "base/macros.h" -#include "base/memory/ptr_util.h" #include "base/run_loop.h" #include "base/strings/stringprintf.h" #include "content/browser/child_process_security_policy_impl.h" @@ -33,6 +32,7 @@ #include "content/public/test/test_navigation_observer.h" #include "content/shell/browser/shell.h" #include "content/shell/browser/shell_content_browser_client.h" +#include "content/shell/common/shell_switches.h" #include "content/test/content_browser_test_utils_internal.h" #include "net/base/escape.h" #include "net/dns/mock_host_resolver.h" @@ -472,4 +472,24 @@ IN_PROC_BROWSER_TEST_F(CrossSiteTransferTest, NoDeliveryToDetachedFrame) { << "Request should have been cancelled before reaching the renderer."; } +// Ensure that we don't send a referrer if a site tries to trigger the forking +// heuristic, even if we would have forked anyways. +IN_PROC_BROWSER_TEST_F(CrossSiteTransferTest, NoReferrerOnFork) { + base::CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kContentShellAlwaysFork); + + GURL start_url(embedded_test_server()->GetURL("a.com", "/fork-popup.html")); + EXPECT_TRUE(NavigateToURL(shell(), start_url)); + EXPECT_EQ(2u, shell()->windows().size()); + Shell* popup = shell()->windows().back(); + EXPECT_NE(popup, shell()); + + base::string16 expected_title = base::ASCIIToUTF16("Referrer = ''"); + base::string16 failed_title = base::ASCIIToUTF16( + base::StringPrintf("Referrer = '%s'", start_url.spec().c_str())); + TitleWatcher watcher(popup->web_contents(), expected_title); + watcher.AlsoWaitForTitle(failed_title); + EXPECT_EQ(expected_title, watcher.WaitAndGetTitle()); +} + } // namespace content |