Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <utility> | 10 #include <utility> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "base/feature_list.h" | |
| 13 #include "base/macros.h" | 14 #include "base/macros.h" |
| 14 #include "base/metrics/field_trial.h" | 15 #include "base/metrics/field_trial.h" |
| 15 #include "base/metrics/histogram.h" | 16 #include "base/metrics/histogram.h" |
| 16 #include "base/process/process_info.h" | 17 #include "base/process/process_info.h" |
| 17 #include "base/single_thread_task_runner.h" | 18 #include "base/single_thread_task_runner.h" |
| 18 #include "base/stl_util.h" | 19 #include "base/stl_util.h" |
| 19 #include "base/strings/string_util.h" | 20 #include "base/strings/string_util.h" |
| 20 #include "base/thread_task_runner_handle.h" | 21 #include "base/thread_task_runner_handle.h" |
| 21 #include "base/threading/sequenced_worker_pool.h" | 22 #include "base/threading/sequenced_worker_pool.h" |
| 22 #include "build/build_config.h" | 23 #include "build/build_config.h" |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 35 #include "chrome/common/safe_browsing/csd.pb.h" | 36 #include "chrome/common/safe_browsing/csd.pb.h" |
| 36 #include "components/prefs/pref_service.h" | 37 #include "components/prefs/pref_service.h" |
| 37 #include "components/safe_browsing_db/database_manager.h" | 38 #include "components/safe_browsing_db/database_manager.h" |
| 38 #include "components/user_prefs/tracked/tracked_preference_validation_delegate.h " | 39 #include "components/user_prefs/tracked/tracked_preference_validation_delegate.h " |
| 39 #include "content/public/browser/browser_thread.h" | 40 #include "content/public/browser/browser_thread.h" |
| 40 #include "content/public/browser/notification_service.h" | 41 #include "content/public/browser/notification_service.h" |
| 41 #include "net/url_request/url_request_context_getter.h" | 42 #include "net/url_request/url_request_context_getter.h" |
| 42 | 43 |
| 43 namespace safe_browsing { | 44 namespace safe_browsing { |
| 44 | 45 |
| 46 // Enables reporting of suspicious modules loaded in the process. If this | |
| 47 // feature is disabled, incidents get pruned instead of reported. | |
| 48 extern const base::Feature kIncidentReportingSuspiciousModuleReporting{ | |
|
grt (UTC plus 2)
2016/03/29 20:37:58
nit: omit extern?
nit: space before { (unless git
| |
| 49 "IncidentReportingSuspiciousModuleReporting", | |
| 50 base::FEATURE_DISABLED_BY_DEFAULT}; | |
| 51 | |
| 45 namespace { | 52 namespace { |
| 46 | 53 |
| 47 // The action taken for an incident; used for user metrics (see | 54 // The action taken for an incident; used for user metrics (see |
| 48 // LogIncidentDataType). | 55 // LogIncidentDataType). |
| 49 enum IncidentDisposition { | 56 enum IncidentDisposition { |
| 50 RECEIVED, | 57 RECEIVED, |
| 51 DROPPED, | 58 DROPPED, |
| 52 ACCEPTED, | 59 ACCEPTED, |
| 53 PRUNED, | 60 PRUNED, |
| 54 DISCARDED, | 61 DISCARDED, |
| (...skipping 911 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 966 state.digest)) { | 973 state.digest)) { |
| 967 LogIncidentDataType(PRUNED, *incident); | 974 LogIncidentDataType(PRUNED, *incident); |
| 968 } else if (!ProfileCanAcceptIncident(profile_and_context.first, | 975 } else if (!ProfileCanAcceptIncident(profile_and_context.first, |
| 969 *incident)) { | 976 *incident)) { |
| 970 LogIncidentDataType(DROPPED, *incident); | 977 LogIncidentDataType(DROPPED, *incident); |
| 971 } else if (!has_download) { | 978 } else if (!has_download) { |
| 972 LogIncidentDataType(NO_DOWNLOAD, *incident); | 979 LogIncidentDataType(NO_DOWNLOAD, *incident); |
| 973 // Drop the incident and mark for future pruning since no executable | 980 // Drop the incident and mark for future pruning since no executable |
| 974 // download was found. | 981 // download was found. |
| 975 transaction.MarkAsReported(state.type, state.key, state.digest); | 982 transaction.MarkAsReported(state.type, state.key, state.digest); |
| 983 } else if (incident->GetType() == IncidentType::SUSPICIOUS_MODULE && | |
|
grt (UTC plus 2)
2016/03/29 20:37:58
can't say i like having the service know intimate
proberge
2016/03/29 20:47:10
Yeah, it's not great. We'll get rid of this piece
| |
| 984 !base::FeatureList::IsEnabled( | |
| 985 kIncidentReportingSuspiciousModuleReporting)) { | |
| 986 LogIncidentDataType(PRUNED, *incident); | |
| 987 // Drop the incident and mark for future pruning. | |
| 988 transaction.MarkAsReported(state.type, state.key, state.digest); | |
| 976 } else { | 989 } else { |
| 977 LogIncidentDataType(ACCEPTED, *incident); | 990 LogIncidentDataType(ACCEPTED, *incident); |
| 978 // Ownership of the payload is passed to the report. | 991 // Ownership of the payload is passed to the report. |
| 979 ClientIncidentReport_IncidentData* data = | 992 ClientIncidentReport_IncidentData* data = |
| 980 incident->TakePayload().release(); | 993 incident->TakePayload().release(); |
| 981 DCHECK(data->has_incident_time_msec()); | 994 DCHECK(data->has_incident_time_msec()); |
| 982 report->mutable_incident()->AddAllocated(data); | 995 report->mutable_incident()->AddAllocated(data); |
| 983 data = nullptr; | 996 data = nullptr; |
| 984 states.push_back(state); | 997 states.push_back(state); |
| 985 } | 998 } |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1116 if (!profile->IsOffTheRecord()) | 1129 if (!profile->IsOffTheRecord()) |
| 1117 OnProfileDestroyed(profile); | 1130 OnProfileDestroyed(profile); |
| 1118 break; | 1131 break; |
| 1119 } | 1132 } |
| 1120 default: | 1133 default: |
| 1121 break; | 1134 break; |
| 1122 } | 1135 } |
| 1123 } | 1136 } |
| 1124 | 1137 |
| 1125 } // namespace safe_browsing | 1138 } // namespace safe_browsing |
| OLD | NEW |