OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/extension_data_collect
ion.h" | 5 #include "chrome/browser/safe_browsing/incident_reporting/extension_data_collect
ion.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/memory/ptr_util.h" |
10 #include "base/strings/string_number_conversions.h" | 11 #include "base/strings/string_number_conversions.h" |
11 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
12 #include "build/build_config.h" | 13 #include "build/build_config.h" |
13 #include "chrome/browser/extensions/extension_service.h" | 14 #include "chrome/browser/extensions/extension_service.h" |
14 #include "chrome/browser/extensions/install_signer.h" | 15 #include "chrome/browser/extensions/install_signer.h" |
15 #include "chrome/browser/extensions/test_extension_system.h" | 16 #include "chrome/browser/extensions/test_extension_system.h" |
16 #include "chrome/browser/prefs/browser_prefs.h" | 17 #include "chrome/browser/prefs/browser_prefs.h" |
17 #include "chrome/browser/profiles/profile_manager.h" | 18 #include "chrome/browser/profiles/profile_manager.h" |
18 #include "chrome/common/pref_names.h" | 19 #include "chrome/common/pref_names.h" |
19 #include "chrome/common/safe_browsing/csd.pb.h" | 20 #include "chrome/common/safe_browsing/csd.pb.h" |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
131 new TestingProfileManager(TestingBrowserProcess::GetGlobal())); | 132 new TestingProfileManager(TestingBrowserProcess::GetGlobal())); |
132 ASSERT_TRUE(profile_manager_->SetUp()); | 133 ASSERT_TRUE(profile_manager_->SetUp()); |
133 } | 134 } |
134 | 135 |
135 void TearDown() override { | 136 void TearDown() override { |
136 profile_manager_.reset(); | 137 profile_manager_.reset(); |
137 TestingBrowserProcess::DeleteInstance(); | 138 TestingBrowserProcess::DeleteInstance(); |
138 testing::Test::TearDown(); | 139 testing::Test::TearDown(); |
139 } | 140 } |
140 | 141 |
141 scoped_ptr<ExtensionTestingProfile> CreateProfile( | 142 std::unique_ptr<ExtensionTestingProfile> CreateProfile( |
142 SafeBrowsingDisposition safe_browsing_opt_in) { | 143 SafeBrowsingDisposition safe_browsing_opt_in) { |
143 std::string profile_name("profile"); | 144 std::string profile_name("profile"); |
144 profile_name.append(base::IntToString(++profile_number_)); | 145 profile_name.append(base::IntToString(++profile_number_)); |
145 | 146 |
146 // Create prefs for the profile with safe browsing enabled or not. | 147 // Create prefs for the profile with safe browsing enabled or not. |
147 scoped_ptr<syncable_prefs::TestingPrefServiceSyncable> prefs( | 148 std::unique_ptr<syncable_prefs::TestingPrefServiceSyncable> prefs( |
148 new syncable_prefs::TestingPrefServiceSyncable); | 149 new syncable_prefs::TestingPrefServiceSyncable); |
149 chrome::RegisterUserProfilePrefs(prefs->registry()); | 150 chrome::RegisterUserProfilePrefs(prefs->registry()); |
150 prefs->SetBoolean(prefs::kSafeBrowsingEnabled, | 151 prefs->SetBoolean(prefs::kSafeBrowsingEnabled, |
151 safe_browsing_opt_in == SAFE_BROWSING_OPT_IN); | 152 safe_browsing_opt_in == SAFE_BROWSING_OPT_IN); |
152 prefs->SetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled, | 153 prefs->SetBoolean(prefs::kSafeBrowsingExtendedReportingEnabled, |
153 safe_browsing_opt_in == SAFE_BROWSING_OPT_IN); | 154 safe_browsing_opt_in == SAFE_BROWSING_OPT_IN); |
154 TestingProfile* profile = profile_manager_->CreateTestingProfile( | 155 TestingProfile* profile = profile_manager_->CreateTestingProfile( |
155 profile_name, std::move(prefs), | 156 profile_name, std::move(prefs), |
156 base::UTF8ToUTF16(profile_name), // user_name | 157 base::UTF8ToUTF16(profile_name), // user_name |
157 0, // avatar_id | 158 0, // avatar_id |
158 std::string(), // supervised_user_id | 159 std::string(), // supervised_user_id |
159 TestingProfile::TestingFactories()); | 160 TestingProfile::TestingFactories()); |
160 | 161 |
161 return make_scoped_ptr(new ExtensionTestingProfile(profile)); | 162 return base::WrapUnique(new ExtensionTestingProfile(profile)); |
162 } | 163 } |
163 | 164 |
164 content::TestBrowserThreadBundle browser_thread_bundle_; | 165 content::TestBrowserThreadBundle browser_thread_bundle_; |
165 scoped_ptr<TestingProfileManager> profile_manager_; | 166 std::unique_ptr<TestingProfileManager> profile_manager_; |
166 | 167 |
167 private: | 168 private: |
168 int profile_number_; | 169 int profile_number_; |
169 | 170 |
170 #if defined OS_CHROMEOS | 171 #if defined OS_CHROMEOS |
171 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; | 172 chromeos::ScopedTestDeviceSettingsService test_device_settings_service_; |
172 chromeos::ScopedTestCrosSettings test_cros_settings_; | 173 chromeos::ScopedTestCrosSettings test_cros_settings_; |
173 chromeos::ScopedTestUserManager test_user_manager_; | 174 chromeos::ScopedTestUserManager test_user_manager_; |
174 #endif | 175 #endif |
175 }; | 176 }; |
176 | 177 |
177 TEST_F(ExtensionDataCollectionTest, CollectExtensionDataNoExtensions) { | 178 TEST_F(ExtensionDataCollectionTest, CollectExtensionDataNoExtensions) { |
178 scoped_ptr<ExtensionTestingProfile> profile = | 179 std::unique_ptr<ExtensionTestingProfile> profile = |
179 CreateProfile(SAFE_BROWSING_OPT_IN); | 180 CreateProfile(SAFE_BROWSING_OPT_IN); |
180 | 181 |
181 ClientIncidentReport_ExtensionData data; | 182 ClientIncidentReport_ExtensionData data; |
182 CollectExtensionData(&data); | 183 CollectExtensionData(&data); |
183 | 184 |
184 ASSERT_FALSE(data.has_last_installed_extension()); | 185 ASSERT_FALSE(data.has_last_installed_extension()); |
185 } | 186 } |
186 | 187 |
187 TEST_F(ExtensionDataCollectionTest, CollectExtensionDataNoSafeBrowsing) { | 188 TEST_F(ExtensionDataCollectionTest, CollectExtensionDataNoSafeBrowsing) { |
188 scoped_ptr<ExtensionTestingProfile> profile = | 189 std::unique_ptr<ExtensionTestingProfile> profile = |
189 CreateProfile(SAFE_BROWSING_OPT_OUT); | 190 CreateProfile(SAFE_BROWSING_OPT_OUT); |
190 profile->AddExtension(); | 191 profile->AddExtension(); |
191 | 192 |
192 ClientIncidentReport_ExtensionData data; | 193 ClientIncidentReport_ExtensionData data; |
193 CollectExtensionData(&data); | 194 CollectExtensionData(&data); |
194 | 195 |
195 ASSERT_FALSE(data.has_last_installed_extension()); | 196 ASSERT_FALSE(data.has_last_installed_extension()); |
196 } | 197 } |
197 | 198 |
198 TEST_F(ExtensionDataCollectionTest, CollectExtensionDataWithExtension) { | 199 TEST_F(ExtensionDataCollectionTest, CollectExtensionDataWithExtension) { |
199 std::string extension_id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; | 200 std::string extension_id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; |
200 std::string extension_name = "my_test_extension"; | 201 std::string extension_name = "my_test_extension"; |
201 base::Time install_time = base::Time::Now(); | 202 base::Time install_time = base::Time::Now(); |
202 std::string version = "1.4.2"; | 203 std::string version = "1.4.2"; |
203 std::string description = "Test Extension"; | 204 std::string description = "Test Extension"; |
204 std::string update_url = "https://www.chromium.org"; | 205 std::string update_url = "https://www.chromium.org"; |
205 int state = extensions::Extension::State::ENABLED; | 206 int state = extensions::Extension::State::ENABLED; |
206 | 207 |
207 scoped_ptr<ExtensionTestingProfile> profile = | 208 std::unique_ptr<ExtensionTestingProfile> profile = |
208 CreateProfile(SAFE_BROWSING_OPT_IN); | 209 CreateProfile(SAFE_BROWSING_OPT_IN); |
209 profile->AddExtension(extension_id, extension_name, install_time, version, | 210 profile->AddExtension(extension_id, extension_name, install_time, version, |
210 description, update_url, state); | 211 description, update_url, state); |
211 | 212 |
212 extensions::ExtensionIdSet valid_ids; | 213 extensions::ExtensionIdSet valid_ids; |
213 extensions::ExtensionIdSet invalid_ids; | 214 extensions::ExtensionIdSet invalid_ids; |
214 invalid_ids.insert(extension_id); | 215 invalid_ids.insert(extension_id); |
215 extensions::InstallSignature signature = {}; | 216 extensions::InstallSignature signature = {}; |
216 signature.ids = valid_ids; | 217 signature.ids = valid_ids; |
217 signature.invalid_ids = invalid_ids; | 218 signature.invalid_ids = invalid_ids; |
(...skipping 20 matching lines...) Expand all Loading... |
238 "manifest_version\":2,\"name\":\"my_test_extension\",\"update_url\":\"" | 239 "manifest_version\":2,\"name\":\"my_test_extension\",\"update_url\":\"" |
239 "https://www.chromium.org\",\"version\":\"1.4.2\"}"; | 240 "https://www.chromium.org\",\"version\":\"1.4.2\"}"; |
240 ASSERT_EQ(extension_info.manifest(), expected_manifest); | 241 ASSERT_EQ(extension_info.manifest(), expected_manifest); |
241 } | 242 } |
242 | 243 |
243 TEST_F(ExtensionDataCollectionTest, CollectsLastInstalledExtension) { | 244 TEST_F(ExtensionDataCollectionTest, CollectsLastInstalledExtension) { |
244 std::string extension_id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; | 245 std::string extension_id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; |
245 std::string extension_name = "extension_2"; | 246 std::string extension_name = "extension_2"; |
246 base::Time install_time = base::Time::Now() - base::TimeDelta::FromMinutes(3); | 247 base::Time install_time = base::Time::Now() - base::TimeDelta::FromMinutes(3); |
247 | 248 |
248 scoped_ptr<ExtensionTestingProfile> profile = | 249 std::unique_ptr<ExtensionTestingProfile> profile = |
249 CreateProfile(SAFE_BROWSING_OPT_IN); | 250 CreateProfile(SAFE_BROWSING_OPT_IN); |
250 profile->AddExtension("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", "extension_1", | 251 profile->AddExtension("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", "extension_1", |
251 base::Time::Now() - base::TimeDelta::FromDays(2)); | 252 base::Time::Now() - base::TimeDelta::FromDays(2)); |
252 profile->AddExtension(extension_id, extension_name, install_time); | 253 profile->AddExtension(extension_id, extension_name, install_time); |
253 profile->AddExtension("cccccccccccccccccccccccccccccccc", "extension_3", | 254 profile->AddExtension("cccccccccccccccccccccccccccccccc", "extension_3", |
254 base::Time::Now() - base::TimeDelta::FromHours(4)); | 255 base::Time::Now() - base::TimeDelta::FromHours(4)); |
255 | 256 |
256 ClientIncidentReport_ExtensionData data; | 257 ClientIncidentReport_ExtensionData data; |
257 CollectExtensionData(&data); | 258 CollectExtensionData(&data); |
258 | 259 |
259 ASSERT_TRUE(data.has_last_installed_extension()); | 260 ASSERT_TRUE(data.has_last_installed_extension()); |
260 ClientIncidentReport_ExtensionData_ExtensionInfo extension_info = | 261 ClientIncidentReport_ExtensionData_ExtensionInfo extension_info = |
261 data.last_installed_extension(); | 262 data.last_installed_extension(); |
262 | 263 |
263 ASSERT_EQ(extension_info.id(), extension_id); | 264 ASSERT_EQ(extension_info.id(), extension_id); |
264 ASSERT_EQ(extension_info.name(), extension_name); | 265 ASSERT_EQ(extension_info.name(), extension_name); |
265 ASSERT_EQ(extension_info.install_time_msec(), install_time.ToJavaTime()); | 266 ASSERT_EQ(extension_info.install_time_msec(), install_time.ToJavaTime()); |
266 } | 267 } |
267 | 268 |
268 TEST_F(ExtensionDataCollectionTest, IgnoresExtensionsIfNoSafeBrowsing) { | 269 TEST_F(ExtensionDataCollectionTest, IgnoresExtensionsIfNoSafeBrowsing) { |
269 std::string extension_id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; | 270 std::string extension_id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; |
270 std::string extension_name = "extension_2"; | 271 std::string extension_name = "extension_2"; |
271 | 272 |
272 scoped_ptr<ExtensionTestingProfile> profile = | 273 std::unique_ptr<ExtensionTestingProfile> profile = |
273 CreateProfile(SAFE_BROWSING_OPT_IN); | 274 CreateProfile(SAFE_BROWSING_OPT_IN); |
274 | 275 |
275 profile->AddExtension(extension_id, extension_name, | 276 profile->AddExtension(extension_id, extension_name, |
276 base::Time::Now() - base::TimeDelta::FromDays(3)); | 277 base::Time::Now() - base::TimeDelta::FromDays(3)); |
277 | 278 |
278 scoped_ptr<ExtensionTestingProfile> profile_without_safe_browsing = | 279 std::unique_ptr<ExtensionTestingProfile> profile_without_safe_browsing = |
279 CreateProfile(SAFE_BROWSING_OPT_OUT); | 280 CreateProfile(SAFE_BROWSING_OPT_OUT); |
280 profile_without_safe_browsing->AddExtension( | 281 profile_without_safe_browsing->AddExtension( |
281 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", "extension_1", | 282 "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb", "extension_1", |
282 base::Time::Now() - base::TimeDelta::FromDays(2)); | 283 base::Time::Now() - base::TimeDelta::FromDays(2)); |
283 | 284 |
284 ClientIncidentReport_ExtensionData data; | 285 ClientIncidentReport_ExtensionData data; |
285 CollectExtensionData(&data); | 286 CollectExtensionData(&data); |
286 | 287 |
287 ASSERT_TRUE(data.has_last_installed_extension()); | 288 ASSERT_TRUE(data.has_last_installed_extension()); |
288 ClientIncidentReport_ExtensionData_ExtensionInfo extension_info = | 289 ClientIncidentReport_ExtensionData_ExtensionInfo extension_info = |
289 data.last_installed_extension(); | 290 data.last_installed_extension(); |
290 | 291 |
291 ASSERT_EQ(extension_info.id(), extension_id); | 292 ASSERT_EQ(extension_info.id(), extension_id); |
292 ASSERT_EQ(extension_info.name(), extension_name); | 293 ASSERT_EQ(extension_info.name(), extension_name); |
293 } | 294 } |
294 | 295 |
295 } // namespace safe_browsing | 296 } // namespace safe_browsing |
OLD | NEW |