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

Side by Side Diff: components/safe_browsing_db/v4_protocol_manager_util.cc

Issue 2353413002: Store list information in ListInfo (was: StoreIdAndFIleName) (Closed)
Patch Set: Created 4 years, 2 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 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 #include "components/safe_browsing_db/v4_protocol_manager_util.h" 5 #include "components/safe_browsing_db/v4_protocol_manager_util.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/metrics/sparse_histogram.h" 8 #include "base/metrics/sparse_histogram.h"
9 #include "base/rand_util.h" 9 #include "base/rand_util.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 escaped_str += c; 55 escaped_str += c;
56 } 56 }
57 } 57 }
58 58
59 return escaped_str; 59 return escaped_str;
60 } 60 }
61 61
62 } // namespace 62 } // namespace
63 63
64 std::ostream& operator<<(std::ostream& os, const ListIdentifier& id) { 64 std::ostream& operator<<(std::ostream& os, const ListIdentifier& id) {
65 os << "{hash: " << id.hash() << "; platform_type: " << id.platform_type 65 os << "{hash: " << id.hash() << "; platform_type: " << id.platform_type()
66 << "; threat_entry_type: " << id.threat_entry_type 66 << "; threat_entry_type: " << id.threat_entry_type()
67 << "; threat_type: " << id.threat_type << "}"; 67 << "; threat_type: " << id.threat_type() << "}";
68 return os; 68 return os;
69 } 69 }
70 70
71 PlatformType GetCurrentPlatformType() { 71 PlatformType GetCurrentPlatformType() {
72 #if defined(OS_WIN) 72 #if defined(OS_WIN)
73 return WINDOWS_PLATFORM; 73 return WINDOWS_PLATFORM;
74 #elif defined(OS_LINUX) 74 #elif defined(OS_LINUX)
75 return LINUX_PLATFORM; 75 return LINUX_PLATFORM;
76 #elif defined(OS_MACOSX) 76 #elif defined(OS_MACOSX)
77 return OSX_PLATFORM; 77 return OSX_PLATFORM;
78 #else 78 #else
79 // This should ideally never compile but it is getting compiled on Android. 79 // This should ideally never compile but it is getting compiled on Android.
80 // See: https://bugs.chromium.org/p/chromium/issues/detail?id=621647 80 // See: https://bugs.chromium.org/p/chromium/issues/detail?id=621647
81 // TODO(vakh): Once that bug is fixed, this should be removed. If we leave 81 // TODO(vakh): Once that bug is fixed, this should be removed. If we leave
82 // the platform_type empty, the server won't recognize the request and 82 // the platform_type empty, the server won't recognize the request and
83 // return an error response which will pollute our UMA metrics. 83 // return an error response which will pollute our UMA metrics.
84 return LINUX_PLATFORM; 84 return LINUX_PLATFORM;
85 #endif 85 #endif
86 } 86 }
87 87
88 const ListIdentifier GetChromeUrlApiId() { 88 const ListIdentifier GetChromeUrlApiId() {
89 return ListIdentifier(CHROME_PLATFORM, URL, API_ABUSE); 89 return ListIdentifier(CHROME_PLATFORM, URL, API_ABUSE,
90 SB_THREAT_TYPE_API_ABUSE);
90 } 91 }
91 92
92 const ListIdentifier GetUrlMalwareId() { 93 const ListIdentifier GetUrlMalwareId() {
93 return ListIdentifier(GetCurrentPlatformType(), URL, MALWARE_THREAT); 94 return ListIdentifier(GetCurrentPlatformType(), URL, MALWARE_THREAT,
95 SB_THREAT_TYPE_URL_MALWARE);
94 } 96 }
95 97
96 const ListIdentifier GetUrlSocEngId() { 98 const ListIdentifier GetUrlSocEngId() {
97 return ListIdentifier(GetCurrentPlatformType(), URL, 99 return ListIdentifier(GetCurrentPlatformType(), URL,
98 SOCIAL_ENGINEERING_PUBLIC); 100 SOCIAL_ENGINEERING_PUBLIC, SB_THREAT_TYPE_URL_PHISHING);
99 } 101 }
100 102
101 // The Safe Browsing V4 server URL prefix. 103 // The Safe Browsing V4 server URL prefix.
102 const char kSbV4UrlPrefix[] = "https://safebrowsing.googleapis.com/v4"; 104 const char kSbV4UrlPrefix[] = "https://safebrowsing.googleapis.com/v4";
103 105
104 StoreAndHashPrefix::StoreAndHashPrefix(ListIdentifier list_id, 106 StoreAndHashPrefix::StoreAndHashPrefix(ListIdentifier list_id,
105 HashPrefix hash_prefix) 107 HashPrefix hash_prefix)
106 : list_id(list_id), hash_prefix(hash_prefix) {} 108 : list_id(list_id), hash_prefix(hash_prefix) {}
107 109
108 StoreAndHashPrefix::~StoreAndHashPrefix() {} 110 StoreAndHashPrefix::~StoreAndHashPrefix() {}
109 111
110 bool StoreAndHashPrefix::operator==(const StoreAndHashPrefix& other) const { 112 bool StoreAndHashPrefix::operator==(const StoreAndHashPrefix& other) const {
111 return list_id == other.list_id && hash_prefix == other.hash_prefix; 113 return list_id == other.list_id && hash_prefix == other.hash_prefix;
112 } 114 }
113 115
114 bool StoreAndHashPrefix::operator!=(const StoreAndHashPrefix& other) const { 116 bool StoreAndHashPrefix::operator!=(const StoreAndHashPrefix& other) const {
115 return !operator==(other); 117 return !operator==(other);
116 } 118 }
117 119
118 size_t StoreAndHashPrefix::hash() const { 120 size_t StoreAndHashPrefix::hash() const {
119 std::size_t first = list_id.hash(); 121 std::size_t first = list_id.hash();
120 std::size_t second = std::hash<std::string>()(hash_prefix); 122 std::size_t second = std::hash<std::string>()(hash_prefix);
121 123
122 return base::HashInts(first, second); 124 return base::HashInts(first, second);
123 } 125 }
124 126
125 bool ListIdentifier::operator==(const ListIdentifier& other) const { 127 bool ListIdentifier::operator==(const ListIdentifier& other) const {
126 return platform_type == other.platform_type && 128 return platform_type_ == other.platform_type_ &&
127 threat_entry_type == other.threat_entry_type && 129 threat_entry_type_ == other.threat_entry_type_ &&
128 threat_type == other.threat_type; 130 threat_type_ == other.threat_type_;
Nathan Parker 2016/09/21 19:02:57 Why not compare SBThreatType as well? And in the
vakh (use Gerrit instead) 2016/09/22 00:10:36 This triad is sufficient to identify a list. Anywa
129 } 131 }
130 132
131 bool ListIdentifier::operator!=(const ListIdentifier& other) const { 133 bool ListIdentifier::operator!=(const ListIdentifier& other) const {
132 return !operator==(other); 134 return !operator==(other);
133 } 135 }
134 136
135 size_t ListIdentifier::hash() const { 137 size_t ListIdentifier::hash() const {
136 std::size_t first = std::hash<unsigned int>()(platform_type); 138 std::size_t first = std::hash<unsigned int>()(platform_type_);
137 std::size_t second = std::hash<unsigned int>()(threat_entry_type); 139 std::size_t second = std::hash<unsigned int>()(threat_entry_type_);
138 std::size_t third = std::hash<unsigned int>()(threat_type); 140 std::size_t third = std::hash<unsigned int>()(threat_type_);
139 141
140 std::size_t interim = base::HashInts(first, second); 142 std::size_t interim = base::HashInts(first, second);
141 return base::HashInts(interim, third); 143 return base::HashInts(interim, third);
142 } 144 }
143 145
144 ListIdentifier::ListIdentifier() {} 146 ListIdentifier::ListIdentifier() {}
145 147
146 ListIdentifier::ListIdentifier(PlatformType platform_type, 148 ListIdentifier::ListIdentifier(PlatformType platform_type,
147 ThreatEntryType threat_entry_type, 149 ThreatEntryType threat_entry_type,
148 ThreatType threat_type) 150 ThreatType threat_type,
149 : platform_type(platform_type), 151 SBThreatType sb_threat_type)
150 threat_entry_type(threat_entry_type), 152 : platform_type_(platform_type),
151 threat_type(threat_type) { 153 threat_entry_type_(threat_entry_type),
154 threat_type_(threat_type),
155 sb_threat_type_(sb_threat_type) {
152 DCHECK(PlatformType_IsValid(platform_type)); 156 DCHECK(PlatformType_IsValid(platform_type));
153 DCHECK(ThreatEntryType_IsValid(threat_entry_type)); 157 DCHECK(ThreatEntryType_IsValid(threat_entry_type));
154 DCHECK(ThreatType_IsValid(threat_type)); 158 DCHECK(ThreatType_IsValid(threat_type));
155 } 159 }
160 ListIdentifier::ListIdentifier(PlatformType platform_type,
161 ThreatEntryType threat_entry_type,
162 ThreatType threat_type)
163 : ListIdentifier(platform_type,
164 threat_entry_type,
165 threat_type,
166 SB_THREAT_TYPE_SAFE) {}
156 167
157 ListIdentifier::ListIdentifier(const ListUpdateResponse& response) 168 ListIdentifier::ListIdentifier(const ListUpdateResponse& response)
158 : ListIdentifier(response.platform_type(), 169 : ListIdentifier(response.platform_type(),
159 response.threat_entry_type(), 170 response.threat_entry_type(),
160 response.threat_type()) {} 171 response.threat_type()) {}
161 172
162 V4ProtocolConfig::V4ProtocolConfig() : disable_auto_update(false) {} 173 V4ProtocolConfig::V4ProtocolConfig() : disable_auto_update(false) {}
163 174
164 V4ProtocolConfig::V4ProtocolConfig(const V4ProtocolConfig& other) = default; 175 V4ProtocolConfig::V4ProtocolConfig(const V4ProtocolConfig& other) = default;
165 176
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 // static 510 // static
500 void V4ProtocolManagerUtil::SetClientInfoFromConfig( 511 void V4ProtocolManagerUtil::SetClientInfoFromConfig(
501 ClientInfo* client_info, 512 ClientInfo* client_info,
502 const V4ProtocolConfig& config) { 513 const V4ProtocolConfig& config) {
503 DCHECK(client_info); 514 DCHECK(client_info);
504 client_info->set_client_id(config.client_name); 515 client_info->set_client_id(config.client_name);
505 client_info->set_client_version(config.version); 516 client_info->set_client_version(config.version);
506 } 517 }
507 518
508 } // namespace safe_browsing 519 } // namespace safe_browsing
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698