| OLD | NEW | 
|---|
| 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 110 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 121   base::Closure quit_waiting_callback_; | 121   base::Closure quit_waiting_callback_; | 
| 122   DownloadManager* manager_; | 122   DownloadManager* manager_; | 
| 123   std::vector<DownloadItem*> items_seen_; | 123   std::vector<DownloadItem*> items_seen_; | 
| 124 | 124 | 
| 125   DISALLOW_COPY_AND_ASSIGN(DownloadItemCreatedObserver); | 125   DISALLOW_COPY_AND_ASSIGN(DownloadItemCreatedObserver); | 
| 126 }; | 126 }; | 
| 127 | 127 | 
| 128 // Test class to help create SafeBrowsingNavigationObservers for each | 128 // Test class to help create SafeBrowsingNavigationObservers for each | 
| 129 // WebContents before they are actually installed through AttachTabHelper. | 129 // WebContents before they are actually installed through AttachTabHelper. | 
| 130 class TestNavigationObserverManager | 130 class TestNavigationObserverManager | 
| 131     : public SafeBrowsingNavigationObserverManager { | 131     : public SafeBrowsingNavigationObserverManager, | 
|  | 132       public content::NotificationObserver { | 
| 132  public: | 133  public: | 
| 133   TestNavigationObserverManager() : SafeBrowsingNavigationObserverManager() { | 134   TestNavigationObserverManager() : SafeBrowsingNavigationObserverManager() { | 
| 134     registrar_.Add(this, chrome::NOTIFICATION_TAB_ADDED, | 135     registrar_.Add(this, chrome::NOTIFICATION_TAB_ADDED, | 
| 135                    content::NotificationService::AllSources()); | 136                    content::NotificationService::AllSources()); | 
| 136   } | 137   } | 
| 137 | 138 | 
| 138   void Observe(int type, | 139   void Observe(int type, | 
| 139                const content::NotificationSource& source, | 140                const content::NotificationSource& source, | 
| 140                const content::NotificationDetails& details) override { | 141                const content::NotificationDetails& details) override { | 
| 141     if (type == chrome::NOTIFICATION_TAB_ADDED) { | 142     if (type == chrome::NOTIFICATION_TAB_ADDED) { | 
| 142       content::WebContents* dest_content = | 143       content::WebContents* dest_content = | 
| 143           content::Details<content::WebContents>(details).ptr(); | 144           content::Details<content::WebContents>(details).ptr(); | 
| 144       DCHECK(dest_content); | 145       DCHECK(dest_content); | 
| 145       observer_list_.push_back( | 146       observer_list_.push_back( | 
| 146           new SafeBrowsingNavigationObserver(dest_content, this)); | 147           new SafeBrowsingNavigationObserver(dest_content, this)); | 
| 147       DCHECK(observer_list_.back()); | 148       DCHECK(observer_list_.back()); | 
| 148     } else if (type == chrome::NOTIFICATION_RETARGETING) { |  | 
| 149       RecordRetargeting(details); |  | 
| 150     } | 149     } | 
| 151   } | 150   } | 
| 152 | 151 | 
| 153  protected: | 152  protected: | 
| 154   ~TestNavigationObserverManager() override { observer_list_.clear(); } | 153   ~TestNavigationObserverManager() override { observer_list_.clear(); } | 
| 155 | 154 | 
| 156  private: | 155  private: | 
| 157   std::vector<SafeBrowsingNavigationObserver*> observer_list_; | 156   std::vector<SafeBrowsingNavigationObserver*> observer_list_; | 
|  | 157 | 
|  | 158   content::NotificationRegistrar registrar_; | 
| 158 }; | 159 }; | 
| 159 | 160 | 
| 160 class SBNavigationObserverBrowserTest : public InProcessBrowserTest { | 161 class SBNavigationObserverBrowserTest : public InProcessBrowserTest { | 
| 161  public: | 162  public: | 
| 162   SBNavigationObserverBrowserTest() {} | 163   SBNavigationObserverBrowserTest() {} | 
| 163 | 164 | 
| 164   void SetUpOnMainThread() override { | 165   void SetUpOnMainThread() override { | 
| 165     // Disable Safe Browsing service since it is irrelevant to this test. | 166     // Disable Safe Browsing service since it is irrelevant to this test. | 
| 166     browser()->profile()->GetPrefs()->SetBoolean(prefs::kSafeBrowsingEnabled, | 167     browser()->profile()->GetPrefs()->SetBoolean(prefs::kSafeBrowsingEnabled, | 
| 167                                                  false); | 168                                                  false); | 
| (...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 575   ASSERT_TRUE(nav_list); | 576   ASSERT_TRUE(nav_list); | 
| 576   ASSERT_EQ(3U, nav_list->Size()); | 577   ASSERT_EQ(3U, nav_list->Size()); | 
| 577   VerifyNavigationEvent(GURL(),       // source_url | 578   VerifyNavigationEvent(GURL(),       // source_url | 
| 578                         GURL(),       // source_main_frame_url | 579                         GURL(),       // source_main_frame_url | 
| 579                         initial_url,  // original_request_url | 580                         initial_url,  // original_request_url | 
| 580                         initial_url,  // destination_url | 581                         initial_url,  // destination_url | 
| 581                         true,         // is_user_initiated, | 582                         true,         // is_user_initiated, | 
| 582                         true,         // has_committed | 583                         true,         // has_committed | 
| 583                         false,        // has_server_redirect | 584                         false,        // has_server_redirect | 
| 584                         nav_list->Get(0)); | 585                         nav_list->Get(0)); | 
| 585   // The next NavigationEvent was obtained from NOIFICATION_RETARGETING. | 586   // The next NavigationEvent opens a new tab. | 
| 586   // TODO(jialiul): After https://crbug.com/651895 is fixed, we'll no longer |  | 
| 587   // listen to NOTIFICATION_RETARGETING, hence only one NavigationEvent will |  | 
| 588   // be observed with the true initator URL. This applies to other new tab |  | 
| 589   // download, and target blank download test cases too. |  | 
| 590   VerifyNavigationEvent(initial_url,   // source_url | 587   VerifyNavigationEvent(initial_url,   // source_url | 
| 591                         initial_url,   // source_main_frame_url | 588                         initial_url,   // source_main_frame_url | 
| 592                         download_url,  // original_request_url | 589                         download_url,  // original_request_url | 
| 593                         download_url,  // destination_url | 590                         download_url,  // destination_url | 
| 594                         true,          // is_user_initiated, | 591                         true,          // is_user_initiated, | 
| 595                         false,         // has_committed | 592                         false,         // has_committed | 
| 596                         false,         // has_server_redirect | 593                         false,         // has_server_redirect | 
| 597                         nav_list->Get(1)); | 594                         nav_list->Get(1)); | 
| 598   // This one is the actual navigation which triggers download. | 595   // This one is the actual navigation which triggers download. | 
| 599   VerifyNavigationEvent(GURL(),        // source_url | 596   VerifyNavigationEvent(GURL(),        // source_url | 
| (...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 714   ASSERT_TRUE(nav_list); | 711   ASSERT_TRUE(nav_list); | 
| 715   ASSERT_EQ(4U, nav_list->Size()); | 712   ASSERT_EQ(4U, nav_list->Size()); | 
| 716   VerifyNavigationEvent(GURL(),       // source_url | 713   VerifyNavigationEvent(GURL(),       // source_url | 
| 717                         GURL(),       // source_main_frame_url | 714                         GURL(),       // source_main_frame_url | 
| 718                         initial_url,  // original_request_url | 715                         initial_url,  // original_request_url | 
| 719                         initial_url,  // destination_url | 716                         initial_url,  // destination_url | 
| 720                         true,         // is_user_initiated, | 717                         true,         // is_user_initiated, | 
| 721                         true,         // has_committed | 718                         true,         // has_committed | 
| 722                         false,        // has_server_redirect | 719                         false,        // has_server_redirect | 
| 723                         nav_list->Get(0)); | 720                         nav_list->Get(0)); | 
| 724   // TODO(jialiul): After https://crbug.com/651895 is fixed, we'll no longer |  | 
| 725   // listen to NOTIFICATION_RETARGETING, hence only two NavigationEvents will |  | 
| 726   // be observed with the true initator URL. |  | 
| 727   VerifyNavigationEvent(initial_url,   // source_url | 721   VerifyNavigationEvent(initial_url,   // source_url | 
| 728                         initial_url,   // source_main_frame_url | 722                         initial_url,   // source_main_frame_url | 
| 729                         redirect_url,  // original_request_url | 723                         redirect_url,  // original_request_url | 
| 730                         redirect_url,  // destination_url | 724                         redirect_url,  // destination_url | 
| 731                         true,          // is_user_initiated, | 725                         true,          // is_user_initiated, | 
| 732                         false,         // has_committed | 726                         false,         // has_committed | 
| 733                         false,         // has_server_redirect | 727                         false,         // has_server_redirect | 
| 734                         nav_list->Get(1)); | 728                         nav_list->Get(1)); | 
| 735   VerifyNavigationEvent(GURL(),        // source_url | 729   VerifyNavigationEvent(GURL(),        // source_url | 
| 736                         GURL(),        // source_main_frame_url | 730                         GURL(),        // source_main_frame_url | 
| (...skipping 1228 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 1965                            GURL(),       // main_frame_url | 1959                            GURL(),       // main_frame_url | 
| 1966                            ReferrerChainEntry::CLIENT_REDIRECT,  // type | 1960                            ReferrerChainEntry::CLIENT_REDIRECT,  // type | 
| 1967                            test_server_ip,                       // ip_address | 1961                            test_server_ip,                       // ip_address | 
| 1968                            GURL(),                               // referrer_url | 1962                            GURL(),                               // referrer_url | 
| 1969                            GURL(),               // referrer_main_frame_url | 1963                            GURL(),               // referrer_main_frame_url | 
| 1970                            false,                // is_retargeting | 1964                            false,                // is_retargeting | 
| 1971                            std::vector<GURL>(),  // server redirects | 1965                            std::vector<GURL>(),  // server redirects | 
| 1972                            referrer_chain.Get(0)); | 1966                            referrer_chain.Get(0)); | 
| 1973 } | 1967 } | 
| 1974 }  // namespace safe_browsing | 1968 }  // namespace safe_browsing | 
| OLD | NEW | 
|---|