OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 Loading... |
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 } |
OLD | NEW |