summaryrefslogtreecommitdiff
path: root/chromium/content/browser/cross_site_transfer_browsertest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/cross_site_transfer_browsertest.cc')
-rw-r--r--chromium/content/browser/cross_site_transfer_browsertest.cc22
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