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

Side by Side Diff: components/safe_browsing/password_protection/password_protection_service.h

Issue 2905343002: Show interstitial on a password on focus ping with PHISHING verdict. (Closed)
Patch Set: nit Created 3 years, 6 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 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 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 COMPONENTS_SAFE_BROWSING_PASSWORD_PROTECTION_PASSWORD_PROTECTION_SERVICE _H_ 5 #ifndef COMPONENTS_SAFE_BROWSING_PASSWORD_PROTECTION_PASSWORD_PROTECTION_SERVICE _H_
6 #define COMPONENTS_SAFE_BROWSING_PASSWORD_PROTECTION_PASSWORD_PROTECTION_SERVICE _H_ 6 #define COMPONENTS_SAFE_BROWSING_PASSWORD_PROTECTION_PASSWORD_PROTECTION_SERVICE _H_
7 7
8 #include <set> 8 #include <set>
9 9
10 #include "base/callback.h" 10 #include "base/callback.h"
(...skipping 21 matching lines...) Expand all
32 class GURL; 32 class GURL;
33 class HostContentSettingsMap; 33 class HostContentSettingsMap;
34 34
35 namespace safe_browsing { 35 namespace safe_browsing {
36 36
37 class SafeBrowsingDatabaseManager; 37 class SafeBrowsingDatabaseManager;
38 class PasswordProtectionRequest; 38 class PasswordProtectionRequest;
39 39
40 extern const base::Feature kPasswordFieldOnFocusPinging; 40 extern const base::Feature kPasswordFieldOnFocusPinging;
41 extern const base::Feature kProtectedPasswordEntryPinging; 41 extern const base::Feature kProtectedPasswordEntryPinging;
42 extern const base::Feature kPasswordProtectionInterstitial;
42 extern const char kPasswordOnFocusRequestOutcomeHistogramName[]; 43 extern const char kPasswordOnFocusRequestOutcomeHistogramName[];
43 extern const char kPasswordEntryRequestOutcomeHistogramName[]; 44 extern const char kPasswordEntryRequestOutcomeHistogramName[];
44 45
45 // Manage password protection pings and verdicts. There is one instance of this 46 // Manage password protection pings and verdicts. There is one instance of this
46 // class per profile. Therefore, every PasswordProtectionService instance is 47 // class per profile. Therefore, every PasswordProtectionService instance is
47 // associated with a unique HistoryService instance and a unique 48 // associated with a unique HistoryService instance and a unique
48 // HostContentSettingsMap instance. 49 // HostContentSettingsMap instance.
49 class PasswordProtectionService : public history::HistoryServiceObserver { 50 class PasswordProtectionService : public history::HistoryServiceObserver {
50 public: 51 public:
51 // The outcome of the request. These values are used for UMA. 52 // The outcome of the request. These values are used for UMA.
52 // DO NOT CHANGE THE ORDERING OF THESE VALUES. 53 // DO NOT CHANGE THE ORDERING OF THESE VALUES.
53 enum RequestOutcome { 54 enum RequestOutcome {
54 UNKNOWN = 0, 55 UNKNOWN = 0,
55 SUCCEEDED = 1, 56 SUCCEEDED = 1,
56 CANCELED = 2, 57 CANCELED = 2,
57 TIMEDOUT = 3, 58 TIMEDOUT = 3,
58 MATCHED_WHITELIST = 4, 59 MATCHED_WHITELIST = 4,
59 RESPONSE_ALREADY_CACHED = 5, 60 RESPONSE_ALREADY_CACHED = 5,
60 DEPRECATED_NO_EXTENDED_REPORTING = 6, 61 DEPRECATED_NO_EXTENDED_REPORTING = 6,
61 DISABLED_DUE_TO_INCOGNITO = 7, 62 DISABLED_DUE_TO_INCOGNITO = 7,
62 REQUEST_MALFORMED = 8, 63 REQUEST_MALFORMED = 8,
63 FETCH_FAILED = 9, 64 FETCH_FAILED = 9,
64 RESPONSE_MALFORMED = 10, 65 RESPONSE_MALFORMED = 10,
65 SERVICE_DESTROYED = 11, 66 SERVICE_DESTROYED = 11,
66 DISABLED_DUE_TO_FEATURE_DISABLED = 12, 67 DISABLED_DUE_TO_FEATURE_DISABLED = 12,
67 DISABLED_DUE_TO_USER_POPULATION = 13, 68 DISABLED_DUE_TO_USER_POPULATION = 13,
68 URL_NOT_VALID_FOR_REPUTATION_COMPUTING = 14, 69 URL_NOT_VALID_FOR_REPUTATION_COMPUTING = 14,
69 MAX_OUTCOME 70 MAX_OUTCOME
70 }; 71 };
72
71 PasswordProtectionService( 73 PasswordProtectionService(
72 const scoped_refptr<SafeBrowsingDatabaseManager>& database_manager, 74 const scoped_refptr<SafeBrowsingDatabaseManager>& database_manager,
73 scoped_refptr<net::URLRequestContextGetter> request_context_getter, 75 scoped_refptr<net::URLRequestContextGetter> request_context_getter,
74 history::HistoryService* history_service, 76 history::HistoryService* history_service,
75 HostContentSettingsMap* host_content_settings_map); 77 HostContentSettingsMap* host_content_settings_map);
76 78
77 ~PasswordProtectionService() override; 79 ~PasswordProtectionService() override;
78 80
79 base::WeakPtr<PasswordProtectionService> GetWeakPtr() { 81 base::WeakPtr<PasswordProtectionService> GetWeakPtr() {
80 return weak_factory_.GetWeakPtr(); 82 return weak_factory_.GetWeakPtr();
81 } 83 }
82 84
83 // Looks up |settings| to find the cached verdict response. If verdict is not 85 // Looks up |settings| to find the cached verdict response. If verdict is not
84 // available or is expired, return VERDICT_TYPE_UNSPECIFIED. Can be called on 86 // available or is expired, return VERDICT_TYPE_UNSPECIFIED. Can be called on
85 // any thread. 87 // any thread.
86 LoginReputationClientResponse::VerdictType GetCachedVerdict( 88 LoginReputationClientResponse::VerdictType GetCachedVerdict(
87 const GURL& url, 89 const GURL& url,
88 LoginReputationClientResponse* out_response); 90 LoginReputationClientResponse* out_response);
89 91
90 // Stores |verdict| in |settings| based on |url|, |verdict| and 92 // Stores |verdict| in |settings| based on |url|, |verdict| and
91 // |receive_time|. 93 // |receive_time|.
92 void CacheVerdict(const GURL& url, 94 virtual void CacheVerdict(const GURL& url,
93 LoginReputationClientResponse* verdict, 95 LoginReputationClientResponse* verdict,
94 const base::Time& receive_time); 96 const base::Time& receive_time);
95 97
96 // Removes all the expired verdicts from cache. 98 // Removes all the expired verdicts from cache.
97 void CleanUpExpiredVerdicts(); 99 void CleanUpExpiredVerdicts();
98 100
99 // Creates an instance of PasswordProtectionRequest and call Start() on that 101 // Creates an instance of PasswordProtectionRequest and call Start() on that
100 // instance. This function also insert this request object in |requests_| for 102 // instance. This function also insert this request object in |requests_| for
101 // record keeping. 103 // record keeping.
102 void StartRequest(content::WebContents* web_contents, 104 void StartRequest(content::WebContents* web_contents,
103 const GURL& main_frame_url, 105 const GURL& main_frame_url,
104 const GURL& password_form_action, 106 const GURL& password_form_action,
(...skipping 29 matching lines...) Expand all
134 // Chrome can send password protection ping if it is allowed by Finch config 136 // Chrome can send password protection ping if it is allowed by Finch config
135 // and if Safe Browsing can compute reputation of |main_frame_url| (e.g. 137 // and if Safe Browsing can compute reputation of |main_frame_url| (e.g.
136 // Safe Browsing is not able to compute reputation of a private IP or 138 // Safe Browsing is not able to compute reputation of a private IP or
137 // a local host.) 139 // a local host.)
138 bool CanSendPing(const base::Feature& feature, const GURL& main_frame_url); 140 bool CanSendPing(const base::Feature& feature, const GURL& main_frame_url);
139 141
140 // Called by a PasswordProtectionRequest instance when it finishes to remove 142 // Called by a PasswordProtectionRequest instance when it finishes to remove
141 // itself from |requests_|. 143 // itself from |requests_|.
142 virtual void RequestFinished( 144 virtual void RequestFinished(
143 PasswordProtectionRequest* request, 145 PasswordProtectionRequest* request,
146 bool already_cached,
144 std::unique_ptr<LoginReputationClientResponse> response); 147 std::unique_ptr<LoginReputationClientResponse> response);
145 148
146 // Cancels all requests in |requests_|, empties it, and releases references to 149 // Cancels all requests in |requests_|, empties it, and releases references to
147 // the requests. 150 // the requests.
148 void CancelPendingRequests(); 151 void CancelPendingRequests();
149 152
150 // Gets the total number of verdict (no matter expired or not) we cached for 153 // Gets the total number of verdict (no matter expired or not) we cached for
151 // current active profile. 154 // current active profile.
152 virtual int GetStoredVerdictCount(); 155 virtual int GetStoredVerdictCount();
153 156
(...skipping 20 matching lines...) Expand all
174 177
175 virtual bool IsExtendedReporting() = 0; 178 virtual bool IsExtendedReporting() = 0;
176 179
177 virtual bool IsIncognito() = 0; 180 virtual bool IsIncognito() = 0;
178 181
179 virtual bool IsPingingEnabled(const base::Feature& feature, 182 virtual bool IsPingingEnabled(const base::Feature& feature,
180 RequestOutcome* reason) = 0; 183 RequestOutcome* reason) = 0;
181 184
182 virtual bool IsHistorySyncEnabled() = 0; 185 virtual bool IsHistorySyncEnabled() = 0;
183 186
187 virtual void ShowPhishingInterstitial(const GURL& phishing_url,
188 const std::string& token,
189 content::WebContents* web_contents) = 0;
190
184 void CheckCsdWhitelistOnIOThread(const GURL& url, bool* check_result); 191 void CheckCsdWhitelistOnIOThread(const GURL& url, bool* check_result);
185 192
186 HostContentSettingsMap* content_settings() const { return content_settings_; } 193 HostContentSettingsMap* content_settings() const { return content_settings_; }
187 194
188 private: 195 private:
189 friend class PasswordProtectionServiceTest; 196 friend class PasswordProtectionServiceTest;
190 friend class TestPasswordProtectionService; 197 friend class TestPasswordProtectionService;
191 FRIEND_TEST_ALL_PREFIXES(PasswordProtectionServiceTest, 198 FRIEND_TEST_ALL_PREFIXES(PasswordProtectionServiceTest,
192 TestParseInvalidVerdictEntry); 199 TestParseInvalidVerdictEntry);
193 FRIEND_TEST_ALL_PREFIXES(PasswordProtectionServiceTest, 200 FRIEND_TEST_ALL_PREFIXES(PasswordProtectionServiceTest,
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 // we need CancelableTaskTracker to cancel tasks posted to IO thread. 266 // we need CancelableTaskTracker to cancel tasks posted to IO thread.
260 base::CancelableTaskTracker tracker_; 267 base::CancelableTaskTracker tracker_;
261 268
262 base::WeakPtrFactory<PasswordProtectionService> weak_factory_; 269 base::WeakPtrFactory<PasswordProtectionService> weak_factory_;
263 DISALLOW_COPY_AND_ASSIGN(PasswordProtectionService); 270 DISALLOW_COPY_AND_ASSIGN(PasswordProtectionService);
264 }; 271 };
265 272
266 } // namespace safe_browsing 273 } // namespace safe_browsing
267 274
268 #endif // COMPONENTS_SAFE_BROWSING_PASSWORD_PROTECTION_PASSWORD_PROTECTION_SERV ICE_H_ 275 #endif // COMPONENTS_SAFE_BROWSING_PASSWORD_PROTECTION_PASSWORD_PROTECTION_SERV ICE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698