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

Side by Side Diff: chrome/browser/safe_browsing/safe_browsing_navigation_observer_browsertest.cc

Issue 2644133005: Include all server redirects in referrer chain (Closed)
Patch Set: proto change and adding two histograms Created 3 years, 10 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
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/strings/stringprintf.h" 5 #include "base/strings/stringprintf.h"
6 #include "chrome/browser/chrome_notification_types.h" 6 #include "chrome/browser/chrome_notification_types.h"
7 #include "chrome/browser/download/download_prefs.h" 7 #include "chrome/browser/download/download_prefs.h"
8 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/safe_browsing/download_protection_service.h" 9 #include "chrome/browser/safe_browsing/download_protection_service.h"
10 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h" 10 #include "chrome/browser/safe_browsing/safe_browsing_navigation_observer.h"
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 const GURL& expected_destination_url, 216 const GURL& expected_destination_url,
217 bool expected_is_user_initiated, 217 bool expected_is_user_initiated,
218 bool expected_has_committed, 218 bool expected_has_committed,
219 bool expected_has_server_redirect, 219 bool expected_has_server_redirect,
220 const NavigationEvent& actual_nav_event) { 220 const NavigationEvent& actual_nav_event) {
221 EXPECT_EQ(expected_source_url, actual_nav_event.source_url); 221 EXPECT_EQ(expected_source_url, actual_nav_event.source_url);
222 EXPECT_EQ(expected_source_main_frame_url, 222 EXPECT_EQ(expected_source_main_frame_url,
223 actual_nav_event.source_main_frame_url); 223 actual_nav_event.source_main_frame_url);
224 EXPECT_EQ(expected_original_request_url, 224 EXPECT_EQ(expected_original_request_url,
225 actual_nav_event.original_request_url); 225 actual_nav_event.original_request_url);
226 EXPECT_EQ(expected_destination_url, actual_nav_event.destination_url); 226 EXPECT_EQ(expected_destination_url, actual_nav_event.GetDestinationUrl());
227 EXPECT_EQ(expected_is_user_initiated, actual_nav_event.is_user_initiated); 227 EXPECT_EQ(expected_is_user_initiated, actual_nav_event.is_user_initiated);
228 EXPECT_EQ(expected_has_committed, actual_nav_event.has_committed); 228 EXPECT_EQ(expected_has_committed, actual_nav_event.has_committed);
229 EXPECT_EQ(expected_has_server_redirect, 229 EXPECT_EQ(expected_has_server_redirect,
230 actual_nav_event.has_server_redirect); 230 !actual_nav_event.server_redirect_urls.empty());
231 } 231 }
232 232
233 void VerifyReferrerChainEntry(const GURL& expected_url, 233 void VerifyReferrerChainEntry(
234 ReferrerChainEntry::URLType expected_type, 234 const GURL& expected_url,
235 const std::string& expected_ip_address, 235 const GURL& expected_main_frame_url,
236 const GURL& expected_referrer_url, 236 ReferrerChainEntry::URLType expected_type,
237 const GURL& expected_referrer_main_frame_url, 237 const std::string& expected_ip_address,
238 bool expected_is_retargeting, 238 const GURL& expected_referrer_url,
239 ReferrerChainEntry* actual_entry) { 239 const GURL& expected_referrer_main_frame_url,
240 bool expected_is_retargeting,
241 const std::vector<GURL>& expected_server_redirects,
242 ReferrerChainEntry* actual_entry) {
240 EXPECT_EQ(expected_url.spec(), actual_entry->url()); 243 EXPECT_EQ(expected_url.spec(), actual_entry->url());
244 if (expected_main_frame_url.is_valid()) {
Nathan Parker 2017/01/27 22:53:37 nit: some of these if()'s start with the populated
Jialiu Lin 2017/01/27 23:25:06 You're right. Let me rotate them.
245 // main_frame_url only set if it is different from url.
246 EXPECT_EQ(expected_main_frame_url.spec(), actual_entry->main_frame_url());
247 EXPECT_NE(expected_main_frame_url.spec(), actual_entry->url());
248 } else {
249 EXPECT_FALSE(actual_entry->has_main_frame_url());
250 }
241 EXPECT_EQ(expected_type, actual_entry->type()); 251 EXPECT_EQ(expected_type, actual_entry->type());
242 if (expected_ip_address.empty()) { 252 if (expected_ip_address.empty()) {
243 ASSERT_EQ(0, actual_entry->ip_addresses_size()); 253 ASSERT_EQ(0, actual_entry->ip_addresses_size());
244 } else { 254 } else {
245 ASSERT_EQ(1, actual_entry->ip_addresses_size()); 255 ASSERT_EQ(1, actual_entry->ip_addresses_size());
246 EXPECT_EQ(expected_ip_address, actual_entry->ip_addresses(0)); 256 EXPECT_EQ(expected_ip_address, actual_entry->ip_addresses(0));
247 } 257 }
248 EXPECT_EQ(expected_referrer_url.spec(), actual_entry->referrer_url()); 258 EXPECT_EQ(expected_referrer_url.spec(), actual_entry->referrer_url());
249 EXPECT_EQ(expected_referrer_main_frame_url.spec(), 259 if (expected_referrer_main_frame_url.is_valid()) {
250 actual_entry->referrer_main_frame_url()); 260 // referrer_main_frame_url only set if it is different from referrer_url.
261 EXPECT_EQ(expected_referrer_main_frame_url.spec(),
262 actual_entry->referrer_main_frame_url());
263 EXPECT_NE(expected_referrer_main_frame_url.spec(),
264 actual_entry->referrer_url());
265 } else {
266 EXPECT_FALSE(actual_entry->has_referrer_main_frame_url());
267 }
251 EXPECT_EQ(expected_is_retargeting, actual_entry->is_retargeting()); 268 EXPECT_EQ(expected_is_retargeting, actual_entry->is_retargeting());
269 if (expected_server_redirects.empty()) {
270 EXPECT_EQ(0, actual_entry->server_redirect_chain_size());
271 } else {
272 ASSERT_EQ(static_cast<int>(expected_server_redirects.size()),
273 actual_entry->server_redirect_chain_size());
274 for (int i = 0; i<actual_entry->server_redirect_chain_size(); i++) {
Nathan Parker 2017/01/27 22:53:38 nit: spaces around <
Jialiu Lin 2017/01/27 23:25:06 Done.
275 EXPECT_EQ(expected_server_redirects[i].spec(),
276 actual_entry->server_redirect_chain(i).url());
277 }
278 }
252 } 279 }
253 280
254 // Identify referrer chain of a DownloadItem and populate |referrer_chain|. 281 // Identify referrer chain of a DownloadItem and populate |referrer_chain|.
255 void IdentifyReferrerChainForDownload( 282 void IdentifyReferrerChainForDownload(
256 DownloadItem* download, 283 DownloadItem* download,
257 ReferrerChain* referrer_chain) { 284 ReferrerChain* referrer_chain) {
258 int download_tab_id = 285 int download_tab_id =
259 SessionTabHelper::IdForTab(download->GetWebContents()); 286 SessionTabHelper::IdForTab(download->GetWebContents());
260 // IdentifyReferrerChain should return SUCCESS(1), SUCCESS_LANDING_PAGE(2), 287 // IdentifyReferrerChain should return SUCCESS(1), SUCCESS_LANDING_PAGE(2),
261 // or SUCCESS_LANDING_REFERRER(3) in all these tests. 288 // or SUCCESS_LANDING_REFERRER(3) in all these tests.
262 EXPECT_LE(observer_manager_->IdentifyReferrerChainForDownload( 289 EXPECT_LE(observer_manager_->IdentifyReferrerChainForDownload(
263 download->GetURL(), download_tab_id, 290 download->GetURL(), download_tab_id,
264 2, // kDownloadAttributionUserGestureLimit 291 2, // kDownloadAttributionUserGestureLimit
265 referrer_chain), 292 referrer_chain),
266 SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER); 293 SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER);
267 } 294 }
268 295
269 // Identify referrer chain of a PPAPI download and populate |referrer_chain|. 296 // Identify referrer chain of a PPAPI download and populate |referrer_chain|.
270 void IdentifyReferrerChainForPPAPIDownload( 297 void IdentifyReferrerChainForPPAPIDownload(
271 const GURL& initiating_frame_url, 298 const GURL& initiating_frame_url,
272 content::WebContents* web_contents, 299 content::WebContents* web_contents,
273 ReferrerChain* referrer_chain) { 300 ReferrerChain* referrer_chain) {
274 int tab_id = SessionTabHelper::IdForTab(web_contents); 301 int tab_id = SessionTabHelper::IdForTab(web_contents);
275 bool has_user_gesture = observer_manager_->HasUserGesture(web_contents); 302 bool has_user_gesture = observer_manager_->HasUserGesture(web_contents);
276 observer_manager_->OnUserGestureConsumed(web_contents, base::Time::Now()); 303 observer_manager_->OnUserGestureConsumed(web_contents, base::Time::Now());
277 EXPECT_LE(observer_manager_->IdentifyReferrerChainForPPAPIDownload( 304 EXPECT_LE(observer_manager_->IdentifyReferrerChainForPPAPIDownload(
278 initiating_frame_url, 305 initiating_frame_url,
306 web_contents->GetLastCommittedURL(),
279 tab_id, 307 tab_id,
280 has_user_gesture, 308 has_user_gesture,
281 2, // kDownloadAttributionUserGestureLimit) 309 2, // kDownloadAttributionUserGestureLimit)
282 referrer_chain), 310 referrer_chain),
283 SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER); 311 SafeBrowsingNavigationObserverManager::SUCCESS_LANDING_REFERRER);
284 } 312 }
285 313
286 void VerifyHostToIpMap() { 314 void VerifyHostToIpMap() {
287 // Since all testing pages have the same host, there is only one entry in 315 // Since all testing pages have the same host, there is only one entry in
288 // host_to_ip_map_. 316 // host_to_ip_map_.
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 true, // is_user_initiated, 373 true, // is_user_initiated,
346 false, // has_committed 374 false, // has_committed
347 false, // has_server_redirect 375 false, // has_server_redirect
348 nav_map->at(download_url).at(0)); 376 nav_map->at(download_url).at(0));
349 VerifyHostToIpMap(); 377 VerifyHostToIpMap();
350 378
351 ReferrerChain referrer_chain; 379 ReferrerChain referrer_chain;
352 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 380 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
353 ASSERT_EQ(1U, referrer_chain.size()); 381 ASSERT_EQ(1U, referrer_chain.size());
354 VerifyReferrerChainEntry(download_url, // url 382 VerifyReferrerChainEntry(download_url, // url
383 GURL(), // main_frame_url
355 ReferrerChainEntry::DOWNLOAD_URL, // type 384 ReferrerChainEntry::DOWNLOAD_URL, // type
356 test_server_ip, // ip_address 385 test_server_ip, // ip_address
357 GURL(), // referrer_url 386 GURL(), // referrer_url
358 GURL(), // referrer_main_frame_url 387 GURL(), // referrer_main_frame_url
359 false, // is_retargeting 388 false, // is_retargeting
389 std::vector<GURL>(), // server redirects
360 referrer_chain[0].get()); 390 referrer_chain[0].get());
361 } 391 }
362 // Click on a link and start download on the same page. 392 // Click on a link and start download on the same page.
363 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, DirectDownload) { 393 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, DirectDownload) {
364 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 394 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
365 ClickTestLink("direct_download", 1, initial_url); 395 ClickTestLink("direct_download", 1, initial_url);
366 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 396 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
367 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); 397 std::string test_server_ip(embedded_test_server()->host_port_pair().host());
368 auto nav_map = navigation_map(); 398 auto nav_map = navigation_map();
369 ASSERT_TRUE(nav_map); 399 ASSERT_TRUE(nav_map);
(...skipping 15 matching lines...) Expand all
385 true, // is_user_initiated, 415 true, // is_user_initiated,
386 false, // has_committed 416 false, // has_committed
387 false, // has_server_redirect 417 false, // has_server_redirect
388 nav_map->at(download_url).at(0)); 418 nav_map->at(download_url).at(0));
389 VerifyHostToIpMap(); 419 VerifyHostToIpMap();
390 420
391 ReferrerChain referrer_chain; 421 ReferrerChain referrer_chain;
392 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 422 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
393 ASSERT_EQ(2U, referrer_chain.size()); 423 ASSERT_EQ(2U, referrer_chain.size());
394 VerifyReferrerChainEntry(download_url, // url 424 VerifyReferrerChainEntry(download_url, // url
425 GURL(), // main_frame_url
Nathan Parker 2017/01/27 22:53:37 (I don't know how to validate if these are correct
Jialiu Lin 2017/01/27 23:25:06 I don't think it is impossible to have a invalid m
395 ReferrerChainEntry::DOWNLOAD_URL, // type 426 ReferrerChainEntry::DOWNLOAD_URL, // type
396 test_server_ip, // ip_address 427 test_server_ip, // ip_address
397 initial_url, // referrer_url 428 initial_url, // referrer_url
398 initial_url, // referrer_main_frame_url 429 GURL(), // referrer_main_frame_url
399 false, // is_retargeting 430 false, // is_retargeting
431 std::vector<GURL>(), // server redirects
400 referrer_chain[0].get()); 432 referrer_chain[0].get());
401 VerifyReferrerChainEntry(initial_url, // url 433 VerifyReferrerChainEntry(initial_url, // url
434 GURL(), // main_frame_url
402 ReferrerChainEntry::LANDING_PAGE, // type 435 ReferrerChainEntry::LANDING_PAGE, // type
403 test_server_ip, // ip_address 436 test_server_ip, // ip_address
404 GURL(), // referrer_url 437 GURL(), // referrer_url
405 GURL(), // referrer_main_frame_url 438 GURL(), // referrer_main_frame_url
406 false, // is_retargeting 439 false, // is_retargeting
440 std::vector<GURL>(), // server redirects
407 referrer_chain[1].get()); 441 referrer_chain[1].get());
408 } 442 }
409 443
410 // Click on a link with rel="noreferrer" attribute, and start download on the 444 // Click on a link with rel="noreferrer" attribute, and start download on the
411 // same page. 445 // same page.
412 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 446 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
413 DirectDownloadNoReferrer) { 447 DirectDownloadNoReferrer) {
414 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 448 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
415 ClickTestLink("direct_download_noreferrer", 1, initial_url); 449 ClickTestLink("direct_download_noreferrer", 1, initial_url);
416 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 450 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
(...skipping 18 matching lines...) Expand all
435 true, // is_user_initiated, 469 true, // is_user_initiated,
436 false, // has_committed 470 false, // has_committed
437 false, // has_server_redirect 471 false, // has_server_redirect
438 nav_map->at(download_url).at(0)); 472 nav_map->at(download_url).at(0));
439 VerifyHostToIpMap(); 473 VerifyHostToIpMap();
440 474
441 ReferrerChain referrer_chain; 475 ReferrerChain referrer_chain;
442 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 476 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
443 ASSERT_EQ(2U, referrer_chain.size()); 477 ASSERT_EQ(2U, referrer_chain.size());
444 VerifyReferrerChainEntry(download_url, // url 478 VerifyReferrerChainEntry(download_url, // url
479 GURL(), // main_frame_url
445 ReferrerChainEntry::DOWNLOAD_URL, // type 480 ReferrerChainEntry::DOWNLOAD_URL, // type
446 test_server_ip, // ip_address 481 test_server_ip, // ip_address
447 initial_url, // referrer_url 482 initial_url, // referrer_url
448 initial_url, // referrer_main_frame_url 483 GURL(), // referrer_main_frame_url
449 false, // is_retargeting 484 false, // is_retargeting
485 std::vector<GURL>(), // server redirects
450 referrer_chain[0].get()); 486 referrer_chain[0].get());
451 VerifyReferrerChainEntry(initial_url, // url 487 VerifyReferrerChainEntry(initial_url, // url
488 GURL(), // main_frame_url
452 ReferrerChainEntry::LANDING_PAGE, // type 489 ReferrerChainEntry::LANDING_PAGE, // type
453 test_server_ip, // ip_address 490 test_server_ip, // ip_address
454 GURL(), // referrer_url 491 GURL(), // referrer_url
455 GURL(), // referrer_main_frame_url 492 GURL(), // referrer_main_frame_url
456 false, // is_retargeting 493 false, // is_retargeting
494 std::vector<GURL>(), // server redirects
457 referrer_chain[1].get()); 495 referrer_chain[1].get());
458 } 496 }
459 497
460 // Click on a link with rel="noreferrer" attribute, and start download in a 498 // Click on a link with rel="noreferrer" attribute, and start download in a
461 // new tab using target=_blank. 499 // new tab using target=_blank.
462 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 500 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
463 DirectDownloadNoReferrerTargetBlank) { 501 DirectDownloadNoReferrerTargetBlank) {
464 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 502 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
465 ClickTestLink("direct_download_noreferrer_target_blank", 1, initial_url); 503 ClickTestLink("direct_download_noreferrer_target_blank", 1, initial_url);
466 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 504 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 false, // is_user_initiated, 537 false, // is_user_initiated,
500 false, // has_committed 538 false, // has_committed
501 false, // has_server_redirect 539 false, // has_server_redirect
502 nav_map->at(download_url).at(1)); 540 nav_map->at(download_url).at(1));
503 VerifyHostToIpMap(); 541 VerifyHostToIpMap();
504 542
505 ReferrerChain referrer_chain; 543 ReferrerChain referrer_chain;
506 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 544 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
507 ASSERT_EQ(2U, referrer_chain.size()); 545 ASSERT_EQ(2U, referrer_chain.size());
508 VerifyReferrerChainEntry(download_url, // url 546 VerifyReferrerChainEntry(download_url, // url
547 GURL(), // main_frame_url
509 ReferrerChainEntry::DOWNLOAD_URL, // type 548 ReferrerChainEntry::DOWNLOAD_URL, // type
510 test_server_ip, // ip_address 549 test_server_ip, // ip_address
511 initial_url, // referrer_url 550 initial_url, // referrer_url
512 initial_url, // referrer_main_frame_url 551 GURL(), // referrer_main_frame_url
513 true, // is_retargeting 552 true, // is_retargeting
553 std::vector<GURL>(), // server redirects
514 referrer_chain[0].get()); 554 referrer_chain[0].get());
515 VerifyReferrerChainEntry(initial_url, // url 555 VerifyReferrerChainEntry(initial_url, // url
556 GURL(), // main_frame_url
516 ReferrerChainEntry::LANDING_PAGE, // type 557 ReferrerChainEntry::LANDING_PAGE, // type
517 test_server_ip, // ip_address 558 test_server_ip, // ip_address
518 GURL(), // referrer_url 559 GURL(), // referrer_url
519 GURL(), // referrer_main_frame_url 560 GURL(), // referrer_main_frame_url
520 false, // is_retargeting 561 false, // is_retargeting
562 std::vector<GURL>(), // server redirects
521 referrer_chain[1].get()); 563 referrer_chain[1].get());
522 } 564 }
523 565
524 // Click on a link which navigates to a page then redirects to a download using 566 // Click on a link which navigates to a page then redirects to a download using
525 // META HTTP-EQUIV="refresh". All transitions happen in the same tab. 567 // META HTTP-EQUIV="refresh". All transitions happen in the same tab.
526 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 568 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
527 SingleMetaRefreshRedirect) { 569 SingleMetaRefreshRedirect) {
528 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 570 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
529 ClickTestLink("single_meta_refresh_redirect", 2, initial_url); 571 ClickTestLink("single_meta_refresh_redirect", 2, initial_url);
530 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL); 572 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL);
(...skipping 30 matching lines...) Expand all
561 false, // is_user_initiated, 603 false, // is_user_initiated,
562 false, // has_committed 604 false, // has_committed
563 false, // has_server_redirect 605 false, // has_server_redirect
564 nav_map->at(download_url).at(0)); 606 nav_map->at(download_url).at(0));
565 VerifyHostToIpMap(); 607 VerifyHostToIpMap();
566 608
567 ReferrerChain referrer_chain; 609 ReferrerChain referrer_chain;
568 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 610 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
569 ASSERT_EQ(3U, referrer_chain.size()); 611 ASSERT_EQ(3U, referrer_chain.size());
570 VerifyReferrerChainEntry(download_url, // url 612 VerifyReferrerChainEntry(download_url, // url
613 GURL(), // main_frame_url
571 ReferrerChainEntry::DOWNLOAD_URL, // type 614 ReferrerChainEntry::DOWNLOAD_URL, // type
572 test_server_ip, // ip_address 615 test_server_ip, // ip_address
573 redirect_url, // referrer_url 616 redirect_url, // referrer_url
574 redirect_url, // referrer_main_frame_url 617 GURL(), // referrer_main_frame_url
575 false, // is_retargeting 618 false, // is_retargeting
619 std::vector<GURL>(), // server redirects
576 referrer_chain[0].get()); 620 referrer_chain[0].get());
577 VerifyReferrerChainEntry(redirect_url, // url 621 VerifyReferrerChainEntry(redirect_url, // url
622 GURL(), // main_frame_url
578 ReferrerChainEntry::CLIENT_REDIRECT, // type 623 ReferrerChainEntry::CLIENT_REDIRECT, // type
579 test_server_ip, // ip_address 624 test_server_ip, // ip_address
580 initial_url, // referrer_url 625 initial_url, // referrer_url
581 initial_url, // referrer_main_frame_url 626 GURL(), // referrer_main_frame_url
582 false, // is_retargeting 627 false, // is_retargeting
628 std::vector<GURL>(), // server redirects
583 referrer_chain[1].get()); 629 referrer_chain[1].get());
584 VerifyReferrerChainEntry(initial_url, // url 630 VerifyReferrerChainEntry(initial_url, // url
631 GURL(), // main_frame_url
585 ReferrerChainEntry::LANDING_PAGE, // type 632 ReferrerChainEntry::LANDING_PAGE, // type
586 test_server_ip, // ip_address 633 test_server_ip, // ip_address
587 GURL(), // referrer_url 634 GURL(), // referrer_url
588 GURL(), // referrer_main_frame_url 635 GURL(), // referrer_main_frame_url
589 false, // is_retargeting 636 false, // is_retargeting
637 std::vector<GURL>(), // server redirects
590 referrer_chain[2].get()); 638 referrer_chain[2].get());
591 } 639 }
592 640
593 // Click on a link which navigates to a page then redirects to a download using 641 // Click on a link which navigates to a page then redirects to a download using
594 // META HTTP-EQUIV="refresh". First navigation happens in target blank. 642 // META HTTP-EQUIV="refresh". First navigation happens in target blank.
595 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 643 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
596 SingleMetaRefreshRedirectTargetBlank) { 644 SingleMetaRefreshRedirectTargetBlank) {
597 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 645 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
598 ClickTestLink("single_meta_refresh_redirect_target_blank", 2, initial_url); 646 ClickTestLink("single_meta_refresh_redirect_target_blank", 2, initial_url);
599 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL); 647 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 false, // is_user_initiated, 687 false, // is_user_initiated,
640 false, // has_committed 688 false, // has_committed
641 false, // has_server_redirect 689 false, // has_server_redirect
642 nav_map->at(download_url).at(0)); 690 nav_map->at(download_url).at(0));
643 VerifyHostToIpMap(); 691 VerifyHostToIpMap();
644 692
645 ReferrerChain referrer_chain; 693 ReferrerChain referrer_chain;
646 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 694 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
647 ASSERT_EQ(3U, referrer_chain.size()); 695 ASSERT_EQ(3U, referrer_chain.size());
648 VerifyReferrerChainEntry(download_url, // url 696 VerifyReferrerChainEntry(download_url, // url
697 GURL(), // main_frame_url
649 ReferrerChainEntry::DOWNLOAD_URL, // type 698 ReferrerChainEntry::DOWNLOAD_URL, // type
650 test_server_ip, // ip_address 699 test_server_ip, // ip_address
651 redirect_url, // referrer_url 700 redirect_url, // referrer_url
652 redirect_url, // referrer_main_frame_url 701 GURL(), // referrer_main_frame_url
653 false, // is_retargeting 702 false, // is_retargeting
703 std::vector<GURL>(), // server redirects
654 referrer_chain[0].get()); 704 referrer_chain[0].get());
655 VerifyReferrerChainEntry(redirect_url, // url 705 VerifyReferrerChainEntry(redirect_url, // url
706 GURL(), // main_frame_url
656 ReferrerChainEntry::CLIENT_REDIRECT, // type 707 ReferrerChainEntry::CLIENT_REDIRECT, // type
657 test_server_ip, // ip_address 708 test_server_ip, // ip_address
658 initial_url, // referrer_url 709 initial_url, // referrer_url
659 initial_url, // referrer_main_frame_url 710 GURL(), // referrer_main_frame_url
660 true, // is_retargeting 711 true, // is_retargeting
712 std::vector<GURL>(), // server redirects
661 referrer_chain[1].get()); 713 referrer_chain[1].get());
662 VerifyReferrerChainEntry(initial_url, // url 714 VerifyReferrerChainEntry(initial_url, // url
715 GURL(), // main_frame_url
663 ReferrerChainEntry::LANDING_PAGE, // type 716 ReferrerChainEntry::LANDING_PAGE, // type
664 test_server_ip, // ip_address 717 test_server_ip, // ip_address
665 GURL(), // referrer_url 718 GURL(), // referrer_url
666 GURL(), // referrer_main_frame_url 719 GURL(), // referrer_main_frame_url
667 false, // is_retargeting 720 false, // is_retargeting
721 std::vector<GURL>(), // server redirects
668 referrer_chain[2].get()); 722 referrer_chain[2].get());
669 } 723 }
670 724
671 // Click on a link which redirects twice before reaching download using 725 // Click on a link which redirects twice before reaching download using
672 // META HTTP-EQUIV="refresh". All transitions happen in the same tab. 726 // META HTTP-EQUIV="refresh". All transitions happen in the same tab.
673 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 727 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
674 MultiMetaRefreshRedirects) { 728 MultiMetaRefreshRedirects) {
675 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 729 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
676 ClickTestLink("multiple_meta_refresh_redirects", 3, initial_url); 730 ClickTestLink("multiple_meta_refresh_redirects", 3, initial_url);
677 GURL first_redirect_url = embedded_test_server()->GetURL( 731 GURL first_redirect_url = embedded_test_server()->GetURL(
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
718 false, // is_user_initiated, 772 false, // is_user_initiated,
719 false, // has_committed 773 false, // has_committed
720 false, // has_server_redirect 774 false, // has_server_redirect
721 nav_map->at(download_url).at(0)); 775 nav_map->at(download_url).at(0));
722 VerifyHostToIpMap(); 776 VerifyHostToIpMap();
723 777
724 ReferrerChain referrer_chain; 778 ReferrerChain referrer_chain;
725 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 779 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
726 ASSERT_EQ(4U, referrer_chain.size()); 780 ASSERT_EQ(4U, referrer_chain.size());
727 VerifyReferrerChainEntry(download_url, // url 781 VerifyReferrerChainEntry(download_url, // url
782 GURL(), // main_frame_url
728 ReferrerChainEntry::DOWNLOAD_URL, // type 783 ReferrerChainEntry::DOWNLOAD_URL, // type
729 test_server_ip, // ip_address 784 test_server_ip, // ip_address
730 second_redirect_url, // referrer_url 785 second_redirect_url, // referrer_url
731 second_redirect_url, // referrer_main_frame_url 786 GURL(), // referrer_main_frame_url
732 false, // is_retargeting 787 false, // is_retargeting
788 std::vector<GURL>(), // server redirects
733 referrer_chain[0].get()); 789 referrer_chain[0].get());
734 VerifyReferrerChainEntry(second_redirect_url, // url 790 VerifyReferrerChainEntry(second_redirect_url, // url
791 GURL(), // main_frame_url
735 ReferrerChainEntry::CLIENT_REDIRECT, // type 792 ReferrerChainEntry::CLIENT_REDIRECT, // type
736 test_server_ip, // ip_address 793 test_server_ip, // ip_address
737 first_redirect_url, // referrer_url 794 first_redirect_url, // referrer_url
738 first_redirect_url, // referrer_main_frame_url 795 GURL(), // referrer_main_frame_url
739 false, // is_retargeting 796 false, // is_retargeting
797 std::vector<GURL>(), // server redirects
740 referrer_chain[1].get()); 798 referrer_chain[1].get());
741 VerifyReferrerChainEntry(first_redirect_url, // url 799 VerifyReferrerChainEntry(first_redirect_url, // url
800 GURL(), // main_frame_url
742 ReferrerChainEntry::CLIENT_REDIRECT, // type 801 ReferrerChainEntry::CLIENT_REDIRECT, // type
743 test_server_ip, // ip_address 802 test_server_ip, // ip_address
744 initial_url, // referrer_url 803 initial_url, // referrer_url
745 initial_url, // referrer_main_frame_url 804 GURL(), // referrer_main_frame_url
746 false, // is_retargeting 805 false, // is_retargeting
806 std::vector<GURL>(), // server redirects
747 referrer_chain[2].get()); 807 referrer_chain[2].get());
748 VerifyReferrerChainEntry(initial_url, // url 808 VerifyReferrerChainEntry(initial_url, // url
809 GURL(), // main_frame_url
749 ReferrerChainEntry::LANDING_PAGE, // type 810 ReferrerChainEntry::LANDING_PAGE, // type
750 test_server_ip, // ip_address 811 test_server_ip, // ip_address
751 GURL(), // referrer_url 812 GURL(), // referrer_url
752 GURL(), // referrer_main_frame_url 813 GURL(), // referrer_main_frame_url
753 false, // is_retargeting 814 false, // is_retargeting
815 std::vector<GURL>(), // server redirects
754 referrer_chain[3].get()); 816 referrer_chain[3].get());
755 } 817 }
756 818
757 // Click on a link which redirects to download using window.location. 819 // Click on a link which redirects to download using window.location.
758 // All transitions happen in the same tab. 820 // All transitions happen in the same tab.
759 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 821 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
760 WindowLocationRedirect) { 822 WindowLocationRedirect) {
761 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 823 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
762 ClickTestLink("window_location_redirection", 1, initial_url); 824 ClickTestLink("window_location_redirection", 1, initial_url);
763 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 825 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
(...skipping 17 matching lines...) Expand all
781 download_url, // destination_url 843 download_url, // destination_url
782 true, // is_user_initiated, 844 true, // is_user_initiated,
783 false, // has_committed 845 false, // has_committed
784 false, // has_server_redirect 846 false, // has_server_redirect
785 nav_map->at(download_url).at(0)); 847 nav_map->at(download_url).at(0));
786 848
787 ReferrerChain referrer_chain; 849 ReferrerChain referrer_chain;
788 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 850 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
789 ASSERT_EQ(2U, referrer_chain.size()); 851 ASSERT_EQ(2U, referrer_chain.size());
790 VerifyReferrerChainEntry(download_url, // url 852 VerifyReferrerChainEntry(download_url, // url
853 GURL(), // main_frame_url
791 ReferrerChainEntry::DOWNLOAD_URL, // type 854 ReferrerChainEntry::DOWNLOAD_URL, // type
792 test_server_ip, // ip_address 855 test_server_ip, // ip_address
793 initial_url, // referrer_url 856 initial_url, // referrer_url
794 initial_url, // referrer_main_frame_url 857 GURL(), // referrer_main_frame_url
795 false, // is_retargeting 858 false, // is_retargeting
859 std::vector<GURL>(), // server redirects
796 referrer_chain[0].get()); 860 referrer_chain[0].get());
797 VerifyReferrerChainEntry(initial_url, // url 861 VerifyReferrerChainEntry(initial_url, // url
862 GURL(), // main_frame_url
798 ReferrerChainEntry::LANDING_PAGE, // type 863 ReferrerChainEntry::LANDING_PAGE, // type
799 test_server_ip, // ip_address 864 test_server_ip, // ip_address
800 GURL(), // referrer_url 865 GURL(), // referrer_url
801 GURL(), // referrer_main_frame_url 866 GURL(), // referrer_main_frame_url
802 false, // is_retargeting 867 false, // is_retargeting
868 std::vector<GURL>(), // server redirects
803 referrer_chain[1].get()); 869 referrer_chain[1].get());
804 } 870 }
805 871
806 // Click on a link which redirects twice until it reaches download using a 872 // Click on a link which redirects twice until it reaches download using a
807 // mixture of meta refresh and window.location. All transitions happen in the 873 // mixture of meta refresh and window.location. All transitions happen in the
808 // same tab. 874 // same tab.
809 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, MixRedirects) { 875 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, MixRedirects) {
810 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 876 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
811 ClickTestLink("mix_redirects", 2, initial_url); 877 ClickTestLink("mix_redirects", 2, initial_url);
812 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL); 878 GURL redirect_url = embedded_test_server()->GetURL(kRedirectURL);
(...skipping 28 matching lines...) Expand all
841 false, // is_user_initiated, 907 false, // is_user_initiated,
842 false, // has_committed 908 false, // has_committed
843 false, // has_server_redirect 909 false, // has_server_redirect
844 nav_map->at(download_url).at(0)); 910 nav_map->at(download_url).at(0));
845 VerifyHostToIpMap(); 911 VerifyHostToIpMap();
846 912
847 ReferrerChain referrer_chain; 913 ReferrerChain referrer_chain;
848 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 914 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
849 ASSERT_EQ(3U, referrer_chain.size()); 915 ASSERT_EQ(3U, referrer_chain.size());
850 VerifyReferrerChainEntry(download_url, // url 916 VerifyReferrerChainEntry(download_url, // url
917 GURL(), // main_frame_url
851 ReferrerChainEntry::DOWNLOAD_URL, // type 918 ReferrerChainEntry::DOWNLOAD_URL, // type
852 test_server_ip, // ip_address 919 test_server_ip, // ip_address
853 redirect_url, // referrer_url 920 redirect_url, // referrer_url
854 redirect_url, // referrer_main_frame_url 921 GURL(), // referrer_main_frame_url
855 false, // is_retargeting 922 false, // is_retargeting
923 std::vector<GURL>(), // server redirects
856 referrer_chain[0].get()); 924 referrer_chain[0].get());
857 VerifyReferrerChainEntry(redirect_url, // url 925 VerifyReferrerChainEntry(redirect_url, // url
926 GURL(), // main_frame_url
858 ReferrerChainEntry::CLIENT_REDIRECT, // type 927 ReferrerChainEntry::CLIENT_REDIRECT, // type
859 test_server_ip, // ip_address 928 test_server_ip, // ip_address
860 initial_url, // referrer_url 929 initial_url, // referrer_url
861 initial_url, // referrer_main_frame_url 930 GURL(), // referrer_main_frame_url
862 false, // is_retargeting 931 false, // is_retargeting
932 std::vector<GURL>(), // server redirects
863 referrer_chain[1].get()); 933 referrer_chain[1].get());
864 VerifyReferrerChainEntry(initial_url, // url 934 VerifyReferrerChainEntry(initial_url, // url
935 GURL(), // main_frame_url
865 ReferrerChainEntry::LANDING_PAGE, // type 936 ReferrerChainEntry::LANDING_PAGE, // type
866 test_server_ip, // ip_address 937 test_server_ip, // ip_address
867 GURL(), // referrer_url 938 GURL(), // referrer_url
868 GURL(), // referrer_main_frame_url 939 GURL(), // referrer_main_frame_url
869 false, // is_retargeting 940 false, // is_retargeting
941 std::vector<GURL>(), // server redirects
870 referrer_chain[2].get()); 942 referrer_chain[2].get());
871 } 943 }
872 944
873 // Use javascript to open download in a new tab. 945 // Use javascript to open download in a new tab.
874 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, NewTabDownload) { 946 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, NewTabDownload) {
875 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 947 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
876 ClickTestLink("new_tab_download", 2, initial_url); 948 ClickTestLink("new_tab_download", 2, initial_url);
877 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 949 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
878 GURL blank_url = GURL(url::kAboutBlankURL); 950 GURL blank_url = GURL(url::kAboutBlankURL);
879 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); 951 std::string test_server_ip(embedded_test_server()->host_port_pair().host());
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
921 false, // has_server_redirect 993 false, // has_server_redirect
922 nav_map->at(download_url).at(0)); 994 nav_map->at(download_url).at(0));
923 EXPECT_EQ(nav_map->at(download_url).at(0).source_tab_id, 995 EXPECT_EQ(nav_map->at(download_url).at(0).source_tab_id,
924 nav_map->at(download_url).at(0).target_tab_id); 996 nav_map->at(download_url).at(0).target_tab_id);
925 VerifyHostToIpMap(); 997 VerifyHostToIpMap();
926 998
927 ReferrerChain referrer_chain; 999 ReferrerChain referrer_chain;
928 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1000 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
929 ASSERT_EQ(3U, referrer_chain.size()); 1001 ASSERT_EQ(3U, referrer_chain.size());
930 VerifyReferrerChainEntry(download_url, // url 1002 VerifyReferrerChainEntry(download_url, // url
1003 GURL(), // main_frame_url
931 ReferrerChainEntry::DOWNLOAD_URL, // type 1004 ReferrerChainEntry::DOWNLOAD_URL, // type
932 test_server_ip, // ip_address 1005 test_server_ip, // ip_address
933 blank_url, // referrer_url 1006 blank_url, // referrer_url
934 blank_url, // referrer_main_frame_url 1007 GURL(), // referrer_main_frame_url
935 false, // is_retargeting 1008 false, // is_retargeting
1009 std::vector<GURL>(), // server redirects
936 referrer_chain[0].get()); 1010 referrer_chain[0].get());
937 VerifyReferrerChainEntry(blank_url, // url 1011 VerifyReferrerChainEntry(blank_url, // url
1012 GURL(), // main_frame_url
938 ReferrerChainEntry::CLIENT_REDIRECT, // type 1013 ReferrerChainEntry::CLIENT_REDIRECT, // type
939 "", // ip_address 1014 "", // ip_address
940 initial_url, // referrer_url 1015 initial_url, // referrer_url
941 initial_url, // referrer_main_frame_url 1016 GURL(), // referrer_main_frame_url
942 true, // is_retargeting 1017 true, // is_retargeting
1018 std::vector<GURL>(), // server redirects
943 referrer_chain[1].get()); 1019 referrer_chain[1].get());
944 VerifyReferrerChainEntry(initial_url, // url 1020 VerifyReferrerChainEntry(initial_url, // url
1021 GURL(), // main_frame_url
945 ReferrerChainEntry::LANDING_PAGE, // type 1022 ReferrerChainEntry::LANDING_PAGE, // type
946 test_server_ip, // ip_address 1023 test_server_ip, // ip_address
947 GURL(), // referrer_url 1024 GURL(), // referrer_url
948 GURL(), // referrer_main_frame_url 1025 GURL(), // referrer_main_frame_url
949 false, // is_retargeting 1026 false, // is_retargeting
1027 std::vector<GURL>(), // server redirects
950 referrer_chain[2].get()); 1028 referrer_chain[2].get());
951 } 1029 }
952 1030
953 // Use javascript to open download in a new tab and download has a data url. 1031 // Use javascript to open download in a new tab and download has a data url.
954 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1032 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
955 NewTabDownloadWithDataURL) { 1033 NewTabDownloadWithDataURL) {
956 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1034 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
957 ClickTestLink("new_tab_download_with_data_url", 2, initial_url); 1035 ClickTestLink("new_tab_download_with_data_url", 2, initial_url);
958 GURL download_url = GURL(kDownloadDataURL); 1036 GURL download_url = GURL(kDownloadDataURL);
959 GURL blank_url = GURL(url::kAboutBlankURL); 1037 GURL blank_url = GURL(url::kAboutBlankURL);
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
1003 false, // has_server_redirect 1081 false, // has_server_redirect
1004 nav_map->at(download_url).at(0)); 1082 nav_map->at(download_url).at(0));
1005 EXPECT_TRUE(nav_map->at(download_url).at(0).source_tab_id == 1083 EXPECT_TRUE(nav_map->at(download_url).at(0).source_tab_id ==
1006 nav_map->at(download_url).at(0).target_tab_id); 1084 nav_map->at(download_url).at(0).target_tab_id);
1007 VerifyHostToIpMap(); 1085 VerifyHostToIpMap();
1008 1086
1009 ReferrerChain referrer_chain; 1087 ReferrerChain referrer_chain;
1010 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1088 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1011 ASSERT_EQ(3U, referrer_chain.size()); 1089 ASSERT_EQ(3U, referrer_chain.size());
1012 VerifyReferrerChainEntry(download_url, // url 1090 VerifyReferrerChainEntry(download_url, // url
1091 GURL(), // main_frame_url
1013 ReferrerChainEntry::DOWNLOAD_URL, // type 1092 ReferrerChainEntry::DOWNLOAD_URL, // type
1014 "", // ip_address 1093 "", // ip_address
1015 blank_url, // referrer_url 1094 blank_url, // referrer_url
1016 blank_url, // referrer_main_frame_url 1095 GURL(), // referrer_main_frame_url
1017 false, // is_retargeting 1096 false, // is_retargeting
1097 std::vector<GURL>(), // server redirects
1018 referrer_chain[0].get()); 1098 referrer_chain[0].get());
1019 VerifyReferrerChainEntry(blank_url, // url 1099 VerifyReferrerChainEntry(blank_url, // url
1100 GURL(), // main_frame_url
1020 ReferrerChainEntry::CLIENT_REDIRECT, // type 1101 ReferrerChainEntry::CLIENT_REDIRECT, // type
1021 "", // ip_address 1102 "", // ip_address
1022 initial_url, // referrer_url 1103 initial_url, // referrer_url
1023 initial_url, // referrer_main_frame_url 1104 GURL(), // referrer_main_frame_url
1024 true, // is_retargeting 1105 true, // is_retargeting
1106 std::vector<GURL>(), // server redirects
1025 referrer_chain[1].get()); 1107 referrer_chain[1].get());
1026 VerifyReferrerChainEntry(initial_url, // url 1108 VerifyReferrerChainEntry(initial_url, // url
1109 GURL(), // main_frame_url
1027 ReferrerChainEntry::LANDING_PAGE, // type 1110 ReferrerChainEntry::LANDING_PAGE, // type
1028 test_server_ip, // ip_address 1111 test_server_ip, // ip_address
1029 GURL(), // referrer_url 1112 GURL(), // referrer_url
1030 GURL(), // referrer_main_frame_url 1113 GURL(), // referrer_main_frame_url
1031 false, // is_retargeting 1114 false, // is_retargeting
1115 std::vector<GURL>(), // server redirects
1032 referrer_chain[2].get()); 1116 referrer_chain[2].get());
1033 } 1117 }
1034 1118
1035 // TODO(jialiul): Need to figure out why this test is failing on Windows and 1119 // TODO(jialiul): Need to figure out why this test is failing on Windows and
1036 // flaky on other platforms. 1120 // flaky on other platforms.
1037 #define MAYBE_DownloadViaHTML5FileApi DISABLED_DownloadViaHTML5FileApi 1121 #define MAYBE_DownloadViaHTML5FileApi DISABLED_DownloadViaHTML5FileApi
1038 // Download via html5 file API. 1122 // Download via html5 file API.
1039 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1123 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1040 MAYBE_DownloadViaHTML5FileApi) { 1124 MAYBE_DownloadViaHTML5FileApi) {
1041 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1125 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
(...skipping 23 matching lines...) Expand all
1065 true, // is_user_initiated, 1149 true, // is_user_initiated,
1066 false, // has_committed 1150 false, // has_committed
1067 false, // has_server_redirect 1151 false, // has_server_redirect
1068 nav_map->at(download_url).at(0)); 1152 nav_map->at(download_url).at(0));
1069 VerifyHostToIpMap(); 1153 VerifyHostToIpMap();
1070 1154
1071 ReferrerChain referrer_chain; 1155 ReferrerChain referrer_chain;
1072 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1156 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1073 ASSERT_EQ(2U, referrer_chain.size()); 1157 ASSERT_EQ(2U, referrer_chain.size());
1074 VerifyReferrerChainEntry(download_url, // url 1158 VerifyReferrerChainEntry(download_url, // url
1159 GURL(), // main_frame_url
1075 ReferrerChainEntry::DOWNLOAD_URL, // type 1160 ReferrerChainEntry::DOWNLOAD_URL, // type
1076 "", // ip_address 1161 "", // ip_address
1077 initial_url, // referrer_url 1162 initial_url, // referrer_url
1078 initial_url, // referrer_main_frame_url 1163 GURL(), // referrer_main_frame_url
1079 false, // is_retargeting 1164 false, // is_retargeting
1165 std::vector<GURL>(), // server redirects
1080 referrer_chain[0].get()); 1166 referrer_chain[0].get());
1081 VerifyReferrerChainEntry(initial_url, // url 1167 VerifyReferrerChainEntry(initial_url, // url
1168 GURL(), // main_frame_url
1082 ReferrerChainEntry::LANDING_PAGE, // type 1169 ReferrerChainEntry::LANDING_PAGE, // type
1083 test_server_ip, // ip_address 1170 test_server_ip, // ip_address
1084 GURL(), // referrer_url 1171 GURL(), // referrer_url
1085 GURL(), // referrer_main_frame_url 1172 GURL(), // referrer_main_frame_url
1086 false, // is_retargeting 1173 false, // is_retargeting
1174 std::vector<GURL>(), // server redirects
1087 referrer_chain[1].get()); 1175 referrer_chain[1].get());
1088 } 1176 }
1089 1177
1090 // Click a link in a subframe and start download. 1178 // Click a link in a subframe and start download.
1091 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1179 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1092 SubFrameDirectDownload) { 1180 SubFrameDirectDownload) {
1093 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1181 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1094 ClickTestLink("sub_frame_download_attribution", 1, initial_url); 1182 ClickTestLink("sub_frame_download_attribution", 1, initial_url);
1095 std::string test_name = 1183 std::string test_name =
1096 base::StringPrintf("%s', '%s", "iframe1", "iframe_direct_download"); 1184 base::StringPrintf("%s', '%s", "iframe1", "iframe_direct_download");
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1149 true, // is_user_initiated, 1237 true, // is_user_initiated,
1150 false, // has_committed 1238 false, // has_committed
1151 false, // has_server_redirect 1239 false, // has_server_redirect
1152 nav_map->at(download_url).at(0)); 1240 nav_map->at(download_url).at(0));
1153 VerifyHostToIpMap(); 1241 VerifyHostToIpMap();
1154 1242
1155 ReferrerChain referrer_chain; 1243 ReferrerChain referrer_chain;
1156 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1244 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1157 ASSERT_EQ(4U, referrer_chain.size()); 1245 ASSERT_EQ(4U, referrer_chain.size());
1158 VerifyReferrerChainEntry(download_url, // url 1246 VerifyReferrerChainEntry(download_url, // url
1247 GURL(), // main_frame_url
1159 ReferrerChainEntry::DOWNLOAD_URL, // type 1248 ReferrerChainEntry::DOWNLOAD_URL, // type
1160 test_server_ip, // ip_address 1249 test_server_ip, // ip_address
1161 iframe_url, // referrer_url 1250 iframe_url, // referrer_url
1162 multi_frame_test_url, // referrer_main_frame_url 1251 multi_frame_test_url, // referrer_main_frame_url
1163 false, // is_retargeting 1252 false, // is_retargeting
1253 std::vector<GURL>(), // server redirects
1164 referrer_chain[0].get()); 1254 referrer_chain[0].get());
1165 VerifyReferrerChainEntry(iframe_url, // url 1255 VerifyReferrerChainEntry(iframe_url, // url
1256 multi_frame_test_url, // main_frame_url
1166 ReferrerChainEntry::LANDING_PAGE, // type 1257 ReferrerChainEntry::LANDING_PAGE, // type
1167 test_server_ip, // ip_address 1258 test_server_ip, // ip_address
1168 GURL(), // referrer_url 1259 GURL(), // referrer_url
1169 multi_frame_test_url, // referrer_main_frame_url 1260 multi_frame_test_url, // referrer_main_frame_url
1170 false, // is_retargeting 1261 false, // is_retargeting
1262 std::vector<GURL>(), // server redirects
1171 referrer_chain[1].get()); 1263 referrer_chain[1].get());
1172 VerifyReferrerChainEntry(multi_frame_test_url, // url 1264 VerifyReferrerChainEntry(multi_frame_test_url, // url
1265 GURL(), // main_frame_url
1173 ReferrerChainEntry::CLIENT_REDIRECT, // type 1266 ReferrerChainEntry::CLIENT_REDIRECT, // type
1174 test_server_ip, // ip_address 1267 test_server_ip, // ip_address
1175 initial_url, // referrer_url 1268 initial_url, // referrer_url
1176 initial_url, // referrer_main_frame_url 1269 GURL(), // referrer_main_frame_url
1177 false, // is_retargeting 1270 false, // is_retargeting
1271 std::vector<GURL>(), // server redirects
1178 referrer_chain[2].get()); 1272 referrer_chain[2].get());
1179 VerifyReferrerChainEntry(initial_url, // url 1273 VerifyReferrerChainEntry(initial_url, // url
1274 GURL(), // main_frame_url
1180 ReferrerChainEntry::LANDING_REFERRER, // type 1275 ReferrerChainEntry::LANDING_REFERRER, // type
1181 test_server_ip, // ip_address 1276 test_server_ip, // ip_address
1182 GURL(), // referrer_url 1277 GURL(), // referrer_url
1183 GURL(), // referrer_main_frame_url 1278 GURL(), // referrer_main_frame_url
1184 false, // is_retargeting 1279 false, // is_retargeting
1280 std::vector<GURL>(), // server redirects
1185 referrer_chain[3].get()); 1281 referrer_chain[3].get());
1186 } 1282 }
1187 1283
1188 // Click a link in a subframe and open download in a new tab. 1284 // Click a link in a subframe and open download in a new tab.
1189 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1285 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1190 SubFrameNewTabDownload) { 1286 SubFrameNewTabDownload) {
1191 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1287 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1192 ClickTestLink("sub_frame_download_attribution", 1, initial_url); 1288 ClickTestLink("sub_frame_download_attribution", 1, initial_url);
1193 std::string test_name = 1289 std::string test_name =
1194 base::StringPrintf("%s', '%s", "iframe2", "iframe_new_tab_download"); 1290 base::StringPrintf("%s', '%s", "iframe2", "iframe_new_tab_download");
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1265 false, // is_user_initiated, 1361 false, // is_user_initiated,
1266 false, // has_committed 1362 false, // has_committed
1267 false, // has_server_redirect 1363 false, // has_server_redirect
1268 nav_map->at(download_url).at(0)); 1364 nav_map->at(download_url).at(0));
1269 VerifyHostToIpMap(); 1365 VerifyHostToIpMap();
1270 1366
1271 ReferrerChain referrer_chain; 1367 ReferrerChain referrer_chain;
1272 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1368 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1273 EXPECT_EQ(5U, referrer_chain.size()); 1369 EXPECT_EQ(5U, referrer_chain.size());
1274 VerifyReferrerChainEntry(download_url, // url 1370 VerifyReferrerChainEntry(download_url, // url
1371 GURL(), // main_frame_url
1275 ReferrerChainEntry::DOWNLOAD_URL, // type 1372 ReferrerChainEntry::DOWNLOAD_URL, // type
1276 test_server_ip, // ip_address 1373 test_server_ip, // ip_address
1277 blank_url, // referrer_url 1374 blank_url, // referrer_url
1278 blank_url, // referrer_main_frame_url 1375 GURL(), // referrer_main_frame_url
1279 false, // is_retargeting 1376 false, // is_retargeting
1377 std::vector<GURL>(), // server redirects
1280 referrer_chain[0].get()); 1378 referrer_chain[0].get());
1281 VerifyReferrerChainEntry(blank_url, // url 1379 VerifyReferrerChainEntry(blank_url, // url
1380 GURL(), // main_frame_url
1282 ReferrerChainEntry::CLIENT_REDIRECT, // type 1381 ReferrerChainEntry::CLIENT_REDIRECT, // type
1283 "", // ip_address 1382 "", // ip_address
1284 iframe_retargeting_url, // referrer_url 1383 iframe_retargeting_url, // referrer_url
1285 multi_frame_test_url, // referrer_main_frame_url 1384 multi_frame_test_url, // referrer_main_frame_url
1286 true, // is_retargeting 1385 true, // is_retargeting
1386 std::vector<GURL>(), // server redirects
1287 referrer_chain[1].get()); 1387 referrer_chain[1].get());
1288 VerifyReferrerChainEntry(iframe_retargeting_url, // url 1388 VerifyReferrerChainEntry(iframe_retargeting_url, // url
1389 multi_frame_test_url, // main_frame_url
1289 ReferrerChainEntry::LANDING_PAGE, // type 1390 ReferrerChainEntry::LANDING_PAGE, // type
1290 test_server_ip, // ip_address 1391 test_server_ip, // ip_address
1291 GURL(), // referrer_url 1392 GURL(), // referrer_url
1292 multi_frame_test_url, // referrer_main_frame_url 1393 multi_frame_test_url, // referrer_main_frame_url
1293 false, // is_retargeting 1394 false, // is_retargeting
1395 std::vector<GURL>(), // server redirects
1294 referrer_chain[2].get()); 1396 referrer_chain[2].get());
1295 VerifyReferrerChainEntry(multi_frame_test_url, // url 1397 VerifyReferrerChainEntry(multi_frame_test_url, // url
1398 GURL(), // main_frame_url
1296 ReferrerChainEntry::CLIENT_REDIRECT, // type 1399 ReferrerChainEntry::CLIENT_REDIRECT, // type
1297 test_server_ip, // ip_address 1400 test_server_ip, // ip_address
1298 initial_url, // referrer_url 1401 initial_url, // referrer_url
1299 initial_url, // referrer_main_frame_url 1402 GURL(), // referrer_main_frame_url
1300 false, // is_retargeting 1403 false, // is_retargeting
1404 std::vector<GURL>(), // server redirects
1301 referrer_chain[3].get()); 1405 referrer_chain[3].get());
1302 VerifyReferrerChainEntry(initial_url, // url 1406 VerifyReferrerChainEntry(initial_url, // url
1407 GURL(), // main_frame_url
1303 ReferrerChainEntry::LANDING_REFERRER, // type 1408 ReferrerChainEntry::LANDING_REFERRER, // type
1304 test_server_ip, // ip_address 1409 test_server_ip, // ip_address
1305 GURL(), // referrer_url 1410 GURL(), // referrer_url
1306 GURL(), // referrer_main_frame_url 1411 GURL(), // referrer_main_frame_url
1307 false, // is_retargeting 1412 false, // is_retargeting
1413 std::vector<GURL>(), // server redirects
1308 referrer_chain[4].get()); 1414 referrer_chain[4].get());
1309 } 1415 }
1310 1416
1311 // Click a link which redirects to the landing page, and then click on the 1417 // Click a link which redirects to the landing page, and then click on the
1312 // landing page to trigger download. 1418 // landing page to trigger download.
1313 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, CompleteReferrerChain) { 1419 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, CompleteReferrerChain) {
1314 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1420 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1315 ClickTestLink("complete_referrer_chain", 2, initial_url); 1421 ClickTestLink("complete_referrer_chain", 2, initial_url);
1316 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); 1422 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL);
1317 GURL landing_url = embedded_test_server()->GetURL(kLandingURL); 1423 GURL landing_url = embedded_test_server()->GetURL(kLandingURL);
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
1356 true, // is_user_initiated, 1462 true, // is_user_initiated,
1357 false, // has_committed 1463 false, // has_committed
1358 false, // has_server_redirect 1464 false, // has_server_redirect
1359 nav_map->at(download_url).at(0)); 1465 nav_map->at(download_url).at(0));
1360 VerifyHostToIpMap(); 1466 VerifyHostToIpMap();
1361 1467
1362 ReferrerChain referrer_chain; 1468 ReferrerChain referrer_chain;
1363 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1469 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1364 EXPECT_EQ(4U, referrer_chain.size()); 1470 EXPECT_EQ(4U, referrer_chain.size());
1365 VerifyReferrerChainEntry(download_url, // url 1471 VerifyReferrerChainEntry(download_url, // url
1472 GURL(), // main_frame_url
1366 ReferrerChainEntry::DOWNLOAD_URL, // type 1473 ReferrerChainEntry::DOWNLOAD_URL, // type
1367 test_server_ip, // ip_address 1474 test_server_ip, // ip_address
1368 landing_url, // referrer_url 1475 landing_url, // referrer_url
1369 landing_url, // referrer_main_frame_url 1476 GURL(), // referrer_main_frame_url
1370 false, // is_retargeting 1477 false, // is_retargeting
1478 std::vector<GURL>(), // server redirects
1371 referrer_chain[0].get()); 1479 referrer_chain[0].get());
1372 VerifyReferrerChainEntry(landing_url, // url 1480 VerifyReferrerChainEntry(landing_url, // url
1481 GURL(), // main_frame_url
1373 ReferrerChainEntry::LANDING_PAGE, // type 1482 ReferrerChainEntry::LANDING_PAGE, // type
1374 test_server_ip, // ip_address 1483 test_server_ip, // ip_address
1375 redirect_url, // referrer_url 1484 redirect_url, // referrer_url
1376 redirect_url, // referrer_main_frame_url 1485 GURL(), // referrer_main_frame_url
1377 false, // is_retargeting 1486 false, // is_retargeting
1487 std::vector<GURL>(), // server redirects
1378 referrer_chain[1].get()); 1488 referrer_chain[1].get());
1379 VerifyReferrerChainEntry(redirect_url, // url 1489 VerifyReferrerChainEntry(redirect_url, // url
1490 GURL(), // main_frame_url
1380 ReferrerChainEntry::CLIENT_REDIRECT, // type 1491 ReferrerChainEntry::CLIENT_REDIRECT, // type
1381 test_server_ip, // ip_address 1492 test_server_ip, // ip_address
1382 initial_url, // referrer_url 1493 initial_url, // referrer_url
1383 initial_url, // referrer_main_frame_url 1494 GURL(), // referrer_main_frame_url
1384 false, // is_retargeting 1495 false, // is_retargeting
1496 std::vector<GURL>(), // server redirects
1385 referrer_chain[2].get()); 1497 referrer_chain[2].get());
1386 VerifyReferrerChainEntry( 1498 VerifyReferrerChainEntry(
1387 initial_url, // url 1499 initial_url, // url
1500 GURL(), // main_frame_url
1388 ReferrerChainEntry::LANDING_REFERRER, // type 1501 ReferrerChainEntry::LANDING_REFERRER, // type
1389 test_server_ip, // ip_address 1502 test_server_ip, // ip_address
1390 GURL(), // referrer_url is empty since this beyonds 2 clicks. 1503 GURL(), // referrer_url is empty since this beyonds 2 clicks.
1391 GURL(), // referrer_main_frame_url is empty for the same reason. 1504 GURL(), // referrer_main_frame_url is empty for the same reason.
1392 false, // is_retargeting 1505 false, // is_retargeting
1506 std::vector<GURL>(), // server redirects
1393 referrer_chain[3].get()); 1507 referrer_chain[3].get());
1394 } 1508 }
1395 1509
1396 // Click three links before reaching download. 1510 // Click three links before reaching download.
1397 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1511 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1398 ReferrerAttributionWithinTwoUserGestures) { 1512 ReferrerAttributionWithinTwoUserGestures) {
1399 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1513 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1400 ClickTestLink("attribution_within_two_user_gestures", 1, initial_url); 1514 ClickTestLink("attribution_within_two_user_gestures", 1, initial_url);
1401 GURL page_before_landing_referrer_url = 1515 GURL page_before_landing_referrer_url =
1402 embedded_test_server()->GetURL(kPageBeforeLandingReferrerURL); 1516 embedded_test_server()->GetURL(kPageBeforeLandingReferrerURL);
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
1456 true, // is_user_initiated, 1570 true, // is_user_initiated,
1457 false, // has_committed 1571 false, // has_committed
1458 false, // has_server_redirect 1572 false, // has_server_redirect
1459 nav_map->at(download_url).at(0)); 1573 nav_map->at(download_url).at(0));
1460 VerifyHostToIpMap(); 1574 VerifyHostToIpMap();
1461 1575
1462 ReferrerChain referrer_chain; 1576 ReferrerChain referrer_chain;
1463 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1577 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1464 EXPECT_EQ(3U, referrer_chain.size()); 1578 EXPECT_EQ(3U, referrer_chain.size());
1465 VerifyReferrerChainEntry(download_url, // url 1579 VerifyReferrerChainEntry(download_url, // url
1580 GURL(), // main_frame_url
1466 ReferrerChainEntry::DOWNLOAD_URL, // type 1581 ReferrerChainEntry::DOWNLOAD_URL, // type
1467 test_server_ip, // ip_address 1582 test_server_ip, // ip_address
1468 landing_url, // referrer_url 1583 landing_url, // referrer_url
1469 landing_url, // referrer_main_frame_url 1584 GURL(), // referrer_main_frame_url
1470 false, // is_retargeting 1585 false, // is_retargeting
1586 std::vector<GURL>(), // server redirects
1471 referrer_chain[0].get()); 1587 referrer_chain[0].get());
1472 VerifyReferrerChainEntry(landing_url, // url 1588 VerifyReferrerChainEntry(landing_url, // url
1589 GURL(), // main_frame_url
1473 ReferrerChainEntry::LANDING_PAGE, // type 1590 ReferrerChainEntry::LANDING_PAGE, // type
1474 test_server_ip, // ip_address 1591 test_server_ip, // ip_address
1475 landing_referrer_url, // referrer_url 1592 landing_referrer_url, // referrer_url
1476 landing_referrer_url, // referrer_main_frame_url 1593 GURL(), // referrer_main_frame_url
1477 false, // is_retargeting 1594 false, // is_retargeting
1595 std::vector<GURL>(), // server redirects
1478 referrer_chain[1].get()); 1596 referrer_chain[1].get());
1479 VerifyReferrerChainEntry( 1597 VerifyReferrerChainEntry(
1480 landing_referrer_url, // url 1598 landing_referrer_url, // url
1599 GURL(), // main_frame_url
1481 ReferrerChainEntry::LANDING_REFERRER, // type 1600 ReferrerChainEntry::LANDING_REFERRER, // type
1482 test_server_ip, // ip_address 1601 test_server_ip, // ip_address
1483 GURL(), // referrer_url is empty since this beyonds 2 clicks. 1602 GURL(), // referrer_url is empty since this beyonds 2 clicks.
1484 GURL(), // referrer_main_frame_url is empty for the same reason. 1603 GURL(), // referrer_main_frame_url is empty for the same reason.
1485 false, // is_retargeting 1604 false, // is_retargeting
1605 std::vector<GURL>(), // server redirects
1486 referrer_chain[2].get()); 1606 referrer_chain[2].get());
1487 // page_before_landing_referrer_url is not in referrer chain. 1607 // page_before_landing_referrer_url is not in referrer chain.
1488 } 1608 }
1489 1609
1490 // Click a link which redirects to a PPAPI landing page. 1610 // Click a link which redirects to a PPAPI landing page.
1491 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1611 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1492 PPAPIDownloadWithUserGestureOnHostingFrame) { 1612 PPAPIDownloadWithUserGestureOnHostingFrame) {
1493 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1613 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1494 ClickTestLink("complete_referrer_chain", 2, initial_url); 1614 ClickTestLink("complete_referrer_chain", 2, initial_url);
1495 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); 1615 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
1530 nav_map->at(landing_url).at(0)); 1650 nav_map->at(landing_url).at(0));
1531 VerifyHostToIpMap(); 1651 VerifyHostToIpMap();
1532 1652
1533 ReferrerChain referrer_chain; 1653 ReferrerChain referrer_chain;
1534 IdentifyReferrerChainForPPAPIDownload( 1654 IdentifyReferrerChainForPPAPIDownload(
1535 landing_url, 1655 landing_url,
1536 browser()->tab_strip_model()->GetActiveWebContents(), 1656 browser()->tab_strip_model()->GetActiveWebContents(),
1537 &referrer_chain); 1657 &referrer_chain);
1538 EXPECT_EQ(3U, referrer_chain.size()); 1658 EXPECT_EQ(3U, referrer_chain.size());
1539 VerifyReferrerChainEntry(landing_url, // url 1659 VerifyReferrerChainEntry(landing_url, // url
1660 GURL(), // main_frame_url
1540 ReferrerChainEntry::LANDING_PAGE, // type 1661 ReferrerChainEntry::LANDING_PAGE, // type
1541 test_server_ip, // ip_address 1662 test_server_ip, // ip_address
1542 redirect_url, // referrer_url 1663 redirect_url, // referrer_url
1543 redirect_url, // referrer_main_frame_url 1664 GURL(), // referrer_main_frame_url
1544 false, // is_retargeting 1665 false, // is_retargeting
1666 std::vector<GURL>(), // server redirects
1545 referrer_chain[0].get()); 1667 referrer_chain[0].get());
1546 VerifyReferrerChainEntry(redirect_url, // url 1668 VerifyReferrerChainEntry(redirect_url, // url
1669 GURL(), // main_frame_url
1547 ReferrerChainEntry::CLIENT_REDIRECT, // type 1670 ReferrerChainEntry::CLIENT_REDIRECT, // type
1548 test_server_ip, // ip_address 1671 test_server_ip, // ip_address
1549 initial_url, // referrer_url 1672 initial_url, // referrer_url
1550 initial_url, // referrer_main_frame_url 1673 GURL(), // referrer_main_frame_url
1551 false, // is_retargeting 1674 false, // is_retargeting
1675 std::vector<GURL>(), // server redirects
1552 referrer_chain[1].get()); 1676 referrer_chain[1].get());
1553 VerifyReferrerChainEntry( 1677 VerifyReferrerChainEntry(
1554 initial_url, // url 1678 initial_url, // url
1679 GURL(), // main_frame_url
1555 ReferrerChainEntry::LANDING_REFERRER, // type 1680 ReferrerChainEntry::LANDING_REFERRER, // type
1556 test_server_ip, // ip_address 1681 test_server_ip, // ip_address
1557 GURL(), // referrer_url is empty since this beyonds 2 clicks. 1682 GURL(), // referrer_url is empty since this beyonds 2 clicks.
1558 GURL(), // referrer_main_frame_url is empty for the same reason. 1683 GURL(), // referrer_main_frame_url is empty for the same reason.
1559 false, // is_retargeting 1684 false, // is_retargeting
1685 std::vector<GURL>(), // server redirects
1560 referrer_chain[2].get()); 1686 referrer_chain[2].get());
1561 } 1687 }
1562 1688
1563 // Click a link which redirects to a page that triggers PPAPI download without 1689 // Click a link which redirects to a page that triggers PPAPI download without
1564 // user gesture (a.k.a not a landing page). 1690 // user gesture (a.k.a not a landing page).
1565 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1691 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1566 PPAPIDownloadWithoutUserGestureOnHostingFrame) { 1692 PPAPIDownloadWithoutUserGestureOnHostingFrame) {
1567 GURL landing_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1693 GURL landing_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1568 ClickTestLink("complete_referrer_chain", 2, landing_url); 1694 ClickTestLink("complete_referrer_chain", 2, landing_url);
1569 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL); 1695 GURL redirect_url = embedded_test_server()->GetURL(kRedirectToLandingURL);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1602 nav_map->at(hosting_url).at(0)); 1728 nav_map->at(hosting_url).at(0));
1603 VerifyHostToIpMap(); 1729 VerifyHostToIpMap();
1604 1730
1605 ReferrerChain referrer_chain; 1731 ReferrerChain referrer_chain;
1606 IdentifyReferrerChainForPPAPIDownload( 1732 IdentifyReferrerChainForPPAPIDownload(
1607 hosting_url, 1733 hosting_url,
1608 browser()->tab_strip_model()->GetActiveWebContents(), 1734 browser()->tab_strip_model()->GetActiveWebContents(),
1609 &referrer_chain); 1735 &referrer_chain);
1610 EXPECT_EQ(3U, referrer_chain.size()); 1736 EXPECT_EQ(3U, referrer_chain.size());
1611 VerifyReferrerChainEntry(hosting_url, // url 1737 VerifyReferrerChainEntry(hosting_url, // url
1738 GURL(), // main_frame_url
1612 ReferrerChainEntry::CLIENT_REDIRECT, // type 1739 ReferrerChainEntry::CLIENT_REDIRECT, // type
1613 test_server_ip, // ip_address 1740 test_server_ip, // ip_address
1614 redirect_url, // referrer_url 1741 redirect_url, // referrer_url
1615 redirect_url, // referrer_main_frame_url 1742 GURL(), // referrer_main_frame_url
1616 false, // is_retargeting 1743 false, // is_retargeting
1744 std::vector<GURL>(), // server redirects
1617 referrer_chain[0].get()); 1745 referrer_chain[0].get());
1618 VerifyReferrerChainEntry(redirect_url, // url 1746 VerifyReferrerChainEntry(redirect_url, // url
1747 GURL(), // main_frame_url
1619 ReferrerChainEntry::CLIENT_REDIRECT, // type 1748 ReferrerChainEntry::CLIENT_REDIRECT, // type
1620 test_server_ip, // ip_address 1749 test_server_ip, // ip_address
1621 landing_url, // referrer_url 1750 landing_url, // referrer_url
1622 landing_url, // referrer_main_frame_url 1751 GURL(), // referrer_main_frame_url
1623 false, // is_retargeting 1752 false, // is_retargeting
1753 std::vector<GURL>(), // server redirects
1624 referrer_chain[1].get()); 1754 referrer_chain[1].get());
1625 VerifyReferrerChainEntry(landing_url, // url 1755 VerifyReferrerChainEntry(landing_url, // url
1756 GURL(), // main_frame_url
1626 ReferrerChainEntry::LANDING_PAGE, // type 1757 ReferrerChainEntry::LANDING_PAGE, // type
1627 test_server_ip, // ip_address 1758 test_server_ip, // ip_address
1628 GURL(), // no more referrer before landing_url 1759 GURL(), // no more referrer before landing_url
1629 GURL(), 1760 GURL(),
1630 false, // is_retargeting 1761 false, // is_retargeting
1762 std::vector<GURL>(), // server redirects
1631 referrer_chain[2].get()); 1763 referrer_chain[2].get());
1632 } 1764 }
1633 1765
1634 // Server-side redirect. 1766 // Server-side redirect.
1635 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, ServerRedirect) { 1767 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, ServerRedirect) {
1636 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1768 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1637 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 1769 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
1638 GURL request_url = 1770 GURL request_url =
1639 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec()); 1771 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec());
1640 ui_test_utils::NavigateToURL(browser(), request_url); 1772 ui_test_utils::NavigateToURL(browser(), request_url);
(...skipping 17 matching lines...) Expand all
1658 download_url, // destination_url 1790 download_url, // destination_url
1659 true, // is_user_initiated, 1791 true, // is_user_initiated,
1660 false, // has_committed 1792 false, // has_committed
1661 true, // has_server_redirect 1793 true, // has_server_redirect
1662 nav_map->at(download_url).at(0)); 1794 nav_map->at(download_url).at(0));
1663 1795
1664 ReferrerChain referrer_chain; 1796 ReferrerChain referrer_chain;
1665 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1797 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1666 ASSERT_EQ(1U, referrer_chain.size()); 1798 ASSERT_EQ(1U, referrer_chain.size());
1667 VerifyReferrerChainEntry(download_url, // url 1799 VerifyReferrerChainEntry(download_url, // url
1800 GURL(), // main_frame_url
1668 ReferrerChainEntry::DOWNLOAD_URL, // type 1801 ReferrerChainEntry::DOWNLOAD_URL, // type
1669 test_server_ip, // ip_address 1802 test_server_ip, // ip_address
1670 GURL(), // referrer_url 1803 GURL(), // referrer_url
1671 GURL(), // referrer_main_frame_url 1804 GURL(), // referrer_main_frame_url
1672 false, // is_retargeting 1805 false, // is_retargeting
1806 {request_url, download_url}, // server redirects
1673 referrer_chain[0].get()); 1807 referrer_chain[0].get());
1674 } 1808 }
1675 1809
1810 // 2 consecutive server-side redirects.
1811 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, TwoServerRedirects) {
1812 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1813 GURL destination_url = embedded_test_server()->GetURL(kDownloadItemURL);
1814 GURL redirect_url =
1815 embedded_test_server()->GetURL("/server-redirect?" +
1816 destination_url.spec());
1817 GURL request_url =
1818 embedded_test_server()->GetURL("/server-redirect?" +
1819 redirect_url.spec());
1820 ui_test_utils::NavigateToURL(browser(), request_url);
1821 std::string test_server_ip(embedded_test_server()->host_port_pair().host());
1822 auto nav_map = navigation_map();
1823 ASSERT_TRUE(nav_map);
1824 ASSERT_EQ(2U, nav_map->size());
1825 ASSERT_EQ(1U, nav_map->at(destination_url).size());
1826 ASSERT_EQ(1U, nav_map->at(initial_url).size());
1827 VerifyNavigationEvent(GURL(), // source_url
1828 GURL(), // source_main_frame_url
1829 initial_url, // original_request_url
1830 initial_url, // destination_url
1831 true, // is_user_initiated,
1832 true, // has_committed
1833 false, // has_server_redirect
1834 nav_map->at(initial_url).at(0));
1835 VerifyNavigationEvent(GURL(), // source_url
1836 GURL(), // source_main_frame_url
1837 request_url, // original_request_url
1838 destination_url, // destination_url
1839 true, // is_user_initiated,
1840 false, // has_committed
1841 true, // has_server_redirect
1842 nav_map->at(destination_url).at(0));
1843 const auto redirect_vector =
1844 nav_map->at(destination_url).at(0).server_redirect_urls;
1845 ASSERT_EQ(2U, redirect_vector.size());
1846 EXPECT_EQ(redirect_url, redirect_vector.at(0));
1847 EXPECT_EQ(destination_url, redirect_vector.at(1));
1848
1849 ReferrerChain referrer_chain;
1850 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1851 ASSERT_EQ(1U, referrer_chain.size());
1852 VerifyReferrerChainEntry(destination_url, // url
1853 GURL(), // main_frame_url
1854 ReferrerChainEntry::DOWNLOAD_URL, // type
1855 test_server_ip, // ip_address
1856 GURL(), // referrer_url
1857 GURL(), // referrer_main_frame_url
1858 false, // is_retargeting
1859 {request_url, redirect_url, destination_url},
1860 referrer_chain[0].get());
1861 }
1862
1676 // Retargeting immediately followed by server-side redirect. 1863 // Retargeting immediately followed by server-side redirect.
1677 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, 1864 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest,
1678 RetargetingAndServerRedirect) { 1865 RetargetingAndServerRedirect) {
1679 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1866 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1680 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL); 1867 GURL download_url = embedded_test_server()->GetURL(kDownloadItemURL);
1681 GURL request_url = 1868 GURL request_url =
1682 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec()); 1869 embedded_test_server()->GetURL("/server-redirect?" + download_url.spec());
1683 ClickTestLink("new_tab_download_with_server_redirect", 1, initial_url); 1870 ClickTestLink("new_tab_download_with_server_redirect", 1, initial_url);
1684 std::string test_server_ip(embedded_test_server()->host_port_pair().host()); 1871 std::string test_server_ip(embedded_test_server()->host_port_pair().host());
1685 auto nav_map = navigation_map(); 1872 auto nav_map = navigation_map();
(...skipping 24 matching lines...) Expand all
1710 download_url, // destination_url 1897 download_url, // destination_url
1711 false, // is_user_initiated, 1898 false, // is_user_initiated,
1712 false, // has_committed 1899 false, // has_committed
1713 true, // has_server_redirect 1900 true, // has_server_redirect
1714 nav_map->at(download_url).at(0)); 1901 nav_map->at(download_url).at(0));
1715 1902
1716 ReferrerChain referrer_chain; 1903 ReferrerChain referrer_chain;
1717 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain); 1904 IdentifyReferrerChainForDownload(GetDownload(), &referrer_chain);
1718 ASSERT_EQ(2U, referrer_chain.size()); 1905 ASSERT_EQ(2U, referrer_chain.size());
1719 VerifyReferrerChainEntry(download_url, // url 1906 VerifyReferrerChainEntry(download_url, // url
1907 GURL(), // main_frame_url
1720 ReferrerChainEntry::DOWNLOAD_URL, // type 1908 ReferrerChainEntry::DOWNLOAD_URL, // type
1721 test_server_ip, // ip_address 1909 test_server_ip, // ip_address
1722 initial_url, // referrer_url 1910 initial_url, // referrer_url
1723 initial_url, // referrer_main_frame_url 1911 GURL(), // referrer_main_frame_url
1724 true, // is_retargeting 1912 true, // is_retargeting
1913 {request_url, download_url}, // server redirects
1725 referrer_chain[0].get()); 1914 referrer_chain[0].get());
1726 VerifyReferrerChainEntry(initial_url, // url 1915 VerifyReferrerChainEntry(initial_url, // url
1916 GURL(), // main_frame_url
1727 ReferrerChainEntry::LANDING_PAGE, // type 1917 ReferrerChainEntry::LANDING_PAGE, // type
1728 test_server_ip, // ip_address 1918 test_server_ip, // ip_address
1729 GURL(), // referrer_url 1919 GURL(), // referrer_url
1730 GURL(), // referrer_main_frame_url 1920 GURL(), // referrer_main_frame_url
1731 false, // is_retargeting 1921 false, // is_retargeting
1922 std::vector<GURL>(), // server redirects
1732 referrer_chain[1].get()); 1923 referrer_chain[1].get());
1733 } 1924 }
1734 1925
1735 // host_to_ip_map_ size should increase by one after a new navigation. 1926 // host_to_ip_map_ size should increase by one after a new navigation.
1736 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, AddIPMapping) { 1927 IN_PROC_BROWSER_TEST_F(SBNavigationObserverBrowserTest, AddIPMapping) {
1737 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL); 1928 GURL initial_url = embedded_test_server()->GetURL(kSingleFrameTestURL);
1738 auto ip_map = host_to_ip_map(); 1929 auto ip_map = host_to_ip_map();
1739 std::string test_server_host(embedded_test_server()->base_url().host()); 1930 std::string test_server_host(embedded_test_server()->base_url().host());
1740 ip_map->clear(); 1931 ip_map->clear();
1741 ip_map->insert( 1932 ip_map->insert(
(...skipping 19 matching lines...) Expand all
1761 yesterday, embedded_test_server()->host_port_pair().host())); 1952 yesterday, embedded_test_server()->host_port_pair().host()));
1762 ASSERT_EQ(1U, ip_map->at(test_server_host).size()); 1953 ASSERT_EQ(1U, ip_map->at(test_server_host).size());
1763 ClickTestLink("direct_download", 1, initial_url); 1954 ClickTestLink("direct_download", 1, initial_url);
1764 EXPECT_EQ(1U, ip_map->at(test_server_host).size()); 1955 EXPECT_EQ(1U, ip_map->at(test_server_host).size());
1765 EXPECT_EQ(embedded_test_server()->host_port_pair().host(), 1956 EXPECT_EQ(embedded_test_server()->host_port_pair().host(),
1766 ip_map->at(test_server_host).back().ip); 1957 ip_map->at(test_server_host).back().ip);
1767 EXPECT_NE(yesterday, ip_map->at(test_server_host).front().timestamp); 1958 EXPECT_NE(yesterday, ip_map->at(test_server_host).front().timestamp);
1768 } 1959 }
1769 1960
1770 } // namespace safe_browsing 1961 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698