Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(42)

Side by Side Diff: chrome/browser/referrer_policy_browsertest.cc

Issue 438283002: Sanitize referrer in context menus. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Change SerializedNavigationEntry::Sanitize and add extra check. Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/bind.h" 5 #include "base/bind.h"
6 #include "base/prefs/pref_service.h" 6 #include "base/prefs/pref_service.h"
7 #include "base/strings/string_number_conversions.h" 7 #include "base/strings/string_number_conversions.h"
8 #include "base/strings/utf_string_conversions.h" 8 #include "base/strings/utf_string_conversions.h"
9 #include "chrome/app/chrome_command_ids.h" 9 #include "chrome/app/chrome_command_ids.h"
10 #include "chrome/browser/chrome_notification_types.h" 10 #include "chrome/browser/chrome_notification_types.h"
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
102 case blink::WebReferrerPolicyNever: 102 case blink::WebReferrerPolicyNever:
103 return "never"; 103 return "never";
104 default: 104 default:
105 NOTREACHED(); 105 NOTREACHED();
106 return ""; 106 return "";
107 } 107 }
108 } 108 }
109 109
110 enum StartOnProtocol { START_ON_HTTP, START_ON_HTTPS, }; 110 enum StartOnProtocol { START_ON_HTTP, START_ON_HTTPS, };
111 111
112 enum LinkType { REGULAR_LINK, LINk_WITH_TARGET_BLANK, }; 112 enum LinkType { REGULAR_LINK, LINK_WITH_TARGET_BLANK, };
113 113
114 enum RedirectType { NO_REDIRECT, SERVER_REDIRECT, SERVER_REDIRECT_ON_HTTP, }; 114 enum RedirectType { NO_REDIRECT, SERVER_REDIRECT, SERVER_REDIRECT_ON_HTTP, };
115 115
116 std::string RedirectTypeToString(RedirectType redirect) { 116 std::string RedirectTypeToString(RedirectType redirect) {
117 switch (redirect) { 117 switch (redirect) {
118 case NO_REDIRECT: 118 case NO_REDIRECT:
119 return "none"; 119 return "none";
120 case SERVER_REDIRECT: 120 case SERVER_REDIRECT:
121 return "https"; 121 return "https";
122 case SERVER_REDIRECT_ON_HTTP: 122 case SERVER_REDIRECT_ON_HTTP:
(...skipping 29 matching lines...) Expand all
152 ? ssl_test_server_.get() 152 ? ssl_test_server_.get()
153 : test_server_.get(); 153 : test_server_.get();
154 start_url = start_server->GetURL( 154 start_url = start_server->GetURL(
155 std::string("files/referrer-policy-start.html?") + "policy=" + 155 std::string("files/referrer-policy-start.html?") + "policy=" +
156 ReferrerPolicyToString(referrer_policy) + "&port=" + 156 ReferrerPolicyToString(referrer_policy) + "&port=" +
157 base::IntToString(test_server_->host_port_pair().port()) + 157 base::IntToString(test_server_->host_port_pair().port()) +
158 "&ssl_port=" + 158 "&ssl_port=" +
159 base::IntToString(ssl_test_server_->host_port_pair().port()) + 159 base::IntToString(ssl_test_server_->host_port_pair().port()) +
160 "&redirect=" + RedirectTypeToString(redirect) + "&link=" + 160 "&redirect=" + RedirectTypeToString(redirect) + "&link=" +
161 (button == blink::WebMouseEvent::ButtonNone ? "false" : "true") + 161 (button == blink::WebMouseEvent::ButtonNone ? "false" : "true") +
162 "&target=" + (link_type == LINk_WITH_TARGET_BLANK ? "_blank" : "")); 162 "&target=" + (link_type == LINK_WITH_TARGET_BLANK ? "_blank" : ""));
163 163
164 ui_test_utils::WindowedTabAddedNotificationObserver tab_added_observer( 164 ui_test_utils::WindowedTabAddedNotificationObserver tab_added_observer(
165 content::NotificationService::AllSources()); 165 content::NotificationService::AllSources());
166 166
167 base::string16 expected_title = 167 base::string16 expected_title =
168 GetExpectedTitle(start_url, expected_referrer); 168 GetExpectedTitle(start_url, expected_referrer);
169 content::WebContents* tab = 169 content::WebContents* tab =
170 browser()->tab_strip_model()->GetActiveWebContents(); 170 browser()->tab_strip_model()->GetActiveWebContents();
171 content::TitleWatcher title_watcher(tab, expected_title); 171 content::TitleWatcher title_watcher(tab, expected_title);
172 172
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
281 NO_REDIRECT, 281 NO_REDIRECT,
282 NEW_BACKGROUND_TAB, 282 NEW_BACKGROUND_TAB,
283 blink::WebMouseEvent::ButtonMiddle, 283 blink::WebMouseEvent::ButtonMiddle,
284 EXPECT_ORIGIN_AS_REFERRER); 284 EXPECT_ORIGIN_AS_REFERRER);
285 } 285 }
286 286
287 // User initiated navigation, target blank, from HTTP to HTTP. 287 // User initiated navigation, target blank, from HTTP to HTTP.
288 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, TargetBlankOrigin) { 288 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, TargetBlankOrigin) {
289 RunReferrerTest(blink::WebReferrerPolicyOrigin, 289 RunReferrerTest(blink::WebReferrerPolicyOrigin,
290 START_ON_HTTP, 290 START_ON_HTTP,
291 LINk_WITH_TARGET_BLANK, 291 LINK_WITH_TARGET_BLANK,
292 NO_REDIRECT, 292 NO_REDIRECT,
293 NEW_FOREGROUND_TAB, 293 NEW_FOREGROUND_TAB,
294 blink::WebMouseEvent::ButtonLeft, 294 blink::WebMouseEvent::ButtonLeft,
295 EXPECT_ORIGIN_AS_REFERRER); 295 EXPECT_ORIGIN_AS_REFERRER);
296 } 296 }
297 297
298 // User initiated navigation, target blank, from HTTPS to HTTP. 298 // User initiated navigation, target blank, from HTTPS to HTTP.
299 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsTargetBlankOrigin) { 299 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsTargetBlankOrigin) {
300 RunReferrerTest(blink::WebReferrerPolicyOrigin, 300 RunReferrerTest(blink::WebReferrerPolicyOrigin,
301 START_ON_HTTPS, 301 START_ON_HTTPS,
302 LINk_WITH_TARGET_BLANK, 302 LINK_WITH_TARGET_BLANK,
303 NO_REDIRECT, 303 NO_REDIRECT,
304 NEW_FOREGROUND_TAB, 304 NEW_FOREGROUND_TAB,
305 blink::WebMouseEvent::ButtonLeft, 305 blink::WebMouseEvent::ButtonLeft,
306 EXPECT_ORIGIN_AS_REFERRER); 306 EXPECT_ORIGIN_AS_REFERRER);
307 } 307 }
308 308
309 // User initiated navigation, middle click, target blank, from HTTP to HTTP. 309 // User initiated navigation, middle click, target blank, from HTTP to HTTP.
310 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankOrigin) { 310 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankOrigin) {
311 RunReferrerTest(blink::WebReferrerPolicyOrigin, 311 RunReferrerTest(blink::WebReferrerPolicyOrigin,
312 START_ON_HTTP, 312 START_ON_HTTP,
313 LINk_WITH_TARGET_BLANK, 313 LINK_WITH_TARGET_BLANK,
314 NO_REDIRECT, 314 NO_REDIRECT,
315 NEW_FOREGROUND_TAB, 315 NEW_FOREGROUND_TAB,
316 blink::WebMouseEvent::ButtonMiddle, 316 blink::WebMouseEvent::ButtonMiddle,
317 EXPECT_ORIGIN_AS_REFERRER); 317 EXPECT_ORIGIN_AS_REFERRER);
318 } 318 }
319 319
320 // User initiated navigation, middle click, target blank, from HTTPS to HTTP. 320 // User initiated navigation, middle click, target blank, from HTTPS to HTTP.
321 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsMiddleClickTargetBlankOrigin) { 321 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsMiddleClickTargetBlankOrigin) {
322 RunReferrerTest(blink::WebReferrerPolicyOrigin, 322 RunReferrerTest(blink::WebReferrerPolicyOrigin,
323 START_ON_HTTPS, 323 START_ON_HTTPS,
324 LINk_WITH_TARGET_BLANK, 324 LINK_WITH_TARGET_BLANK,
325 NO_REDIRECT, 325 NO_REDIRECT,
326 NEW_FOREGROUND_TAB, 326 NEW_FOREGROUND_TAB,
327 blink::WebMouseEvent::ButtonMiddle, 327 blink::WebMouseEvent::ButtonMiddle,
328 EXPECT_ORIGIN_AS_REFERRER); 328 EXPECT_ORIGIN_AS_REFERRER);
329 } 329 }
330 330
331 // Context menu, from HTTP to HTTP. 331 // Context menu, from HTTP to HTTP.
332 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, ContextMenuOrigin) { 332 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, ContextMenuOrigin) {
333 ContextMenuNotificationObserver context_menu_observer( 333 ContextMenuNotificationObserver context_menu_observer(
334 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); 334 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB);
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
420 NEW_BACKGROUND_TAB, 420 NEW_BACKGROUND_TAB,
421 blink::WebMouseEvent::ButtonMiddle, 421 blink::WebMouseEvent::ButtonMiddle,
422 EXPECT_ORIGIN_AS_REFERRER); 422 EXPECT_ORIGIN_AS_REFERRER);
423 } 423 }
424 424
425 // User initiated navigation, target blank, from HTTP to HTTP via server 425 // User initiated navigation, target blank, from HTTP to HTTP via server
426 // redirect. 426 // redirect.
427 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, TargetBlankRedirect) { 427 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, TargetBlankRedirect) {
428 RunReferrerTest(blink::WebReferrerPolicyOrigin, 428 RunReferrerTest(blink::WebReferrerPolicyOrigin,
429 START_ON_HTTP, 429 START_ON_HTTP,
430 LINk_WITH_TARGET_BLANK, 430 LINK_WITH_TARGET_BLANK,
431 SERVER_REDIRECT, 431 SERVER_REDIRECT,
432 NEW_FOREGROUND_TAB, 432 NEW_FOREGROUND_TAB,
433 blink::WebMouseEvent::ButtonLeft, 433 blink::WebMouseEvent::ButtonLeft,
434 EXPECT_ORIGIN_AS_REFERRER); 434 EXPECT_ORIGIN_AS_REFERRER);
435 } 435 }
436 436
437 // User initiated navigation, target blank, from HTTPS to HTTP via server 437 // User initiated navigation, target blank, from HTTPS to HTTP via server
438 // redirect. 438 // redirect.
439 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsTargetBlankRedirect) { 439 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, HttpsTargetBlankRedirect) {
440 RunReferrerTest(blink::WebReferrerPolicyOrigin, 440 RunReferrerTest(blink::WebReferrerPolicyOrigin,
441 START_ON_HTTPS, 441 START_ON_HTTPS,
442 LINk_WITH_TARGET_BLANK, 442 LINK_WITH_TARGET_BLANK,
443 SERVER_REDIRECT, 443 SERVER_REDIRECT,
444 NEW_FOREGROUND_TAB, 444 NEW_FOREGROUND_TAB,
445 blink::WebMouseEvent::ButtonLeft, 445 blink::WebMouseEvent::ButtonLeft,
446 EXPECT_ORIGIN_AS_REFERRER); 446 EXPECT_ORIGIN_AS_REFERRER);
447 } 447 }
448 448
449 // User initiated navigation, middle click, target blank, from HTTP to HTTP via 449 // User initiated navigation, middle click, target blank, from HTTP to HTTP via
450 // server redirect. 450 // server redirect.
451 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankRedirect) { 451 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, MiddleClickTargetBlankRedirect) {
452 RunReferrerTest(blink::WebReferrerPolicyOrigin, 452 RunReferrerTest(blink::WebReferrerPolicyOrigin,
453 START_ON_HTTP, 453 START_ON_HTTP,
454 LINk_WITH_TARGET_BLANK, 454 LINK_WITH_TARGET_BLANK,
455 SERVER_REDIRECT, 455 SERVER_REDIRECT,
456 NEW_FOREGROUND_TAB, 456 NEW_FOREGROUND_TAB,
457 blink::WebMouseEvent::ButtonMiddle, 457 blink::WebMouseEvent::ButtonMiddle,
458 EXPECT_ORIGIN_AS_REFERRER); 458 EXPECT_ORIGIN_AS_REFERRER);
459 } 459 }
460 460
461 // User initiated navigation, middle click, target blank, from HTTPS to HTTP 461 // User initiated navigation, middle click, target blank, from HTTPS to HTTP
462 // via server redirect. 462 // via server redirect.
463 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, 463 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest,
464 HttpsMiddleClickTargetBlankRedirect) { 464 HttpsMiddleClickTargetBlankRedirect) {
465 RunReferrerTest(blink::WebReferrerPolicyOrigin, 465 RunReferrerTest(blink::WebReferrerPolicyOrigin,
466 START_ON_HTTPS, 466 START_ON_HTTPS,
467 LINk_WITH_TARGET_BLANK, 467 LINK_WITH_TARGET_BLANK,
468 SERVER_REDIRECT, 468 SERVER_REDIRECT,
469 NEW_FOREGROUND_TAB, 469 NEW_FOREGROUND_TAB,
470 blink::WebMouseEvent::ButtonMiddle, 470 blink::WebMouseEvent::ButtonMiddle,
471 EXPECT_ORIGIN_AS_REFERRER); 471 EXPECT_ORIGIN_AS_REFERRER);
472 } 472 }
473 473
474 // Context menu, from HTTP to HTTP via server redirect. 474 // Context menu, from HTTP to HTTP via server redirect.
475 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, ContextMenuRedirect) { 475 IN_PROC_BROWSER_TEST_F(ReferrerPolicyTest, ContextMenuRedirect) {
476 ContextMenuNotificationObserver context_menu_observer( 476 ContextMenuNotificationObserver context_menu_observer(
477 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB); 477 IDC_CONTENT_CONTEXT_OPENLINKNEWTAB);
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
611 611
612 // Verify that the full url of the iframe was used as referrer. 612 // Verify that the full url of the iframe was used as referrer.
613 EXPECT_TRUE(content::ExecuteScriptAndExtractString( 613 EXPECT_TRUE(content::ExecuteScriptAndExtractString(
614 frame, 614 frame,
615 "window.domAutomationController.send(document.title)", 615 "window.domAutomationController.send(document.title)",
616 &title)); 616 &title));
617 EXPECT_EQ("Referrer is " + 617 EXPECT_EQ("Referrer is " +
618 test_server_->GetURL("files/referrer-policy-log.html").spec(), 618 test_server_->GetURL("files/referrer-policy-log.html").spec(),
619 title); 619 title);
620 } 620 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698