| Index: chrome/browser/referrer_policy_browsertest.cc
|
| diff --git a/chrome/browser/referrer_policy_browsertest.cc b/chrome/browser/referrer_policy_browsertest.cc
|
| index 897cd623cba752042d13ba64d4dd8c31ac1880d7..9101d32a11847a37ec6360aa03909cd5f5493181 100644
|
| --- a/chrome/browser/referrer_policy_browsertest.cc
|
| +++ b/chrome/browser/referrer_policy_browsertest.cc
|
| @@ -3,6 +3,7 @@
|
| // found in the LICENSE file.
|
|
|
| #include "base/bind.h"
|
| +#include "base/command_line.h"
|
| #include "base/prefs/pref_service.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| @@ -21,6 +22,7 @@
|
| #include "content/public/browser/notification_service.h"
|
| #include "content/public/browser/render_view_host.h"
|
| #include "content/public/browser/web_contents.h"
|
| +#include "content/public/common/content_switches.h"
|
| #include "content/public/test/browser_test_utils.h"
|
| #include "net/test/spawned_test_server/spawned_test_server.h"
|
| #include "third_party/WebKit/public/web/WebInputEvent.h"
|
| @@ -94,6 +96,8 @@ class ReferrerPolicyTest : public InProcessBrowserTest {
|
| std::string ReferrerPolicyToString(blink::WebReferrerPolicy referrer_policy) {
|
| switch (referrer_policy) {
|
| case blink::WebReferrerPolicyDefault:
|
| + return "no-meta";
|
| + case blink::WebReferrerPolicyNoReferrerWhenDowngrade:
|
| return "default";
|
| case blink::WebReferrerPolicyOrigin:
|
| return "origin";
|
| @@ -111,16 +115,23 @@ class ReferrerPolicyTest : public InProcessBrowserTest {
|
|
|
| enum LinkType { REGULAR_LINK, LINK_WITH_TARGET_BLANK, };
|
|
|
| - enum RedirectType { NO_REDIRECT, SERVER_REDIRECT, SERVER_REDIRECT_ON_HTTP, };
|
| + enum RedirectType {
|
| + NO_REDIRECT,
|
| + SERVER_REDIRECT_FROM_HTTPS_TO_HTTP,
|
| + SERVER_REDIRECT_FROM_HTTP_TO_HTTP,
|
| + SERVER_REDIRECT_FROM_HTTP_TO_HTTPS
|
| + };
|
|
|
| std::string RedirectTypeToString(RedirectType redirect) {
|
| switch (redirect) {
|
| case NO_REDIRECT:
|
| return "none";
|
| - case SERVER_REDIRECT:
|
| - return "https";
|
| - case SERVER_REDIRECT_ON_HTTP:
|
| - return "http";
|
| + case SERVER_REDIRECT_FROM_HTTPS_TO_HTTP:
|
| + return "https2http";
|
| + case SERVER_REDIRECT_FROM_HTTP_TO_HTTP:
|
| + return "http2http";
|
| + case SERVER_REDIRECT_FROM_HTTP_TO_HTTPS:
|
| + return "http2https";
|
| }
|
| NOTREACHED();
|
| return "";
|
| @@ -356,56 +367,37 @@ IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsContextMenuOrigin) {
|
|
|
| // Content initiated navigation, from HTTP to HTTP via server redirect.
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, Redirect) {
|
| - RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTP,
|
| - REGULAR_LINK,
|
| - SERVER_REDIRECT,
|
| - CURRENT_TAB,
|
| - blink::WebMouseEvent::ButtonNone,
|
| - EXPECT_ORIGIN_AS_REFERRER);
|
| + RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTP, REGULAR_LINK,
|
| + SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, CURRENT_TAB,
|
| + blink::WebMouseEvent::ButtonNone, EXPECT_ORIGIN_AS_REFERRER);
|
| }
|
|
|
| // Content initiated navigation, from HTTPS to HTTP via server redirect.
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsRedirect) {
|
| - RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTPS,
|
| - REGULAR_LINK,
|
| - SERVER_REDIRECT,
|
| - CURRENT_TAB,
|
| - blink::WebMouseEvent::ButtonNone,
|
| - EXPECT_ORIGIN_AS_REFERRER);
|
| + RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTPS, REGULAR_LINK,
|
| + SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, CURRENT_TAB,
|
| + blink::WebMouseEvent::ButtonNone, EXPECT_ORIGIN_AS_REFERRER);
|
| }
|
|
|
| // User initiated navigation, from HTTP to HTTP via server redirect.
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, LeftClickRedirect) {
|
| - RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTP,
|
| - REGULAR_LINK,
|
| - SERVER_REDIRECT,
|
| - CURRENT_TAB,
|
| - blink::WebMouseEvent::ButtonLeft,
|
| - EXPECT_ORIGIN_AS_REFERRER);
|
| + RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTP, REGULAR_LINK,
|
| + SERVER_REDIRECT_FROM_HTTP_TO_HTTP, CURRENT_TAB,
|
| + blink::WebMouseEvent::ButtonLeft, EXPECT_ORIGIN_AS_REFERRER);
|
| }
|
|
|
| // User initiated navigation, from HTTPS to HTTP via server redirect.
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsLeftClickRedirect) {
|
| - RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTPS,
|
| - REGULAR_LINK,
|
| - SERVER_REDIRECT,
|
| - CURRENT_TAB,
|
| - blink::WebMouseEvent::ButtonLeft,
|
| - EXPECT_ORIGIN_AS_REFERRER);
|
| + RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTPS, REGULAR_LINK,
|
| + SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, CURRENT_TAB,
|
| + blink::WebMouseEvent::ButtonLeft, EXPECT_ORIGIN_AS_REFERRER);
|
| }
|
|
|
| // User initiated navigation, middle click, from HTTP to HTTP via server
|
| // redirect.
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickRedirect) {
|
| - RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTP,
|
| - REGULAR_LINK,
|
| - SERVER_REDIRECT,
|
| - NEW_BACKGROUND_TAB,
|
| + RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTP, REGULAR_LINK,
|
| + SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, NEW_BACKGROUND_TAB,
|
| blink::WebMouseEvent::ButtonMiddle,
|
| EXPECT_ORIGIN_AS_REFERRER);
|
| }
|
| @@ -413,11 +405,8 @@ IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickRedirect) {
|
| // User initiated navigation, middle click, from HTTPS to HTTP via server
|
| // redirect.
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsMiddleClickRedirect) {
|
| - RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTPS,
|
| - REGULAR_LINK,
|
| - SERVER_REDIRECT,
|
| - NEW_BACKGROUND_TAB,
|
| + RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTPS, REGULAR_LINK,
|
| + SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, NEW_BACKGROUND_TAB,
|
| blink::WebMouseEvent::ButtonMiddle,
|
| EXPECT_ORIGIN_AS_REFERRER);
|
| }
|
| @@ -425,36 +414,27 @@ IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsMiddleClickRedirect) {
|
| // User initiated navigation, target blank, from HTTP to HTTP via server
|
| // redirect.
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, TargetBlankRedirect) {
|
| - RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTP,
|
| - LINK_WITH_TARGET_BLANK,
|
| - SERVER_REDIRECT,
|
| - NEW_FOREGROUND_TAB,
|
| - blink::WebMouseEvent::ButtonLeft,
|
| + RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTP,
|
| + LINK_WITH_TARGET_BLANK, SERVER_REDIRECT_FROM_HTTPS_TO_HTTP,
|
| + NEW_FOREGROUND_TAB, blink::WebMouseEvent::ButtonLeft,
|
| EXPECT_ORIGIN_AS_REFERRER);
|
| }
|
|
|
| // User initiated navigation, target blank, from HTTPS to HTTP via server
|
| // redirect.
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsTargetBlankRedirect) {
|
| - RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTPS,
|
| - LINK_WITH_TARGET_BLANK,
|
| - SERVER_REDIRECT,
|
| - NEW_FOREGROUND_TAB,
|
| - blink::WebMouseEvent::ButtonLeft,
|
| + RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTPS,
|
| + LINK_WITH_TARGET_BLANK, SERVER_REDIRECT_FROM_HTTPS_TO_HTTP,
|
| + NEW_FOREGROUND_TAB, blink::WebMouseEvent::ButtonLeft,
|
| EXPECT_ORIGIN_AS_REFERRER);
|
| }
|
|
|
| // User initiated navigation, middle click, target blank, from HTTP to HTTP via
|
| // server redirect.
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankRedirect) {
|
| - RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTP,
|
| - LINK_WITH_TARGET_BLANK,
|
| - SERVER_REDIRECT,
|
| - NEW_FOREGROUND_TAB,
|
| - blink::WebMouseEvent::ButtonMiddle,
|
| + RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTP,
|
| + LINK_WITH_TARGET_BLANK, SERVER_REDIRECT_FROM_HTTPS_TO_HTTP,
|
| + NEW_FOREGROUND_TAB, blink::WebMouseEvent::ButtonMiddle,
|
| EXPECT_ORIGIN_AS_REFERRER);
|
| }
|
|
|
| @@ -462,12 +442,9 @@ IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankRedirect) {
|
| // via server redirect.
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest,
|
| HttpsMiddleClickTargetBlankRedirect) {
|
| - RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTPS,
|
| - LINK_WITH_TARGET_BLANK,
|
| - SERVER_REDIRECT,
|
| - NEW_FOREGROUND_TAB,
|
| - blink::WebMouseEvent::ButtonMiddle,
|
| + RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTPS,
|
| + LINK_WITH_TARGET_BLANK, SERVER_REDIRECT_FROM_HTTPS_TO_HTTP,
|
| + NEW_FOREGROUND_TAB, blink::WebMouseEvent::ButtonMiddle,
|
| EXPECT_ORIGIN_AS_REFERRER);
|
| }
|
|
|
| @@ -475,39 +452,28 @@ IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest,
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, ContextMenuRedirect) {
|
| ContextMenuNotificationObserver context_menu_observer(
|
| IDC_CONTENT_CONTEXT_OPENLINKNEWTAB);
|
| - RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTP,
|
| - REGULAR_LINK,
|
| - SERVER_REDIRECT,
|
| - NEW_FOREGROUND_TAB,
|
| - blink::WebMouseEvent::ButtonRight,
|
| - EXPECT_ORIGIN_AS_REFERRER);
|
| + RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTP, REGULAR_LINK,
|
| + SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, NEW_FOREGROUND_TAB,
|
| + blink::WebMouseEvent::ButtonRight, EXPECT_ORIGIN_AS_REFERRER);
|
| }
|
|
|
| // Context menu, from HTTPS to HTTP via server redirect.
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsContextMenuRedirect) {
|
| ContextMenuNotificationObserver context_menu_observer(
|
| IDC_CONTENT_CONTEXT_OPENLINKNEWTAB);
|
| - RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTPS,
|
| - REGULAR_LINK,
|
| - SERVER_REDIRECT,
|
| - NEW_FOREGROUND_TAB,
|
| - blink::WebMouseEvent::ButtonRight,
|
| - EXPECT_ORIGIN_AS_REFERRER);
|
| + RunReferrerTest(blink::WebReferrerPolicyOrigin, START_ON_HTTPS, REGULAR_LINK,
|
| + SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, NEW_FOREGROUND_TAB,
|
| + blink::WebMouseEvent::ButtonRight, EXPECT_ORIGIN_AS_REFERRER);
|
| }
|
|
|
| // Tests history navigation actions: Navigate from A to B with a referrer
|
| // policy, then navigate to C, back to B, and reload.
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, History) {
|
| // Navigate from A to B.
|
| - GURL start_url = RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTPS,
|
| - REGULAR_LINK,
|
| - SERVER_REDIRECT,
|
| - CURRENT_TAB,
|
| - blink::WebMouseEvent::ButtonLeft,
|
| - EXPECT_ORIGIN_AS_REFERRER);
|
| + GURL start_url = RunReferrerTest(
|
| + blink::WebReferrerPolicyOrigin, START_ON_HTTPS, REGULAR_LINK,
|
| + SERVER_REDIRECT_FROM_HTTPS_TO_HTTP, CURRENT_TAB,
|
| + blink::WebMouseEvent::ButtonLeft, EXPECT_ORIGIN_AS_REFERRER);
|
|
|
| // Navigate to C.
|
| ui_test_utils::NavigateToURL(browser(), test_server_->GetURL(std::string()));
|
| @@ -544,13 +510,10 @@ IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, History) {
|
| // Tests that reloading a site for "request tablet version" correctly clears
|
| // the referrer.
|
| IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, RequestTabletSite) {
|
| - GURL start_url = RunReferrerTest(blink::WebReferrerPolicyOrigin,
|
| - START_ON_HTTPS,
|
| - REGULAR_LINK,
|
| - SERVER_REDIRECT_ON_HTTP,
|
| - CURRENT_TAB,
|
| - blink::WebMouseEvent::ButtonLeft,
|
| - EXPECT_ORIGIN_AS_REFERRER);
|
| + GURL start_url = RunReferrerTest(
|
| + blink::WebReferrerPolicyOrigin, START_ON_HTTPS, REGULAR_LINK,
|
| + SERVER_REDIRECT_FROM_HTTP_TO_HTTP, CURRENT_TAB,
|
| + blink::WebMouseEvent::ButtonLeft, EXPECT_ORIGIN_AS_REFERRER);
|
|
|
| base::string16 expected_title =
|
| GetExpectedTitle(start_url, EXPECT_EMPTY_REFERRER);
|
| @@ -618,3 +581,20 @@ IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, IFrame) {
|
| test_server_->GetURL("files/referrer-policy-log.html").spec(),
|
| title);
|
| }
|
| +
|
| +// Reduced 'referer' granularity flag tests.
|
| +
|
| +// User initiated navigation, from HTTP to HTTPS via server redirect.
|
| +IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpLeftClickRedirectDefaultNoFlag) {
|
| + RunReferrerTest(blink::WebReferrerPolicyDefault, START_ON_HTTP, REGULAR_LINK,
|
| + SERVER_REDIRECT_FROM_HTTP_TO_HTTPS, CURRENT_TAB,
|
| + blink::WebMouseEvent::ButtonLeft, EXPECT_FULL_REFERRER);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpLeftClickRedirectDefaultFlag) {
|
| + CommandLine::ForCurrentProcess()->AppendSwitch(
|
| + switches::kReducedReferrerGranularity);
|
| + RunReferrerTest(blink::WebReferrerPolicyDefault, START_ON_HTTP, REGULAR_LINK,
|
| + SERVER_REDIRECT_FROM_HTTP_TO_HTTPS, CURRENT_TAB,
|
| + blink::WebMouseEvent::ButtonLeft, EXPECT_ORIGIN_AS_REFERRER);
|
| +}
|
|
|