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

Side by Side Diff: chrome/browser/extensions/extension_management_unittest.cc

Issue 602803002: Refactor ExtensionManagement (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ext-fix
Patch Set: fix addressing #7 Created 6 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 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 <algorithm> 5 #include <algorithm>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/json/json_parser.h" 8 #include "base/json/json_parser.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/prefs/pref_registry_simple.h" 10 #include "base/prefs/pref_registry_simple.h"
11 #include "base/prefs/testing_pref_service.h" 11 #include "base/prefs/testing_pref_service.h"
12 #include "base/values.h" 12 #include "base/values.h"
13 #include "chrome/browser/extensions/extension_management.h" 13 #include "chrome/browser/extensions/extension_management.h"
14 #include "chrome/browser/extensions/extension_management_internal.h"
14 #include "chrome/browser/extensions/extension_management_test_util.h" 15 #include "chrome/browser/extensions/extension_management_test_util.h"
15 #include "chrome/browser/extensions/external_policy_loader.h" 16 #include "chrome/browser/extensions/external_policy_loader.h"
16 #include "extensions/browser/pref_names.h" 17 #include "extensions/browser/pref_names.h"
17 #include "extensions/common/manifest.h" 18 #include "extensions/common/manifest.h"
18 #include "extensions/common/manifest_constants.h" 19 #include "extensions/common/manifest_constants.h"
19 #include "extensions/common/url_pattern.h" 20 #include "extensions/common/url_pattern.h"
20 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
21 #include "url/gurl.h" 22 #include "url/gurl.h"
22 23
23 namespace extensions { 24 namespace extensions {
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 pref_service_->SetUserPref(path, value); 87 pref_service_->SetUserPref(path, value);
87 } 88 }
88 89
89 void RemovePref(bool managed, const char* path) { 90 void RemovePref(bool managed, const char* path) {
90 if (managed) 91 if (managed)
91 pref_service_->RemoveManagedPref(path); 92 pref_service_->RemoveManagedPref(path);
92 else 93 else
93 pref_service_->RemoveUserPref(path); 94 pref_service_->RemoveUserPref(path);
94 } 95 }
95 96
97 const internal::IndividualSettings* ReadById(const ExtensionId& id) {
98 return extension_management_->ReadById(id);
99 }
100
101 const internal::GlobalSettings* ReadGlobalSettings() {
102 return extension_management_->ReadGlobalSettings();
103 }
104
96 void SetExampleDictPref() { 105 void SetExampleDictPref() {
97 std::string error_msg; 106 std::string error_msg;
98 scoped_ptr<base::Value> parsed(base::JSONReader::ReadAndReturnError( 107 scoped_ptr<base::Value> parsed(base::JSONReader::ReadAndReturnError(
99 kExampleDictPreference, 108 kExampleDictPreference,
100 base::JSONParserOptions::JSON_ALLOW_TRAILING_COMMAS, 109 base::JSONParserOptions::JSON_ALLOW_TRAILING_COMMAS,
101 NULL, 110 NULL,
102 &error_msg)); 111 &error_msg));
103 ASSERT_TRUE(parsed && parsed->IsType(base::Value::TYPE_DICTIONARY)) 112 ASSERT_TRUE(parsed && parsed->IsType(base::Value::TYPE_DICTIONARY))
104 << error_msg; 113 << error_msg;
105 SetPref(true, pref_names::kExtensionManagement, parsed.release()); 114 SetPref(true, pref_names::kExtensionManagement, parsed.release());
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 } 204 }
196 205
197 // Verify that preference controlled by legacy ExtensionInstallSources policy is 206 // Verify that preference controlled by legacy ExtensionInstallSources policy is
198 // handled well. 207 // handled well.
199 TEST_F(ExtensionManagementServiceTest, LegacyInstallSources) { 208 TEST_F(ExtensionManagementServiceTest, LegacyInstallSources) {
200 base::ListValue allowed_sites_pref; 209 base::ListValue allowed_sites_pref;
201 allowed_sites_pref.AppendString("https://www.example.com/foo"); 210 allowed_sites_pref.AppendString("https://www.example.com/foo");
202 allowed_sites_pref.AppendString("https://corp.mycompany.com/*"); 211 allowed_sites_pref.AppendString("https://corp.mycompany.com/*");
203 SetPref( 212 SetPref(
204 true, pref_names::kAllowedInstallSites, allowed_sites_pref.DeepCopy()); 213 true, pref_names::kAllowedInstallSites, allowed_sites_pref.DeepCopy());
205 const URLPatternSet& allowed_sites = 214 const URLPatternSet& allowed_sites = ReadGlobalSettings()->install_sources;
206 extension_management_->ReadGlobalSettings().install_sources; 215 ASSERT_TRUE(ReadGlobalSettings()->has_restricted_install_sources);
207 ASSERT_TRUE(extension_management_->ReadGlobalSettings()
208 .has_restricted_install_sources);
209 EXPECT_FALSE(allowed_sites.is_empty()); 216 EXPECT_FALSE(allowed_sites.is_empty());
210 EXPECT_TRUE(allowed_sites.MatchesURL(GURL("https://www.example.com/foo"))); 217 EXPECT_TRUE(allowed_sites.MatchesURL(GURL("https://www.example.com/foo")));
211 EXPECT_FALSE(allowed_sites.MatchesURL(GURL("https://www.example.com/bar"))); 218 EXPECT_FALSE(allowed_sites.MatchesURL(GURL("https://www.example.com/bar")));
212 EXPECT_TRUE( 219 EXPECT_TRUE(
213 allowed_sites.MatchesURL(GURL("https://corp.mycompany.com/entry"))); 220 allowed_sites.MatchesURL(GURL("https://corp.mycompany.com/entry")));
214 EXPECT_FALSE( 221 EXPECT_FALSE(
215 allowed_sites.MatchesURL(GURL("https://www.mycompany.com/entry"))); 222 allowed_sites.MatchesURL(GURL("https://www.mycompany.com/entry")));
216 } 223 }
217 224
218 // Verify that preference controlled by legacy ExtensionAllowedTypes policy is 225 // Verify that preference controlled by legacy ExtensionAllowedTypes policy is
219 // handled well. 226 // handled well.
220 TEST_F(ExtensionManagementServiceTest, LegacyAllowedTypes) { 227 TEST_F(ExtensionManagementServiceTest, LegacyAllowedTypes) {
221 base::ListValue allowed_types_pref; 228 base::ListValue allowed_types_pref;
222 allowed_types_pref.AppendInteger(Manifest::TYPE_THEME); 229 allowed_types_pref.AppendInteger(Manifest::TYPE_THEME);
223 allowed_types_pref.AppendInteger(Manifest::TYPE_USER_SCRIPT); 230 allowed_types_pref.AppendInteger(Manifest::TYPE_USER_SCRIPT);
224 231
225 SetPref(true, pref_names::kAllowedTypes, allowed_types_pref.DeepCopy()); 232 SetPref(true, pref_names::kAllowedTypes, allowed_types_pref.DeepCopy());
226 const std::vector<Manifest::Type>& allowed_types = 233 const std::vector<Manifest::Type>& allowed_types =
227 extension_management_->ReadGlobalSettings().allowed_types; 234 ReadGlobalSettings()->allowed_types;
228 ASSERT_TRUE( 235 ASSERT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types);
229 extension_management_->ReadGlobalSettings().has_restricted_allowed_types);
230 EXPECT_TRUE(allowed_types.size() == 2); 236 EXPECT_TRUE(allowed_types.size() == 2);
231 EXPECT_FALSE(std::find(allowed_types.begin(), 237 EXPECT_FALSE(std::find(allowed_types.begin(),
232 allowed_types.end(), 238 allowed_types.end(),
233 Manifest::TYPE_EXTENSION) != allowed_types.end()); 239 Manifest::TYPE_EXTENSION) != allowed_types.end());
234 EXPECT_TRUE(std::find(allowed_types.begin(), 240 EXPECT_TRUE(std::find(allowed_types.begin(),
235 allowed_types.end(), 241 allowed_types.end(),
236 Manifest::TYPE_THEME) != allowed_types.end()); 242 Manifest::TYPE_THEME) != allowed_types.end());
237 EXPECT_TRUE(std::find(allowed_types.begin(), 243 EXPECT_TRUE(std::find(allowed_types.begin(),
238 allowed_types.end(), 244 allowed_types.end(),
239 Manifest::TYPE_USER_SCRIPT) != allowed_types.end()); 245 Manifest::TYPE_USER_SCRIPT) != allowed_types.end());
240 } 246 }
241 247
242 // Verify that preference controlled by legacy ExtensionInstallBlacklist policy 248 // Verify that preference controlled by legacy ExtensionInstallBlacklist policy
243 // is handled well. 249 // is handled well.
244 TEST_F(ExtensionManagementServiceTest, LegacyInstallBlacklist) { 250 TEST_F(ExtensionManagementServiceTest, LegacyInstallBlacklist) {
245 base::ListValue denied_list_pref; 251 base::ListValue denied_list_pref;
246 denied_list_pref.AppendString(kTargetExtension); 252 denied_list_pref.AppendString(kTargetExtension);
247 253
248 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy()); 254 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy());
249 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 255 EXPECT_EQ(ReadById(kTargetExtension)->installation_mode,
250 ExtensionManagement::INSTALLATION_BLOCKED); 256 ExtensionManagement::INSTALLATION_BLOCKED);
251 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode, 257 EXPECT_EQ(ReadById(kOtherExtension)->installation_mode,
252 ExtensionManagement::INSTALLATION_ALLOWED); 258 ExtensionManagement::INSTALLATION_ALLOWED);
253 } 259 }
254 260
255 // Verify that preference controlled by legacy ExtensionInstallWhitelist policy 261 // Verify that preference controlled by legacy ExtensionInstallWhitelist policy
256 // is handled well. 262 // is handled well.
257 TEST_F(ExtensionManagementServiceTest, LegacyInstallWhitelist) { 263 TEST_F(ExtensionManagementServiceTest, LegacyInstallWhitelist) {
258 base::ListValue denied_list_pref; 264 base::ListValue denied_list_pref;
259 denied_list_pref.AppendString("*"); 265 denied_list_pref.AppendString("*");
260 base::ListValue allowed_list_pref; 266 base::ListValue allowed_list_pref;
261 allowed_list_pref.AppendString(kTargetExtension); 267 allowed_list_pref.AppendString(kTargetExtension);
262 268
263 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy()); 269 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy());
264 SetPref(true, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy()); 270 SetPref(true, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy());
265 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 271 EXPECT_EQ(ReadById(kTargetExtension)->installation_mode,
266 ExtensionManagement::INSTALLATION_ALLOWED); 272 ExtensionManagement::INSTALLATION_ALLOWED);
267 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode, 273 EXPECT_EQ(ReadById(kOtherExtension)->installation_mode,
268 ExtensionManagement::INSTALLATION_BLOCKED); 274 ExtensionManagement::INSTALLATION_BLOCKED);
269 275
270 // Verify that install whitelist preference set by user is ignored. 276 // Verify that install whitelist preference set by user is ignored.
271 RemovePref(true, pref_names::kInstallAllowList); 277 RemovePref(true, pref_names::kInstallAllowList);
272 SetPref(false, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy()); 278 SetPref(false, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy());
273 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 279 EXPECT_EQ(ReadById(kTargetExtension)->installation_mode,
274 ExtensionManagement::INSTALLATION_BLOCKED); 280 ExtensionManagement::INSTALLATION_BLOCKED);
275 } 281 }
276 282
277 // Verify that preference controlled by legacy ExtensionInstallForcelist policy 283 // Verify that preference controlled by legacy ExtensionInstallForcelist policy
278 // is handled well. 284 // is handled well.
279 TEST_F(ExtensionManagementServiceTest, LegacyInstallForcelist) { 285 TEST_F(ExtensionManagementServiceTest, LegacyInstallForcelist) {
280 base::DictionaryValue forced_list_pref; 286 base::DictionaryValue forced_list_pref;
281 ExternalPolicyLoader::AddExtension( 287 ExternalPolicyLoader::AddExtension(
282 &forced_list_pref, kTargetExtension, kExampleUpdateUrl); 288 &forced_list_pref, kTargetExtension, kExampleUpdateUrl);
283 289
284 SetPref(true, pref_names::kInstallForceList, forced_list_pref.DeepCopy()); 290 SetPref(true, pref_names::kInstallForceList, forced_list_pref.DeepCopy());
285 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 291 EXPECT_EQ(ReadById(kTargetExtension)->installation_mode,
286 ExtensionManagement::INSTALLATION_FORCED); 292 ExtensionManagement::INSTALLATION_FORCED);
287 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).update_url, 293 EXPECT_EQ(ReadById(kTargetExtension)->update_url, kExampleUpdateUrl);
288 kExampleUpdateUrl); 294 EXPECT_EQ(ReadById(kOtherExtension)->installation_mode,
289 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
290 ExtensionManagement::INSTALLATION_ALLOWED); 295 ExtensionManagement::INSTALLATION_ALLOWED);
291 296
292 // Verify that install forcelist preference set by user is ignored. 297 // Verify that install forcelist preference set by user is ignored.
293 RemovePref(true, pref_names::kInstallForceList); 298 RemovePref(true, pref_names::kInstallForceList);
294 SetPref(false, pref_names::kInstallForceList, forced_list_pref.DeepCopy()); 299 SetPref(false, pref_names::kInstallForceList, forced_list_pref.DeepCopy());
295 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 300 EXPECT_EQ(ReadById(kTargetExtension)->installation_mode,
296 ExtensionManagement::INSTALLATION_ALLOWED); 301 ExtensionManagement::INSTALLATION_ALLOWED);
297 } 302 }
298 303
299 // Tests parsing of new dictionary preference. 304 // Tests parsing of new dictionary preference.
300 TEST_F(ExtensionManagementServiceTest, PreferenceParsing) { 305 TEST_F(ExtensionManagementServiceTest, PreferenceParsing) {
301 SetExampleDictPref(); 306 SetExampleDictPref();
302 307
303 // Verifies the installation mode settings. 308 // Verifies the installation mode settings.
304 EXPECT_TRUE(extension_management_->BlacklistedByDefault()); 309 EXPECT_TRUE(extension_management_->BlacklistedByDefault());
305 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 310 EXPECT_EQ(ReadById(kTargetExtension)->installation_mode,
306 ExtensionManagement::INSTALLATION_ALLOWED); 311 ExtensionManagement::INSTALLATION_ALLOWED);
307 EXPECT_EQ( 312 EXPECT_EQ(ReadById(kTargetExtension2)->installation_mode,
308 extension_management_->ReadById(kTargetExtension2).installation_mode, 313 ExtensionManagement::INSTALLATION_FORCED);
309 ExtensionManagement::INSTALLATION_FORCED); 314 EXPECT_EQ(ReadById(kTargetExtension2)->update_url, kExampleUpdateUrl);
310 EXPECT_EQ(extension_management_->ReadById(kTargetExtension2).update_url, 315 EXPECT_EQ(ReadById(kTargetExtension3)->installation_mode,
311 kExampleUpdateUrl); 316 ExtensionManagement::INSTALLATION_RECOMMENDED);
312 EXPECT_EQ( 317 EXPECT_EQ(ReadById(kTargetExtension3)->update_url, kExampleUpdateUrl);
313 extension_management_->ReadById(kTargetExtension3).installation_mode, 318 EXPECT_EQ(ReadById(kOtherExtension)->installation_mode,
314 ExtensionManagement::INSTALLATION_RECOMMENDED);
315 EXPECT_EQ(extension_management_->ReadById(kTargetExtension3).update_url,
316 kExampleUpdateUrl);
317 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
318 ExtensionManagement::INSTALLATION_BLOCKED); 319 ExtensionManagement::INSTALLATION_BLOCKED);
319 320
320 // Verifies global settings. 321 // Verifies global settings.
321 EXPECT_TRUE(extension_management_->ReadGlobalSettings() 322 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources);
322 .has_restricted_install_sources); 323 const URLPatternSet& allowed_sites = ReadGlobalSettings()->install_sources;
323 const URLPatternSet& allowed_sites =
324 extension_management_->ReadGlobalSettings().install_sources;
325 EXPECT_EQ(allowed_sites.size(), 1u); 324 EXPECT_EQ(allowed_sites.size(), 1u);
326 EXPECT_TRUE(allowed_sites.MatchesURL(GURL("http://foo.com/entry"))); 325 EXPECT_TRUE(allowed_sites.MatchesURL(GURL("http://foo.com/entry")));
327 EXPECT_FALSE(allowed_sites.MatchesURL(GURL("http://bar.com/entry"))); 326 EXPECT_FALSE(allowed_sites.MatchesURL(GURL("http://bar.com/entry")));
328 327
329 EXPECT_TRUE( 328 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types);
330 extension_management_->ReadGlobalSettings().has_restricted_allowed_types);
331 const std::vector<Manifest::Type>& allowed_types = 329 const std::vector<Manifest::Type>& allowed_types =
332 extension_management_->ReadGlobalSettings().allowed_types; 330 ReadGlobalSettings()->allowed_types;
333 EXPECT_EQ(allowed_types.size(), 2u); 331 EXPECT_EQ(allowed_types.size(), 2u);
334 EXPECT_TRUE(std::find(allowed_types.begin(), 332 EXPECT_TRUE(std::find(allowed_types.begin(),
335 allowed_types.end(), 333 allowed_types.end(),
336 Manifest::TYPE_THEME) != allowed_types.end()); 334 Manifest::TYPE_THEME) != allowed_types.end());
337 EXPECT_TRUE(std::find(allowed_types.begin(), 335 EXPECT_TRUE(std::find(allowed_types.begin(),
338 allowed_types.end(), 336 allowed_types.end(),
339 Manifest::TYPE_USER_SCRIPT) != allowed_types.end()); 337 Manifest::TYPE_USER_SCRIPT) != allowed_types.end());
340 } 338 }
341 339
342 // Tests functionality of new preference as to deprecate legacy 340 // Tests functionality of new preference as to deprecate legacy
343 // ExtensionInstallSources policy. 341 // ExtensionInstallSources policy.
344 TEST_F(ExtensionManagementServiceTest, NewInstallSources) { 342 TEST_F(ExtensionManagementServiceTest, NewInstallSources) {
345 // Set the legacy preference, and verifies that it works. 343 // Set the legacy preference, and verifies that it works.
346 base::ListValue allowed_sites_pref; 344 base::ListValue allowed_sites_pref;
347 allowed_sites_pref.AppendString("https://www.example.com/foo"); 345 allowed_sites_pref.AppendString("https://www.example.com/foo");
348 SetPref( 346 SetPref(
349 true, pref_names::kAllowedInstallSites, allowed_sites_pref.DeepCopy()); 347 true, pref_names::kAllowedInstallSites, allowed_sites_pref.DeepCopy());
350 EXPECT_TRUE(extension_management_->ReadGlobalSettings() 348 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources);
351 .has_restricted_install_sources); 349 EXPECT_TRUE(ReadGlobalSettings()->install_sources.MatchesURL(
352 EXPECT_TRUE( 350 GURL("https://www.example.com/foo")));
353 extension_management_->ReadGlobalSettings()
354 .install_sources.MatchesURL(GURL("https://www.example.com/foo")));
355 351
356 // Set the new dictionary preference. 352 // Set the new dictionary preference.
357 { 353 {
358 PrefUpdater updater(pref_service_.get()); 354 PrefUpdater updater(pref_service_.get());
359 updater.ClearInstallSources(); 355 updater.ClearInstallSources();
360 } 356 }
361 // Verifies that the new one overrides the legacy ones. 357 // Verifies that the new one overrides the legacy ones.
362 EXPECT_TRUE(extension_management_->ReadGlobalSettings() 358 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources);
363 .has_restricted_install_sources); 359 EXPECT_FALSE(ReadGlobalSettings()->install_sources.MatchesURL(
364 EXPECT_FALSE( 360 GURL("https://www.example.com/foo")));
365 extension_management_->ReadGlobalSettings()
366 .install_sources.MatchesURL(GURL("https://www.example.com/foo")));
367 361
368 // Updates the new dictionary preference. 362 // Updates the new dictionary preference.
369 { 363 {
370 PrefUpdater updater(pref_service_.get()); 364 PrefUpdater updater(pref_service_.get());
371 updater.AddInstallSource("https://corp.mycompany.com/*"); 365 updater.AddInstallSource("https://corp.mycompany.com/*");
372 } 366 }
373 EXPECT_TRUE(extension_management_->ReadGlobalSettings() 367 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources);
374 .has_restricted_install_sources); 368 EXPECT_TRUE(ReadGlobalSettings()->install_sources.MatchesURL(
375 EXPECT_TRUE(extension_management_->ReadGlobalSettings() 369 GURL("https://corp.mycompany.com/entry")));
376 .install_sources.MatchesURL(
377 GURL("https://corp.mycompany.com/entry")));
378 } 370 }
379 371
380 // Tests functionality of new preference as to deprecate legacy 372 // Tests functionality of new preference as to deprecate legacy
381 // ExtensionAllowedTypes policy. 373 // ExtensionAllowedTypes policy.
382 TEST_F(ExtensionManagementServiceTest, NewAllowedTypes) { 374 TEST_F(ExtensionManagementServiceTest, NewAllowedTypes) {
383 // Set the legacy preference, and verifies that it works. 375 // Set the legacy preference, and verifies that it works.
384 base::ListValue allowed_types_pref; 376 base::ListValue allowed_types_pref;
385 allowed_types_pref.AppendInteger(Manifest::TYPE_USER_SCRIPT); 377 allowed_types_pref.AppendInteger(Manifest::TYPE_USER_SCRIPT);
386 SetPref(true, pref_names::kAllowedTypes, allowed_types_pref.DeepCopy()); 378 SetPref(true, pref_names::kAllowedTypes, allowed_types_pref.DeepCopy());
387 EXPECT_TRUE( 379 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types);
388 extension_management_->ReadGlobalSettings().has_restricted_allowed_types); 380 EXPECT_EQ(ReadGlobalSettings()->allowed_types.size(), 1u);
389 EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types.size(), 381 EXPECT_EQ(ReadGlobalSettings()->allowed_types[0], Manifest::TYPE_USER_SCRIPT);
390 1u);
391 EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types[0],
392 Manifest::TYPE_USER_SCRIPT);
393 382
394 // Set the new dictionary preference. 383 // Set the new dictionary preference.
395 { 384 {
396 PrefUpdater updater(pref_service_.get()); 385 PrefUpdater updater(pref_service_.get());
397 updater.ClearAllowedTypes(); 386 updater.ClearAllowedTypes();
398 } 387 }
399 // Verifies that the new one overrides the legacy ones. 388 // Verifies that the new one overrides the legacy ones.
400 EXPECT_TRUE( 389 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types);
401 extension_management_->ReadGlobalSettings().has_restricted_allowed_types); 390 EXPECT_EQ(ReadGlobalSettings()->allowed_types.size(), 0u);
402 EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types.size(),
403 0u);
404 391
405 // Updates the new dictionary preference. 392 // Updates the new dictionary preference.
406 { 393 {
407 PrefUpdater updater(pref_service_.get()); 394 PrefUpdater updater(pref_service_.get());
408 updater.AddAllowedType("theme"); 395 updater.AddAllowedType("theme");
409 } 396 }
410 EXPECT_TRUE( 397 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types);
411 extension_management_->ReadGlobalSettings().has_restricted_allowed_types); 398 EXPECT_EQ(ReadGlobalSettings()->allowed_types.size(), 1u);
412 EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types.size(), 399 EXPECT_EQ(ReadGlobalSettings()->allowed_types[0], Manifest::TYPE_THEME);
413 1u);
414 EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types[0],
415 Manifest::TYPE_THEME);
416 } 400 }
417 401
418 // Tests functionality of new preference as to deprecate legacy 402 // Tests functionality of new preference as to deprecate legacy
419 // ExtensionInstallBlacklist policy. 403 // ExtensionInstallBlacklist policy.
420 TEST_F(ExtensionManagementServiceTest, NewInstallBlacklist) { 404 TEST_F(ExtensionManagementServiceTest, NewInstallBlacklist) {
421 // Set the new dictionary preference. 405 // Set the new dictionary preference.
422 { 406 {
423 PrefUpdater updater(pref_service_.get()); 407 PrefUpdater updater(pref_service_.get());
424 updater.SetBlacklistedByDefault(false); // Allowed by default. 408 updater.SetBlacklistedByDefault(false); // Allowed by default.
425 updater.SetIndividualExtensionInstallationAllowed(kTargetExtension, false); 409 updater.SetIndividualExtensionInstallationAllowed(kTargetExtension, false);
426 updater.ClearPerExtensionSettings(kTargetExtension2); 410 updater.ClearPerExtensionSettings(kTargetExtension2);
427 updater.ClearPerExtensionSettings(kOtherExtension); 411 updater.ClearPerExtensionSettings(kOtherExtension);
428 } 412 }
429 EXPECT_FALSE(extension_management_->BlacklistedByDefault()); 413 EXPECT_FALSE(extension_management_->BlacklistedByDefault());
430 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 414 EXPECT_EQ(ReadById(kTargetExtension)->installation_mode,
431 ExtensionManagement::INSTALLATION_BLOCKED); 415 ExtensionManagement::INSTALLATION_BLOCKED);
432 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode, 416 EXPECT_EQ(ReadById(kOtherExtension)->installation_mode,
433 ExtensionManagement::INSTALLATION_ALLOWED); 417 ExtensionManagement::INSTALLATION_ALLOWED);
434 418
435 // Set legacy preference. 419 // Set legacy preference.
436 base::ListValue denied_list_pref; 420 base::ListValue denied_list_pref;
437 denied_list_pref.AppendString("*"); 421 denied_list_pref.AppendString("*");
438 denied_list_pref.AppendString(kTargetExtension2); 422 denied_list_pref.AppendString(kTargetExtension2);
439 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy()); 423 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy());
440 424
441 base::ListValue allowed_list_pref; 425 base::ListValue allowed_list_pref;
442 allowed_list_pref.AppendString(kTargetExtension); 426 allowed_list_pref.AppendString(kTargetExtension);
443 SetPref(true, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy()); 427 SetPref(true, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy());
444 428
445 // Verifies that the new one have higher priority over the legacy ones. 429 // Verifies that the new one have higher priority over the legacy ones.
446 EXPECT_FALSE(extension_management_->BlacklistedByDefault()); 430 EXPECT_FALSE(extension_management_->BlacklistedByDefault());
447 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 431 EXPECT_EQ(ReadById(kTargetExtension)->installation_mode,
448 ExtensionManagement::INSTALLATION_BLOCKED); 432 ExtensionManagement::INSTALLATION_BLOCKED);
449 EXPECT_EQ( 433 EXPECT_EQ(ReadById(kTargetExtension2)->installation_mode,
450 extension_management_->ReadById(kTargetExtension2).installation_mode, 434 ExtensionManagement::INSTALLATION_BLOCKED);
451 ExtensionManagement::INSTALLATION_BLOCKED); 435 EXPECT_EQ(ReadById(kOtherExtension)->installation_mode,
452 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
453 ExtensionManagement::INSTALLATION_ALLOWED); 436 ExtensionManagement::INSTALLATION_ALLOWED);
454 } 437 }
455 438
456 // Tests functionality of new preference as to deprecate legacy 439 // Tests functionality of new preference as to deprecate legacy
457 // ExtensionInstallWhitelist policy. 440 // ExtensionInstallWhitelist policy.
458 TEST_F(ExtensionManagementServiceTest, NewInstallWhitelist) { 441 TEST_F(ExtensionManagementServiceTest, NewInstallWhitelist) {
459 // Set the new dictionary preference. 442 // Set the new dictionary preference.
460 { 443 {
461 PrefUpdater updater(pref_service_.get()); 444 PrefUpdater updater(pref_service_.get());
462 updater.SetBlacklistedByDefault(true); // Disallowed by default. 445 updater.SetBlacklistedByDefault(true); // Disallowed by default.
463 updater.SetIndividualExtensionInstallationAllowed(kTargetExtension, true); 446 updater.SetIndividualExtensionInstallationAllowed(kTargetExtension, true);
464 updater.ClearPerExtensionSettings(kTargetExtension2); 447 updater.ClearPerExtensionSettings(kTargetExtension2);
465 updater.ClearPerExtensionSettings(kOtherExtension); 448 updater.ClearPerExtensionSettings(kOtherExtension);
466 } 449 }
467 EXPECT_TRUE(extension_management_->BlacklistedByDefault()); 450 EXPECT_TRUE(extension_management_->BlacklistedByDefault());
468 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 451 EXPECT_EQ(ReadById(kTargetExtension)->installation_mode,
469 ExtensionManagement::INSTALLATION_ALLOWED); 452 ExtensionManagement::INSTALLATION_ALLOWED);
470 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode, 453 EXPECT_EQ(ReadById(kOtherExtension)->installation_mode,
471 ExtensionManagement::INSTALLATION_BLOCKED); 454 ExtensionManagement::INSTALLATION_BLOCKED);
472 455
473 // Set legacy preference. 456 // Set legacy preference.
474 base::ListValue denied_list_pref; 457 base::ListValue denied_list_pref;
475 denied_list_pref.AppendString(kTargetExtension); 458 denied_list_pref.AppendString(kTargetExtension);
476 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy()); 459 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy());
477 460
478 base::ListValue allowed_list_pref; 461 base::ListValue allowed_list_pref;
479 allowed_list_pref.AppendString(kTargetExtension2); 462 allowed_list_pref.AppendString(kTargetExtension2);
480 SetPref(true, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy()); 463 SetPref(true, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy());
481 464
482 // Verifies that the new one have higher priority over the legacy ones. 465 // Verifies that the new one have higher priority over the legacy ones.
483 EXPECT_TRUE(extension_management_->BlacklistedByDefault()); 466 EXPECT_TRUE(extension_management_->BlacklistedByDefault());
484 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 467 EXPECT_EQ(ReadById(kTargetExtension)->installation_mode,
485 ExtensionManagement::INSTALLATION_ALLOWED); 468 ExtensionManagement::INSTALLATION_ALLOWED);
486 EXPECT_EQ( 469 EXPECT_EQ(ReadById(kTargetExtension2)->installation_mode,
487 extension_management_->ReadById(kTargetExtension2).installation_mode, 470 ExtensionManagement::INSTALLATION_ALLOWED);
488 ExtensionManagement::INSTALLATION_ALLOWED); 471 EXPECT_EQ(ReadById(kOtherExtension)->installation_mode,
489 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
490 ExtensionManagement::INSTALLATION_BLOCKED); 472 ExtensionManagement::INSTALLATION_BLOCKED);
491 } 473 }
492 474
493 // Tests functionality of new preference as to deprecate legacy 475 // Tests functionality of new preference as to deprecate legacy
494 // ExtensionInstallForcelist policy. 476 // ExtensionInstallForcelist policy.
495 TEST_F(ExtensionManagementServiceTest, NewInstallForcelist) { 477 TEST_F(ExtensionManagementServiceTest, NewInstallForcelist) {
496 // Set some legacy preferences, to verify that the new one overrides the 478 // Set some legacy preferences, to verify that the new one overrides the
497 // legacy ones. 479 // legacy ones.
498 base::ListValue denied_list_pref; 480 base::ListValue denied_list_pref;
499 denied_list_pref.AppendString(kTargetExtension); 481 denied_list_pref.AppendString(kTargetExtension);
500 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy()); 482 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy());
501 483
502 // Set the new dictionary preference. 484 // Set the new dictionary preference.
503 { 485 {
504 PrefUpdater updater(pref_service_.get()); 486 PrefUpdater updater(pref_service_.get());
505 updater.SetIndividualExtensionAutoInstalled( 487 updater.SetIndividualExtensionAutoInstalled(
506 kTargetExtension, kExampleUpdateUrl, true); 488 kTargetExtension, kExampleUpdateUrl, true);
507 updater.ClearPerExtensionSettings(kOtherExtension); 489 updater.ClearPerExtensionSettings(kOtherExtension);
508 } 490 }
509 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 491 EXPECT_EQ(ReadById(kTargetExtension)->installation_mode,
510 ExtensionManagement::INSTALLATION_FORCED); 492 ExtensionManagement::INSTALLATION_FORCED);
511 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).update_url, 493 EXPECT_EQ(ReadById(kTargetExtension)->update_url, kExampleUpdateUrl);
512 kExampleUpdateUrl); 494 EXPECT_EQ(ReadById(kOtherExtension)->installation_mode,
513 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
514 ExtensionManagement::INSTALLATION_ALLOWED); 495 ExtensionManagement::INSTALLATION_ALLOWED);
515 } 496 }
516 497
517 // Tests the flag value indicating that extensions are blacklisted by default. 498 // Tests the flag value indicating that extensions are blacklisted by default.
518 TEST_F(ExtensionAdminPolicyTest, BlacklistedByDefault) { 499 TEST_F(ExtensionAdminPolicyTest, BlacklistedByDefault) {
519 EXPECT_FALSE(BlacklistedByDefault(NULL)); 500 EXPECT_FALSE(BlacklistedByDefault(NULL));
520 501
521 base::ListValue blacklist; 502 base::ListValue blacklist;
522 blacklist.Append(new base::StringValue(kOtherExtension)); 503 blacklist.Append(new base::StringValue(kOtherExtension));
523 EXPECT_FALSE(BlacklistedByDefault(&blacklist)); 504 EXPECT_FALSE(BlacklistedByDefault(&blacklist));
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
656 EXPECT_FALSE(error.empty()); 637 EXPECT_FALSE(error.empty());
657 638
658 CreateExtension(Manifest::INTERNAL); 639 CreateExtension(Manifest::INTERNAL);
659 error.clear(); 640 error.clear();
660 EXPECT_FALSE(MustRemainEnabled(extension_.get(), NULL)); 641 EXPECT_FALSE(MustRemainEnabled(extension_.get(), NULL));
661 EXPECT_FALSE(MustRemainEnabled(extension_.get(), &error)); 642 EXPECT_FALSE(MustRemainEnabled(extension_.get(), &error));
662 EXPECT_TRUE(error.empty()); 643 EXPECT_TRUE(error.empty());
663 } 644 }
664 645
665 } // namespace extensions 646 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698