Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_SAFE_BROWSING_CLIENT_SIDE_DETECTION_HOST_H_ | 5 #ifndef CHROME_BROWSER_SAFE_BROWSING_CLIENT_SIDE_DETECTION_HOST_H_ |
| 6 #define CHROME_BROWSER_SAFE_BROWSING_CLIENT_SIDE_DETECTION_HOST_H_ | 6 #define CHROME_BROWSER_SAFE_BROWSING_CLIENT_SIDE_DETECTION_HOST_H_ |
| 7 | 7 |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 72 // Used for testing. | 72 // Used for testing. |
| 73 void set_safe_browsing_managers( | 73 void set_safe_browsing_managers( |
| 74 SafeBrowsingUIManager* ui_manager, | 74 SafeBrowsingUIManager* ui_manager, |
| 75 SafeBrowsingDatabaseManager* database_manager); | 75 SafeBrowsingDatabaseManager* database_manager); |
| 76 | 76 |
| 77 private: | 77 private: |
| 78 friend class ClientSideDetectionHostTest; | 78 friend class ClientSideDetectionHostTest; |
| 79 class ShouldClassifyUrlRequest; | 79 class ShouldClassifyUrlRequest; |
| 80 friend class ShouldClassifyUrlRequest; | 80 friend class ShouldClassifyUrlRequest; |
| 81 | 81 |
| 82 // These methods are called when pre-classification checks are done for | |
| 83 // the phishing and malware clasifiers. | |
| 84 void OnPhishingPreClassificationDone(bool should_classify); | |
| 85 void OnMalwarePreClassificationDone(bool should_classify); | |
| 86 | |
| 82 // Verdict is an encoded ClientPhishingRequest protocol message. | 87 // Verdict is an encoded ClientPhishingRequest protocol message. |
| 83 void OnPhishingDetectionDone(const std::string& verdict); | 88 void OnPhishingDetectionDone(const std::string& verdict); |
| 84 | 89 |
| 85 // Callback that is called when the server ping back is | 90 // Callback that is called when the server ping back is |
| 86 // done. Display an interstitial if |is_phishing| is true. | 91 // done. Display an interstitial if |is_phishing| is true. |
| 87 // Otherwise, we do nothing. Called in UI thread. | 92 // Otherwise, we do nothing. Called in UI thread. |
| 88 void MaybeShowPhishingWarning(GURL phishing_url, bool is_phishing); | 93 void MaybeShowPhishingWarning(GURL phishing_url, bool is_phishing); |
| 89 | 94 |
| 90 // Callback that is called when the malware IP server ping back is | 95 // Callback that is called when the malware IP server ping back is |
| 91 // done. Display an interstitial if |is_malware| is true. | 96 // done. Display an interstitial if |is_malware| is true. |
| (...skipping 17 matching lines...) Expand all Loading... | |
| 109 const std::string& method, | 114 const std::string& method, |
| 110 const std::string& referrer, | 115 const std::string& referrer, |
| 111 const ResourceType::Type resource_type); | 116 const ResourceType::Type resource_type); |
| 112 | 117 |
| 113 // From NotificationObserver. Called when a notification comes in. This | 118 // From NotificationObserver. Called when a notification comes in. This |
| 114 // method is called in the UI thread. | 119 // method is called in the UI thread. |
| 115 virtual void Observe(int type, | 120 virtual void Observe(int type, |
| 116 const content::NotificationSource& source, | 121 const content::NotificationSource& source, |
| 117 const content::NotificationDetails& details) OVERRIDE; | 122 const content::NotificationDetails& details) OVERRIDE; |
| 118 | 123 |
| 124 // Inherited from WebContentsObserver. This is called once the onload handler | |
| 125 // is called. | |
| 126 virtual void DocumentOnLoadCompletedInMainFrame(int32 page_id); | |
|
mattm
2014/02/21 00:35:29
OVERRIDE
noé
2014/02/21 19:04:16
Done.
| |
| 127 | |
| 119 // Returns true if the user has seen a regular SafeBrowsing | 128 // Returns true if the user has seen a regular SafeBrowsing |
| 120 // interstitial for the current page. This is only true if the user has | 129 // interstitial for the current page. This is only true if the user has |
| 121 // actually clicked through the warning. This method is called on the UI | 130 // actually clicked through the warning. This method is called on the UI |
| 122 // thread. | 131 // thread. |
| 123 bool DidShowSBInterstitial() const; | 132 bool DidShowSBInterstitial() const; |
| 124 | 133 |
| 125 // Used for testing. This function does not take ownership of the service | 134 // Used for testing. This function does not take ownership of the service |
| 126 // class. | 135 // class. |
| 127 void set_client_side_detection_service(ClientSideDetectionService* service); | 136 void set_client_side_detection_service(ClientSideDetectionService* service); |
| 128 | 137 |
| 129 // Get/Set malware_killswitch_on_ value. These methods called on UI thread. | |
| 130 bool MalwareKillSwitchIsOn(); | |
| 131 void SetMalwareKillSwitch(bool killswitch_on); | |
| 132 | |
| 133 // This pointer may be NULL if client-side phishing detection is disabled. | 138 // This pointer may be NULL if client-side phishing detection is disabled. |
| 134 ClientSideDetectionService* csd_service_; | 139 ClientSideDetectionService* csd_service_; |
| 135 // These pointers may be NULL if SafeBrowsing is disabled. | 140 // These pointers may be NULL if SafeBrowsing is disabled. |
| 136 scoped_refptr<SafeBrowsingDatabaseManager> database_manager_; | 141 scoped_refptr<SafeBrowsingDatabaseManager> database_manager_; |
| 137 scoped_refptr<SafeBrowsingUIManager> ui_manager_; | 142 scoped_refptr<SafeBrowsingUIManager> ui_manager_; |
| 138 // Keep a handle to the latest classification request so that we can cancel | 143 // Keep a handle to the latest classification request so that we can cancel |
| 139 // it if necessary. | 144 // it if necessary. |
| 140 scoped_refptr<ShouldClassifyUrlRequest> classification_request_; | 145 scoped_refptr<ShouldClassifyUrlRequest> classification_request_; |
| 141 // Browser-side feature extractor. | 146 // Browser-side feature extractor. |
| 142 scoped_ptr<BrowserFeatureExtractor> feature_extractor_; | 147 scoped_ptr<BrowserFeatureExtractor> feature_extractor_; |
| 143 // Keeps some info about the current page visit while the renderer | 148 // Keeps some info about the current page visit while the renderer |
| 144 // classification is going on. Since we cancel classification on | 149 // classification is going on. Since we cancel classification on |
| 145 // every page load we can simply keep this data around as a member | 150 // every page load we can simply keep this data around as a member |
| 146 // variable. This information will be passed on to the feature extractor. | 151 // variable. This information will be passed on to the feature extractor. |
| 147 scoped_ptr<BrowseInfo> browse_info_; | 152 scoped_ptr<BrowseInfo> browse_info_; |
| 148 // Redirect chain that leads to the first page of the current host. We keep | 153 // Redirect chain that leads to the first page of the current host. We keep |
| 149 // track of this for browse_info_. | 154 // track of this for browse_info_. |
| 150 std::vector<GURL> cur_host_redirects_; | 155 std::vector<GURL> cur_host_redirects_; |
| 151 // Current host, used to help determine cur_host_redirects_. | 156 // Current host, used to help determine cur_host_redirects_. |
| 152 std::string cur_host_; | 157 std::string cur_host_; |
| 153 // Handles registering notifications with the NotificationService. | 158 // Handles registering notifications with the NotificationService. |
| 154 content::NotificationRegistrar registrar_; | 159 content::NotificationRegistrar registrar_; |
| 155 | 160 |
| 156 // Max number of ips we save for each browse | 161 // Max number of ips we save for each browse |
| 157 static const int kMaxIPsPerBrowse; | 162 static const int kMaxIPsPerBrowse; |
| 158 // Max number of urls we report for each malware IP. | 163 // Max number of urls we report for each malware IP. |
| 159 static const int kMaxUrlsPerIP; | 164 static const int kMaxUrlsPerIP; |
| 160 | 165 |
| 166 bool should_extract_malware_features_; | |
| 167 bool should_classify_for_malware_; | |
| 168 | |
| 161 base::WeakPtrFactory<ClientSideDetectionHost> weak_factory_; | 169 base::WeakPtrFactory<ClientSideDetectionHost> weak_factory_; |
| 162 | 170 |
| 163 // Unique page ID of the most recent unsafe site that was loaded in this tab | 171 // Unique page ID of the most recent unsafe site that was loaded in this tab |
| 164 // as well as the UnsafeResource. | 172 // as well as the UnsafeResource. |
| 165 int unsafe_unique_page_id_; | 173 int unsafe_unique_page_id_; |
| 166 scoped_ptr<SafeBrowsingUIManager::UnsafeResource> unsafe_resource_; | 174 scoped_ptr<SafeBrowsingUIManager::UnsafeResource> unsafe_resource_; |
| 167 | 175 |
| 168 // Whether the malware IP matching feature killswitch is on. | |
| 169 // This should be accessed from UI thread. | |
| 170 bool malware_killswitch_on_; | |
| 171 | |
| 172 // Whether the malware bad ip matching and report feature is enabled. | |
| 173 // This should be accessed from UI thread. | |
| 174 bool malware_report_enabled_; | |
| 175 | |
| 176 DISALLOW_COPY_AND_ASSIGN(ClientSideDetectionHost); | 176 DISALLOW_COPY_AND_ASSIGN(ClientSideDetectionHost); |
| 177 }; | 177 }; |
| 178 | 178 |
| 179 } // namespace safe_browsing | 179 } // namespace safe_browsing |
| 180 | 180 |
| 181 #endif // CHROME_BROWSER_SAFE_BROWSING_CLIENT_SIDE_DETECTION_HOST_H_ | 181 #endif // CHROME_BROWSER_SAFE_BROWSING_CLIENT_SIDE_DETECTION_HOST_H_ |
| OLD | NEW |