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

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

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

Powered by Google App Engine
This is Rietveld 408576698