| 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 #ifndef CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_NAVIGATION_OBSERVER_MANAGER_H
_ | 5 #ifndef CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_NAVIGATION_OBSERVER_MANAGER_H
_ |
| 6 #define CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_NAVIGATION_OBSERVER_MANAGER_H
_ | 6 #define CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_NAVIGATION_OBSERVER_MANAGER_H
_ |
| 7 | 7 |
| 8 #include <deque> | 8 #include <deque> |
| 9 #include "base/feature_list.h" | 9 #include "base/feature_list.h" |
| 10 #include "base/supports_user_data.h" | 10 #include "base/supports_user_data.h" |
| (...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 std::deque<std::unique_ptr<NavigationEvent>> navigation_events_; | 88 std::deque<std::unique_ptr<NavigationEvent>> navigation_events_; |
| 89 const std::size_t size_limit_; | 89 const std::size_t size_limit_; |
| 90 }; | 90 }; |
| 91 | 91 |
| 92 // Manager class for SafeBrowsingNavigationObserver, which is in charge of | 92 // Manager class for SafeBrowsingNavigationObserver, which is in charge of |
| 93 // cleaning up stale navigation events, and identifying landing page/landing | 93 // cleaning up stale navigation events, and identifying landing page/landing |
| 94 // referrer for a specific Safe Browsing event. | 94 // referrer for a specific Safe Browsing event. |
| 95 class SafeBrowsingNavigationObserverManager | 95 class SafeBrowsingNavigationObserverManager |
| 96 : public base::RefCountedThreadSafe<SafeBrowsingNavigationObserverManager> { | 96 : public base::RefCountedThreadSafe<SafeBrowsingNavigationObserverManager> { |
| 97 public: | 97 public: |
| 98 static const base::Feature kDownloadAttribution; | |
| 99 | |
| 100 // For UMA histogram counting. Do NOT change order. | 98 // For UMA histogram counting. Do NOT change order. |
| 101 enum AttributionResult { | 99 enum AttributionResult { |
| 102 SUCCESS = 1, // Identified referrer chain is not empty. | 100 SUCCESS = 1, // Identified referrer chain is not empty. |
| 103 SUCCESS_LANDING_PAGE = 2, // Successfully identified landing page. | 101 SUCCESS_LANDING_PAGE = 2, // Successfully identified landing page. |
| 104 SUCCESS_LANDING_REFERRER = 3, // Successfully identified landing referrer. | 102 SUCCESS_LANDING_REFERRER = 3, // Successfully identified landing referrer. |
| 105 INVALID_URL = 4, | 103 INVALID_URL = 4, |
| 106 NAVIGATION_EVENT_NOT_FOUND = 5, | 104 NAVIGATION_EVENT_NOT_FOUND = 5, |
| 107 | 105 |
| 108 // Always at the end. | 106 // Always at the end. |
| 109 ATTRIBUTION_FAILURE_TYPE_MAX | 107 ATTRIBUTION_FAILURE_TYPE_MAX |
| 110 }; | 108 }; |
| 111 | 109 |
| 112 // Helper function to check if user gesture is older than | 110 // Helper function to check if user gesture is older than |
| 113 // kUserGestureTTLInSecond. | 111 // kUserGestureTTLInSecond. |
| 114 static bool IsUserGestureExpired(const base::Time& timestamp); | 112 static bool IsUserGestureExpired(const base::Time& timestamp); |
| 115 | 113 |
| 116 // Helper function to strip empty ref fragment from a URL. Many pages | 114 // Helper function to strip empty ref fragment from a URL. Many pages |
| 117 // end up with a "#" at the end of their URLs due to navigation triggered by | 115 // end up with a "#" at the end of their URLs due to navigation triggered by |
| 118 // href="#" and javascript onclick function. We don't want to have separate | 116 // href="#" and javascript onclick function. We don't want to have separate |
| 119 // entries for these cases in the maps. | 117 // entries for these cases in the maps. |
| 120 static GURL ClearEmptyRef(const GURL& url); | 118 static GURL ClearEmptyRef(const GURL& url); |
| 121 | 119 |
| 122 // Checks if we should enable observing navigations for safe browsing purpose. | 120 // Checks if we should enable observing navigations for safe browsing purpose. |
| 123 // Return true if the safe browsing service and the |kDownloadAttribution| | 121 // Return true if the safe browsing safe browsing service is enabled and |
| 124 // feature are both enabled, and safe browsing service is initialized. | 122 // initialized. |
| 125 static bool IsEnabledAndReady(Profile* profile); | 123 static bool IsEnabledAndReady(Profile* profile); |
| 126 | 124 |
| 127 SafeBrowsingNavigationObserverManager(); | 125 SafeBrowsingNavigationObserverManager(); |
| 128 | 126 |
| 129 // Adds |nav_event| to |navigation_event_list_|. Object pointed to by | 127 // Adds |nav_event| to |navigation_event_list_|. Object pointed to by |
| 130 // |nav_event| will be no longer accessible after this function. | 128 // |nav_event| will be no longer accessible after this function. |
| 131 void RecordNavigationEvent(std::unique_ptr<NavigationEvent> nav_event); | 129 void RecordNavigationEvent(std::unique_ptr<NavigationEvent> nav_event); |
| 132 void RecordUserGestureForWebContents(content::WebContents* web_contents, | 130 void RecordUserGestureForWebContents(content::WebContents* web_contents, |
| 133 const base::Time& timestamp); | 131 const base::Time& timestamp); |
| 134 void OnUserGestureConsumed(content::WebContents* web_contents, | 132 void OnUserGestureConsumed(content::WebContents* web_contents, |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 265 // vector of ResolvedIPAddresss. | 263 // vector of ResolvedIPAddresss. |
| 266 HostToIpMap host_to_ip_map_; | 264 HostToIpMap host_to_ip_map_; |
| 267 | 265 |
| 268 base::OneShotTimer cleanup_timer_; | 266 base::OneShotTimer cleanup_timer_; |
| 269 | 267 |
| 270 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingNavigationObserverManager); | 268 DISALLOW_COPY_AND_ASSIGN(SafeBrowsingNavigationObserverManager); |
| 271 }; | 269 }; |
| 272 } // namespace safe_browsing | 270 } // namespace safe_browsing |
| 273 | 271 |
| 274 #endif // CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_NAVIGATION_OBSERVER_MANAGE
R_H_ | 272 #endif // CHROME_BROWSER_SAFE_BROWSING_SAFE_BROWSING_NAVIGATION_OBSERVER_MANAGE
R_H_ |
| OLD | NEW |