referrer_policy_browsertest.cc revision 7dbb3d5cf0c15f500944d211057644d6a2f37371
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/strings/string_number_conversions.h" 7868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/app/chrome_command_ids.h" 97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "chrome/browser/chrome_notification_types.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/tab_contents/render_view_context_menu.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/tab_contents/render_view_context_menu_browsertest_util.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_commands.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/ui/tabs/tab_strip_model.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/ui_test_utils.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/notification_service.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/render_view_host.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/browser_test_utils.h" 21b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include "net/test/spawned_test_server/spawned_test_server.h" 227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "third_party/WebKit/public/web/WebInputEvent.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// GTK requires a X11-level mouse event to open a context menu correctly. 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#if defined(TOOLKIT_GTK) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_ContextMenuOrigin DISABLED_ContextMenuOrigin 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_HttpsContextMenuOrigin DISABLED_HttpsContextMenuOrigin 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define MAYBE_ContextMenuRedirect DISABLED_ContextMenuRedirect 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#define MAYBE_HttpsContextMenuRedirect DISABLED_HttpsContextMenuRedirect 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_ContextMenuOrigin ContextMenuOrigin 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_HttpsContextMenuOrigin HttpsContextMenuOrigin 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_ContextMenuRedirect ContextMenuRedirect 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MAYBE_HttpsContextMenuRedirect HttpsContextMenuRedirect 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const base::FilePath::CharType kDocRoot[] = 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) FILE_PATH_LITERAL("chrome/test/data/referrer_policy"); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ReferrerPolicyTest : public InProcessBrowserTest { 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ReferrerPolicyTest() {} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~ReferrerPolicyTest() {} 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUp() OVERRIDE { 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) test_server_.reset(new net::SpawnedTestServer( 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::SpawnedTestServer::TYPE_HTTP, 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::SpawnedTestServer::kLocalhost, 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::FilePath(kDocRoot))); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(test_server_->Start()); 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ssl_test_server_.reset(new net::SpawnedTestServer( 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::SpawnedTestServer::TYPE_HTTPS, 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::SpawnedTestServer::kLocalhost, 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::FilePath(kDocRoot))); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ASSERT_TRUE(ssl_test_server_->Start()); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) InProcessBrowserTest::SetUp(); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) enum ExpectedReferrer { 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EMPTY_REFERRER, 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FULL_REFERRER, 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns the expected title for the tab with the given (full) referrer and 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // the expected modification of it. 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 GetExpectedTitle(const GURL& url, 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExpectedReferrer expected_referrer) { 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string referrer; 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) switch (expected_referrer) { 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EXPECT_EMPTY_REFERRER: 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) referrer = "Referrer is empty"; 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EXPECT_FULL_REFERRER: 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) referrer = "Referrer is " + url.spec(); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) case EXPECT_ORIGIN_AS_REFERRER: 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) referrer = "Referrer is " + url.GetWithEmptyPath().spec(); 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) break; 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ASCIIToUTF16(referrer); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Adds all possible titles to the TitleWatcher, so we don't time out 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // waiting for the title if the test fails. 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddAllPossibleTitles(const GURL& url, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::TitleWatcher* title_watcher) { 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) title_watcher->AlsoWaitForTitle( 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetExpectedTitle(url, EXPECT_EMPTY_REFERRER)); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) title_watcher->AlsoWaitForTitle( 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetExpectedTitle(url, EXPECT_FULL_REFERRER)); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) title_watcher->AlsoWaitForTitle( 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetExpectedTitle(url, EXPECT_ORIGIN_AS_REFERRER)); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Navigates from a page with a given |referrer_policy| and checks that the 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // reported referrer matches the expectation. 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Parameters: 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // referrer_policy: The referrer policy to test ("default", "always", 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // "origin", "never") 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // start_on_https: True if the test should start on an HTTPS page. 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // target_blank: True if the link that is generated should have the 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // attribute target=_blank 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // redirect: True if the link target should first do a server 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // redirect before evaluating the passed referrer. 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // opens_new_tab: True if this test opens a new tab. 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // button: If not WebMouseEvent::ButtonNone, click on the 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // link with the specified mouse button. 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // expected_referrer: The kind of referrer to expect. 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Returns: 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The URL of the first page navigated to. 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL RunReferrerTest(const std::string referrer_policy, 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool start_on_https, 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool target_blank, 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool redirect, 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool opens_new_tab, 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::Button button, 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ExpectedReferrer expected_referrer) { 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL start_url; 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) net::SpawnedTestServer* start_server = 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) start_on_https ? ssl_test_server_.get() : test_server_.get(); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) start_url = start_server->GetURL( 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string("files/referrer-policy-start.html?") + 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "policy=" + referrer_policy + 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "&port=" + base::IntToString(test_server_->host_port_pair().port()) + 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "&ssl_port=" + 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::IntToString(ssl_test_server_->host_port_pair().port()) + 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "&redirect=" + (redirect ? "true" : "false") + 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "&link=" + 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) (button == WebKit::WebMouseEvent::ButtonNone ? "false" : "true") + 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "&target=" + (target_blank ? "_blank" : "")); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::WindowedTabAddedNotificationObserver tab_added_observer( 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::NotificationService::AllSources()); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 expected_title = GetExpectedTitle(start_url, expected_referrer); 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* tab = 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::TitleWatcher title_watcher(tab, expected_title); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Watch for all possible outcomes to avoid timeouts if something breaks. 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddAllPossibleTitles(start_url, &title_watcher); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui_test_utils::NavigateToURL(browser(), start_url); 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (button != WebKit::WebMouseEvent::ButtonNone) { 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent mouse_event; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mouse_event.type = WebKit::WebInputEvent::MouseDown; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mouse_event.button = button; 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mouse_event.x = 15; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mouse_event.y = 15; 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mouse_event.clickCount = 1; 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tab->GetRenderViewHost()->ForwardMouseEvent(mouse_event); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) mouse_event.type = WebKit::WebInputEvent::MouseUp; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tab->GetRenderViewHost()->ForwardMouseEvent(mouse_event); 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (opens_new_tab) { 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tab_added_observer.Wait(); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tab = tab_added_observer.GetTab(); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(tab); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::WaitForLoadStop(tab); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_title, tab->GetTitle()); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } else { 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return start_url; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 178c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<net::SpawnedTestServer> test_server_; 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scoped_ptr<net::SpawnedTestServer> ssl_test_server_; 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The basic behavior of referrer policies is covered by layout tests in 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// http/tests/security/referrer-policy-*. These tests cover (hopefully) all 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// code paths chrome uses to navigate. To keep the number of combinations down, 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// we only test the "origin" policy here. 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Some tests are marked as FAILS, see http://crbug.com/124750 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Content initiated navigation, from HTTP to HTTP. 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, Origin) { 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", false, false, false, false, 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonNone, 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Content initiated navigation, from HTTPS to HTTP. 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsDefault) { 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", true, false, false, false, 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonNone, 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, from HTTP to HTTP. 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, LeftClickOrigin) { 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", false, false, false, false, 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonLeft, 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, from HTTPS to HTTP. 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsLeftClickOrigin) { 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", true, false, false, false, 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonLeft, 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, middle click, from HTTP to HTTP. 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickOrigin) { 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", false, false, false, true, 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonMiddle, 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, middle click, from HTTPS to HTTP. 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsMiddleClickOrigin) { 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", true, false, false, true, 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonMiddle, 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, target blank, from HTTP to HTTP. 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, TargetBlankOrigin) { 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", false, true, false, true, 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonLeft, 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, target blank, from HTTPS to HTTP. 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsTargetBlankOrigin) { 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", true, true, false, true, 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonLeft, 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, middle click, target blank, from HTTP to HTTP. 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankOrigin) { 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", false, true, false, true, 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonMiddle, 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, middle click, target blank, from HTTPS to HTTP. 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsMiddleClickTargetBlankOrigin) { 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", true, true, false, true, 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonMiddle, 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Context menu, from HTTP to HTTP. 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MAYBE_ContextMenuOrigin) { 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContextMenuNotificationObserver context_menu_observer( 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", false, false, false, true, 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonRight, 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Context menu, from HTTPS to HTTP. 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MAYBE_HttpsContextMenuOrigin) { 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContextMenuNotificationObserver context_menu_observer( 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", true, false, false, true, 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonRight, 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Content initiated navigation, from HTTP to HTTP via server redirect. 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, Redirect) { 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", false, false, true, false, 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonNone, 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Content initiated navigation, from HTTPS to HTTP via server redirect. 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsRedirect) { 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", true, false, true, false, 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonNone, 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, from HTTP to HTTP via server redirect. 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, LeftClickRedirect) { 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", false, false, true, false, 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonLeft, 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, from HTTPS to HTTP via server redirect. 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsLeftClickRedirect) { 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", true, false, true, false, 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonLeft, 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, middle click, from HTTP to HTTP via server 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// redirect. 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickRedirect) { 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", false, false, true, true, 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonMiddle, 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, middle click, from HTTPS to HTTP via server 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// redirect. 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsMiddleClickRedirect) { 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", true, false, true, true, 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonMiddle, 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, target blank, from HTTP to HTTP via server 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// redirect. 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, TargetBlankRedirect) { 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", false, true, true, true, 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonLeft, 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, target blank, from HTTPS to HTTP via server 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// redirect. 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsTargetBlankRedirect) { 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", true, true, true, true, 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonLeft, 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, middle click, target blank, from HTTP to HTTP via 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// server redirect. 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankRedirect) { 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", false, true, true, true, 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonMiddle, 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// User initiated navigation, middle click, target blank, from HTTPS to HTTP 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// via server redirect. 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) HttpsMiddleClickTargetBlankRedirect) { 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", true, true, true, true, 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonMiddle, 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Context menu, from HTTP to HTTP via server redirect. 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MAYBE_ContextMenuRedirect) { 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContextMenuNotificationObserver context_menu_observer( 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", false, false, true, true, 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonRight, 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Context menu, from HTTPS to HTTP via server redirect. 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MAYBE_HttpsContextMenuRedirect) { 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ContextMenuNotificationObserver context_menu_observer( 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunReferrerTest("origin", true, false, true, true, 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonRight, 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Tests history navigation actions: Navigate from A to B with a referrer 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// policy, then navigate to C, back to B, and reload. 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, History) { 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Navigate from A to B. 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GURL start_url = RunReferrerTest("origin", true, false, true, false, 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebKit::WebMouseEvent::ButtonLeft, 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_ORIGIN_AS_REFERRER); 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Navigate to C. 381c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ui_test_utils::NavigateToURL(browser(), test_server_->GetURL(std::string())); 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) string16 expected_title = 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetExpectedTitle(start_url, EXPECT_ORIGIN_AS_REFERRER); 3852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) content::WebContents* tab = 3862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser()->tab_strip_model()->GetActiveWebContents(); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<content::TitleWatcher> title_watcher( 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new content::TitleWatcher(tab, expected_title)); 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Watch for all possible outcomes to avoid timeouts if something breaks. 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddAllPossibleTitles(start_url, title_watcher.get()); 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Go back to B. 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::GoBack(browser(), CURRENT_TAB); 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_title, title_watcher->WaitAndGetTitle()); 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) title_watcher.reset(new content::TitleWatcher(tab, expected_title)); 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddAllPossibleTitles(start_url, title_watcher.get()); 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Reload to B. 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::Reload(browser(), CURRENT_TAB); 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_title, title_watcher->WaitAndGetTitle()); 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) title_watcher.reset(new content::TitleWatcher(tab, expected_title)); 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddAllPossibleTitles(start_url, title_watcher.get()); 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Shift-reload to B. 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) chrome::ReloadIgnoringCache(browser(), CURRENT_TAB); 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected_title, title_watcher->WaitAndGetTitle()); 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 411