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

Side by Side Diff: chrome/browser/safe_browsing/incident_reporting/incident_reporting_service.cc

Issue 800263002: Added incident report for variations seed signature mismatch. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: analyze on UI thread to access variations service Created 6 years 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "chrome/browser/safe_browsing/incident_reporting/incident_reporting_ser vice.h" 5 #include "chrome/browser/safe_browsing/incident_reporting/incident_reporting_ser vice.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <vector> 10 #include <vector>
(...skipping 14 matching lines...) Expand all
25 #include "chrome/browser/profiles/profile.h" 25 #include "chrome/browser/profiles/profile.h"
26 #include "chrome/browser/safe_browsing/database_manager.h" 26 #include "chrome/browser/safe_browsing/database_manager.h"
27 #include "chrome/browser/safe_browsing/incident_reporting/binary_integrity_incid ent_handlers.h" 27 #include "chrome/browser/safe_browsing/incident_reporting/binary_integrity_incid ent_handlers.h"
28 #include "chrome/browser/safe_browsing/incident_reporting/blacklist_load_inciden t_handlers.h" 28 #include "chrome/browser/safe_browsing/incident_reporting/blacklist_load_inciden t_handlers.h"
29 #include "chrome/browser/safe_browsing/incident_reporting/environment_data_colle ction.h" 29 #include "chrome/browser/safe_browsing/incident_reporting/environment_data_colle ction.h"
30 #include "chrome/browser/safe_browsing/incident_reporting/incident_report_upload er_impl.h" 30 #include "chrome/browser/safe_browsing/incident_reporting/incident_report_upload er_impl.h"
31 #include "chrome/browser/safe_browsing/incident_reporting/omnibox_incident_handl ers.h" 31 #include "chrome/browser/safe_browsing/incident_reporting/omnibox_incident_handl ers.h"
32 #include "chrome/browser/safe_browsing/incident_reporting/omnibox_watcher.h" 32 #include "chrome/browser/safe_browsing/incident_reporting/omnibox_watcher.h"
33 #include "chrome/browser/safe_browsing/incident_reporting/preference_validation_ delegate.h" 33 #include "chrome/browser/safe_browsing/incident_reporting/preference_validation_ delegate.h"
34 #include "chrome/browser/safe_browsing/incident_reporting/tracked_preference_inc ident_handlers.h" 34 #include "chrome/browser/safe_browsing/incident_reporting/tracked_preference_inc ident_handlers.h"
35 #include "chrome/browser/safe_browsing/incident_reporting/variations_seed_signat ure_incident_handlers.h"
35 #include "chrome/browser/safe_browsing/safe_browsing_service.h" 36 #include "chrome/browser/safe_browsing/safe_browsing_service.h"
36 #include "chrome/common/pref_names.h" 37 #include "chrome/common/pref_names.h"
37 #include "chrome/common/safe_browsing/csd.pb.h" 38 #include "chrome/common/safe_browsing/csd.pb.h"
38 #include "content/public/browser/browser_thread.h" 39 #include "content/public/browser/browser_thread.h"
39 #include "content/public/browser/notification_service.h" 40 #include "content/public/browser/notification_service.h"
40 #include "net/url_request/url_request_context_getter.h" 41 #include "net/url_request/url_request_context_getter.h"
41 42
42 namespace safe_browsing { 43 namespace safe_browsing {
43 44
44 namespace { 45 namespace {
45 46
46 // The type of an incident. Used for user metrics and for pruning of 47 // The type of an incident. Used for user metrics and for pruning of
47 // previously-reported incidents. 48 // previously-reported incidents.
48 enum IncidentType { 49 enum IncidentType {
49 // Start with 1 rather than zero; otherwise there won't be enough buckets for 50 // Start with 1 rather than zero; otherwise there won't be enough buckets for
50 // the histogram. 51 // the histogram.
51 TRACKED_PREFERENCE = 1, 52 TRACKED_PREFERENCE = 1,
52 BINARY_INTEGRITY = 2, 53 BINARY_INTEGRITY = 2,
53 BLACKLIST_LOAD = 3, 54 BLACKLIST_LOAD = 3,
54 OMNIBOX_INTERACTION = 4, 55 OMNIBOX_INTERACTION = 4,
56 VARIATIONS_SEED_SIGNATURE = 5,
55 // Values for new incident types go here. 57 // Values for new incident types go here.
56 NUM_INCIDENT_TYPES = 5 58 NUM_INCIDENT_TYPES = 6
57 }; 59 };
58 60
59 // The action taken for an incident; used for user metrics (see 61 // The action taken for an incident; used for user metrics (see
60 // LogIncidentDataType). 62 // LogIncidentDataType).
61 enum IncidentDisposition { 63 enum IncidentDisposition {
62 RECEIVED, 64 RECEIVED,
63 DROPPED, 65 DROPPED,
64 ACCEPTED, 66 ACCEPTED,
65 PRUNED, 67 PRUNED,
66 DISCARDED, 68 DISCARDED,
(...skipping 24 matching lines...) Expand all
91 size_t CountIncidents(const ClientIncidentReport_IncidentData& incident) { 93 size_t CountIncidents(const ClientIncidentReport_IncidentData& incident) {
92 size_t result = 0; 94 size_t result = 0;
93 if (incident.has_tracked_preference()) 95 if (incident.has_tracked_preference())
94 ++result; 96 ++result;
95 if (incident.has_binary_integrity()) 97 if (incident.has_binary_integrity())
96 ++result; 98 ++result;
97 if (incident.has_blacklist_load()) 99 if (incident.has_blacklist_load())
98 ++result; 100 ++result;
99 if (incident.has_omnibox_interaction()) 101 if (incident.has_omnibox_interaction())
100 ++result; 102 ++result;
103 if (incident.has_variations_seed_signature())
104 ++result;
101 // Add detection for new incident types here. 105 // Add detection for new incident types here.
102 return result; 106 return result;
103 } 107 }
104 108
105 // Returns the type of incident contained in |incident_data|. 109 // Returns the type of incident contained in |incident_data|.
106 IncidentType GetIncidentType( 110 IncidentType GetIncidentType(
107 const ClientIncidentReport_IncidentData& incident_data) { 111 const ClientIncidentReport_IncidentData& incident_data) {
108 if (incident_data.has_tracked_preference()) 112 if (incident_data.has_tracked_preference())
109 return TRACKED_PREFERENCE; 113 return TRACKED_PREFERENCE;
110 if (incident_data.has_binary_integrity()) 114 if (incident_data.has_binary_integrity())
111 return BINARY_INTEGRITY; 115 return BINARY_INTEGRITY;
112 if (incident_data.has_blacklist_load()) 116 if (incident_data.has_blacklist_load())
113 return BLACKLIST_LOAD; 117 return BLACKLIST_LOAD;
114 if (incident_data.has_omnibox_interaction()) 118 if (incident_data.has_omnibox_interaction())
115 return OMNIBOX_INTERACTION; 119 return OMNIBOX_INTERACTION;
120 if (incident_data.has_variations_seed_signature())
121 return VARIATIONS_SEED_SIGNATURE;
116 122
117 // Add detection for new incident types here. 123 // Add detection for new incident types here.
118 COMPILE_ASSERT(OMNIBOX_INTERACTION + 1 == NUM_INCIDENT_TYPES, 124 COMPILE_ASSERT(VARIATIONS_SEED_SIGNATURE + 1 == NUM_INCIDENT_TYPES,
119 add_support_for_new_types); 125 add_support_for_new_types);
120 NOTREACHED(); 126 NOTREACHED();
121 return NUM_INCIDENT_TYPES; 127 return NUM_INCIDENT_TYPES;
122 } 128 }
123 129
124 // Logs the type of incident in |incident_data| to a user metrics histogram. 130 // Logs the type of incident in |incident_data| to a user metrics histogram.
125 void LogIncidentDataType( 131 void LogIncidentDataType(
126 IncidentDisposition disposition, 132 IncidentDisposition disposition,
127 const ClientIncidentReport_IncidentData& incident_data) { 133 const ClientIncidentReport_IncidentData& incident_data) {
128 static const char* const kHistogramNames[] = { 134 static const char* const kHistogramNames[] = {
(...skipping 30 matching lines...) Expand all
159 state.digest = GetBinaryIntegrityIncidentDigest(incident); 165 state.digest = GetBinaryIntegrityIncidentDigest(incident);
160 break; 166 break;
161 case BLACKLIST_LOAD: 167 case BLACKLIST_LOAD:
162 state.key = GetBlacklistLoadIncidentKey(incident); 168 state.key = GetBlacklistLoadIncidentKey(incident);
163 state.digest = GetBlacklistLoadIncidentDigest(incident); 169 state.digest = GetBlacklistLoadIncidentDigest(incident);
164 break; 170 break;
165 case OMNIBOX_INTERACTION: 171 case OMNIBOX_INTERACTION:
166 state.key = GetOmniboxIncidentKey(incident); 172 state.key = GetOmniboxIncidentKey(incident);
167 state.digest = GetOmniboxIncidentDigest(incident); 173 state.digest = GetOmniboxIncidentDigest(incident);
168 break; 174 break;
175 case VARIATIONS_SEED_SIGNATURE:
176 state.key = GetVariationsSeedSignatureIncidentKey(incident);
177 state.digest = GetVariationsSeedSignatureIncidentDigest(incident);
178 break;
169 // Add handling for new incident types here. 179 // Add handling for new incident types here.
170 default: 180 case NUM_INCIDENT_TYPES:
171 COMPILE_ASSERT(OMNIBOX_INTERACTION + 1 == NUM_INCIDENT_TYPES,
172 add_support_for_new_types);
173 NOTREACHED(); 181 NOTREACHED();
174 break; 182 break;
175 } 183 }
176 return state; 184 return state;
177 } 185 }
178 186
179 // Returns true if the incident described by |state| has already been reported 187 // Returns true if the incident described by |state| has already been reported
180 // based on the bookkeeping in the |incidents_sent| preference dictionary. 188 // based on the bookkeeping in the |incidents_sent| preference dictionary.
181 bool IncidentHasBeenReported(const base::DictionaryValue* incidents_sent, 189 bool IncidentHasBeenReported(const base::DictionaryValue* incidents_sent,
182 const PersistentIncidentState& state) { 190 const PersistentIncidentState& state) {
(...skipping 824 matching lines...) Expand 10 before | Expand all | Expand 10 after
1007 if (!profile->IsOffTheRecord()) 1015 if (!profile->IsOffTheRecord())
1008 OnProfileDestroyed(profile); 1016 OnProfileDestroyed(profile);
1009 break; 1017 break;
1010 } 1018 }
1011 default: 1019 default:
1012 break; 1020 break;
1013 } 1021 }
1014 } 1022 }
1015 1023
1016 } // namespace safe_browsing 1024 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698