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

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

Issue 559603002: Add new ExtensionManagement preference (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixes addressing #2 Created 6 years, 3 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 7
8 #include "base/json/json_parser.h"
7 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
8 #include "base/prefs/pref_registry_simple.h" 10 #include "base/prefs/pref_registry_simple.h"
9 #include "base/prefs/testing_pref_service.h" 11 #include "base/prefs/testing_pref_service.h"
12 #include "base/strings/stringprintf.h"
10 #include "base/values.h" 13 #include "base/values.h"
11 #include "chrome/browser/extensions/extension_management.h" 14 #include "chrome/browser/extensions/extension_management.h"
15 #include "chrome/browser/extensions/extension_management_test_util.h"
12 #include "chrome/browser/extensions/external_policy_loader.h" 16 #include "chrome/browser/extensions/external_policy_loader.h"
13 #include "extensions/browser/pref_names.h" 17 #include "extensions/browser/pref_names.h"
18 #include "extensions/common/manifest.h"
14 #include "extensions/common/manifest_constants.h" 19 #include "extensions/common/manifest_constants.h"
15 #include "extensions/common/url_pattern.h" 20 #include "extensions/common/url_pattern.h"
16 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
22 #include "url/gurl.h"
17 23
18 namespace extensions { 24 namespace extensions {
19 25
20 namespace { 26 namespace {
27
21 const char kTargetExtension[] = "abcdefghijklmnopabcdefghijklmnop"; 28 const char kTargetExtension[] = "abcdefghijklmnopabcdefghijklmnop";
29 const char kTargetExtension2[] = "bcdefghijklmnopabcdefghijklmnopa";
30 const char kTargetExtension3[] = "cdefghijklmnopabcdefghijklmnopab";
22 const char kOtherExtension[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; 31 const char kOtherExtension[] = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
23 const char kExampleUpdateUrl[] = "http://example.com/update_url"; 32 const char kExampleUpdateUrl[] = "http://example.com/update_url";
33
34 const char kExampleDictPreference[] =
35 "{"
36 " \"%s\": {" // kTargetExtension
Joao da Silva 2014/09/18 15:23:54 Just inline the value, it's easier to read
binjin 2014/09/18 15:49:04 Done.
37 " \"installation_mode\": \"allowed\","
38 " },"
39 " \"%s\": {" // kTargetExtension2
40 " \"installation_mode\": \"force_installed\","
41 " \"update_url\": \"http://example.com/update_url\","
42 " },"
43 " \"%s\": {" // kTargetExtension3
44 " \"installation_mode\": \"normal_installed\","
45 " \"update_url\": \"http://example.com/update_url\","
46 " },"
47 " \"*\": {"
48 " \"installation_mode\": \"blocked\","
49 " \"install_sources\": [\"*://foo.com/*\"],"
50 " \"allowed_types\": [\"theme\", \"user_script\"],"
51 " },"
52 "}";
53
24 } // namespace 54 } // namespace
25 55
26 class ExtensionManagementTest : public testing::Test { 56 class ExtensionManagementServiceTest : public testing::Test {
27 public: 57 public:
28 ExtensionManagementTest() {} 58 typedef ExtensionManagementPrefUpdater<TestingPrefServiceSimple> PrefUpdater;
29 virtual ~ExtensionManagementTest() {} 59
60 ExtensionManagementServiceTest() {}
61 virtual ~ExtensionManagementServiceTest() {}
30 62
31 // testing::Test: 63 // testing::Test:
32 virtual void SetUp() OVERRIDE { 64 virtual void SetUp() OVERRIDE {
33 InitPrefService(); 65 InitPrefService();
34 } 66 }
35 67
36 void InitPrefService() { 68 void InitPrefService() {
37 extension_management_.reset(); 69 extension_management_.reset();
38 pref_service_.reset(new TestingPrefServiceSimple()); 70 pref_service_.reset(new TestingPrefServiceSimple());
39 pref_service_->registry()->RegisterListPref( 71 pref_service_->registry()->RegisterListPref(
40 pref_names::kAllowedInstallSites); 72 pref_names::kAllowedInstallSites);
41 pref_service_->registry()->RegisterListPref(pref_names::kAllowedTypes); 73 pref_service_->registry()->RegisterListPref(pref_names::kAllowedTypes);
42 pref_service_->registry()->RegisterListPref(pref_names::kInstallDenyList); 74 pref_service_->registry()->RegisterListPref(pref_names::kInstallDenyList);
43 pref_service_->registry()->RegisterListPref(pref_names::kInstallAllowList); 75 pref_service_->registry()->RegisterListPref(pref_names::kInstallAllowList);
44 pref_service_->registry()->RegisterDictionaryPref( 76 pref_service_->registry()->RegisterDictionaryPref(
45 pref_names::kInstallForceList); 77 pref_names::kInstallForceList);
78 pref_service_->registry()->RegisterDictionaryPref(
79 pref_names::kExtensionManagement);
46 extension_management_.reset(new ExtensionManagement(pref_service_.get())); 80 extension_management_.reset(new ExtensionManagement(pref_service_.get()));
47 } 81 }
48 82
49 void SetPref(bool managed, const char* path, base::Value* value) { 83 void SetPref(bool managed, const char* path, base::Value* value) {
50 if (managed) 84 if (managed)
51 pref_service_->SetManagedPref(path, value); 85 pref_service_->SetManagedPref(path, value);
52 else 86 else
53 pref_service_->SetUserPref(path, value); 87 pref_service_->SetUserPref(path, value);
54 } 88 }
55 89
56 void RemovePref(bool managed, const char* path) { 90 void RemovePref(bool managed, const char* path) {
57 if (managed) 91 if (managed)
58 pref_service_->RemoveManagedPref(path); 92 pref_service_->RemoveManagedPref(path);
59 else 93 else
60 pref_service_->RemoveUserPref(path); 94 pref_service_->RemoveUserPref(path);
61 } 95 }
62 96
97 void SetExampleDictPref() {
98 std::string pref_json_string = base::StringPrintf(kExampleDictPreference,
99 kTargetExtension,
100 kTargetExtension2,
101 kTargetExtension3);
102 std::string error_msg;
103 scoped_ptr<base::Value> parsed(base::JSONReader::ReadAndReturnError(
104 pref_json_string,
105 base::JSONParserOptions::JSON_ALLOW_TRAILING_COMMAS,
106 NULL,
107 &error_msg));
108 ASSERT_TRUE(parsed && parsed->IsType(base::Value::TYPE_DICTIONARY))
109 << error_msg;
110 SetPref(true, pref_names::kExtensionManagement, parsed->DeepCopy());
Joao da Silva 2014/09/18 15:23:54 parsed.release()
binjin 2014/09/18 15:49:04 Done.
111 }
112
63 protected: 113 protected:
64 scoped_ptr<TestingPrefServiceSimple> pref_service_; 114 scoped_ptr<TestingPrefServiceSimple> pref_service_;
65 scoped_ptr<ExtensionManagement> extension_management_; 115 scoped_ptr<ExtensionManagement> extension_management_;
66 }; 116 };
67 117
68 class ExtensionAdminPolicyTest : public ExtensionManagementTest { 118 class ExtensionAdminPolicyTest : public ExtensionManagementServiceTest {
69 public: 119 public:
70 ExtensionAdminPolicyTest() {} 120 ExtensionAdminPolicyTest() {}
71 virtual ~ExtensionAdminPolicyTest() {} 121 virtual ~ExtensionAdminPolicyTest() {}
72 122
73 void CreateExtension(Manifest::Location location) { 123 void CreateExtension(Manifest::Location location) {
74 base::DictionaryValue values; 124 base::DictionaryValue values;
75 CreateExtensionFromValues(location, &values); 125 CreateExtensionFromValues(location, &values);
76 } 126 }
77 127
78 void CreateHostedApp(Manifest::Location location) { 128 void CreateHostedApp(Manifest::Location location) {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 194
145 bool ExtensionAdminPolicyTest::MustRemainEnabled(const Extension* extension, 195 bool ExtensionAdminPolicyTest::MustRemainEnabled(const Extension* extension,
146 base::string16* error) { 196 base::string16* error) {
147 InitPrefService(); 197 InitPrefService();
148 return extension_management_->GetProvider()->MustRemainEnabled(extension, 198 return extension_management_->GetProvider()->MustRemainEnabled(extension,
149 error); 199 error);
150 } 200 }
151 201
152 // Verify that preference controlled by legacy ExtensionInstallSources policy is 202 // Verify that preference controlled by legacy ExtensionInstallSources policy is
153 // handled well. 203 // handled well.
154 TEST_F(ExtensionManagementTest, LegacyInstallSources) { 204 TEST_F(ExtensionManagementServiceTest, LegacyInstallSources) {
155 base::ListValue allowed_sites_pref; 205 base::ListValue allowed_sites_pref;
156 allowed_sites_pref.AppendString("https://www.example.com/foo"); 206 allowed_sites_pref.AppendString("https://www.example.com/foo");
157 allowed_sites_pref.AppendString("https://corp.mycompany.com/*"); 207 allowed_sites_pref.AppendString("https://corp.mycompany.com/*");
158 SetPref( 208 SetPref(
159 true, pref_names::kAllowedInstallSites, allowed_sites_pref.DeepCopy()); 209 true, pref_names::kAllowedInstallSites, allowed_sites_pref.DeepCopy());
160 const URLPatternSet& allowed_sites = 210 const URLPatternSet& allowed_sites =
161 extension_management_->ReadGlobalSettings().install_sources; 211 extension_management_->ReadGlobalSettings().install_sources;
162 ASSERT_TRUE(extension_management_->ReadGlobalSettings() 212 ASSERT_TRUE(extension_management_->ReadGlobalSettings()
163 .has_restricted_install_sources); 213 .has_restricted_install_sources);
164 EXPECT_FALSE(allowed_sites.is_empty()); 214 EXPECT_FALSE(allowed_sites.is_empty());
165 EXPECT_TRUE(allowed_sites.MatchesURL(GURL("https://www.example.com/foo"))); 215 EXPECT_TRUE(allowed_sites.MatchesURL(GURL("https://www.example.com/foo")));
166 EXPECT_FALSE(allowed_sites.MatchesURL(GURL("https://www.example.com/bar"))); 216 EXPECT_FALSE(allowed_sites.MatchesURL(GURL("https://www.example.com/bar")));
167 EXPECT_TRUE( 217 EXPECT_TRUE(
168 allowed_sites.MatchesURL(GURL("https://corp.mycompany.com/entry"))); 218 allowed_sites.MatchesURL(GURL("https://corp.mycompany.com/entry")));
169 EXPECT_FALSE( 219 EXPECT_FALSE(
170 allowed_sites.MatchesURL(GURL("https://www.mycompany.com/entry"))); 220 allowed_sites.MatchesURL(GURL("https://www.mycompany.com/entry")));
171 } 221 }
172 222
173 // Verify that preference controlled by legacy ExtensionAllowedTypes policy is 223 // Verify that preference controlled by legacy ExtensionAllowedTypes policy is
174 // handled well. 224 // handled well.
175 TEST_F(ExtensionManagementTest, LegacyAllowedTypes) { 225 TEST_F(ExtensionManagementServiceTest, LegacyAllowedTypes) {
176 base::ListValue allowed_types_pref; 226 base::ListValue allowed_types_pref;
177 allowed_types_pref.AppendInteger(Manifest::TYPE_THEME); 227 allowed_types_pref.AppendInteger(Manifest::TYPE_THEME);
178 allowed_types_pref.AppendInteger(Manifest::TYPE_USER_SCRIPT); 228 allowed_types_pref.AppendInteger(Manifest::TYPE_USER_SCRIPT);
179 229
180 SetPref(true, pref_names::kAllowedTypes, allowed_types_pref.DeepCopy()); 230 SetPref(true, pref_names::kAllowedTypes, allowed_types_pref.DeepCopy());
181 const std::vector<Manifest::Type>& allowed_types = 231 const std::vector<Manifest::Type>& allowed_types =
182 extension_management_->ReadGlobalSettings().allowed_types; 232 extension_management_->ReadGlobalSettings().allowed_types;
183 ASSERT_TRUE( 233 ASSERT_TRUE(
184 extension_management_->ReadGlobalSettings().has_restricted_allowed_types); 234 extension_management_->ReadGlobalSettings().has_restricted_allowed_types);
185 EXPECT_TRUE(allowed_types.size() == 2); 235 EXPECT_TRUE(allowed_types.size() == 2);
186 EXPECT_FALSE(std::find(allowed_types.begin(), 236 EXPECT_FALSE(std::find(allowed_types.begin(),
187 allowed_types.end(), 237 allowed_types.end(),
188 Manifest::TYPE_EXTENSION) != allowed_types.end()); 238 Manifest::TYPE_EXTENSION) != allowed_types.end());
189 EXPECT_TRUE(std::find(allowed_types.begin(), 239 EXPECT_TRUE(std::find(allowed_types.begin(),
190 allowed_types.end(), 240 allowed_types.end(),
191 Manifest::TYPE_THEME) != allowed_types.end()); 241 Manifest::TYPE_THEME) != allowed_types.end());
192 EXPECT_TRUE(std::find(allowed_types.begin(), 242 EXPECT_TRUE(std::find(allowed_types.begin(),
193 allowed_types.end(), 243 allowed_types.end(),
194 Manifest::TYPE_USER_SCRIPT) != allowed_types.end()); 244 Manifest::TYPE_USER_SCRIPT) != allowed_types.end());
195 } 245 }
196 246
197 // Verify that preference controlled by legacy ExtensionInstallBlacklist policy 247 // Verify that preference controlled by legacy ExtensionInstallBlacklist policy
198 // is handled well. 248 // is handled well.
199 TEST_F(ExtensionManagementTest, LegacyInstallBlacklist) { 249 TEST_F(ExtensionManagementServiceTest, LegacyInstallBlacklist) {
200 base::ListValue denied_list_pref; 250 base::ListValue denied_list_pref;
201 denied_list_pref.AppendString(kTargetExtension); 251 denied_list_pref.AppendString(kTargetExtension);
202 252
203 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy()); 253 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy());
204 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 254 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
205 ExtensionManagement::INSTALLATION_BLOCKED); 255 ExtensionManagement::INSTALLATION_BLOCKED);
206 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode, 256 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
207 ExtensionManagement::INSTALLATION_ALLOWED); 257 ExtensionManagement::INSTALLATION_ALLOWED);
208 } 258 }
209 259
210 // Verify that preference controlled by legacy ExtensionInstallWhitelist policy 260 // Verify that preference controlled by legacy ExtensionInstallWhitelist policy
211 // is handled well. 261 // is handled well.
212 TEST_F(ExtensionManagementTest, LegacyInstallWhitelist) { 262 TEST_F(ExtensionManagementServiceTest, LegacyInstallWhitelist) {
213 base::ListValue denied_list_pref; 263 base::ListValue denied_list_pref;
214 denied_list_pref.AppendString("*"); 264 denied_list_pref.AppendString("*");
215 base::ListValue allowed_list_pref; 265 base::ListValue allowed_list_pref;
216 allowed_list_pref.AppendString(kTargetExtension); 266 allowed_list_pref.AppendString(kTargetExtension);
217 267
218 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy()); 268 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy());
219 SetPref(true, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy()); 269 SetPref(true, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy());
220 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 270 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
221 ExtensionManagement::INSTALLATION_ALLOWED); 271 ExtensionManagement::INSTALLATION_ALLOWED);
222 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode, 272 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
223 ExtensionManagement::INSTALLATION_BLOCKED); 273 ExtensionManagement::INSTALLATION_BLOCKED);
224 274
225 // Verify that install whitelist preference set by user is ignored. 275 // Verify that install whitelist preference set by user is ignored.
226 RemovePref(true, pref_names::kInstallAllowList); 276 RemovePref(true, pref_names::kInstallAllowList);
227 SetPref(false, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy()); 277 SetPref(false, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy());
228 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 278 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
229 ExtensionManagement::INSTALLATION_BLOCKED); 279 ExtensionManagement::INSTALLATION_BLOCKED);
230 } 280 }
231 281
232 // Verify that preference controlled by legacy ExtensionInstallForcelist policy 282 // Verify that preference controlled by legacy ExtensionInstallForcelist policy
233 // is handled well. 283 // is handled well.
234 TEST_F(ExtensionManagementTest, LegacyInstallForcelist) { 284 TEST_F(ExtensionManagementServiceTest, LegacyInstallForcelist) {
235 base::DictionaryValue forced_list_pref; 285 base::DictionaryValue forced_list_pref;
236 ExternalPolicyLoader::AddExtension( 286 ExternalPolicyLoader::AddExtension(
237 &forced_list_pref, kTargetExtension, kExampleUpdateUrl); 287 &forced_list_pref, kTargetExtension, kExampleUpdateUrl);
238 288
239 SetPref(true, pref_names::kInstallForceList, forced_list_pref.DeepCopy()); 289 SetPref(true, pref_names::kInstallForceList, forced_list_pref.DeepCopy());
240 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 290 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
241 ExtensionManagement::INSTALLATION_FORCED); 291 ExtensionManagement::INSTALLATION_FORCED);
242 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).update_url, 292 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).update_url,
243 kExampleUpdateUrl); 293 kExampleUpdateUrl);
244 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode, 294 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
245 ExtensionManagement::INSTALLATION_ALLOWED); 295 ExtensionManagement::INSTALLATION_ALLOWED);
246 296
247 // Verify that install forcelist preference set by user is ignored. 297 // Verify that install forcelist preference set by user is ignored.
248 RemovePref(true, pref_names::kInstallForceList); 298 RemovePref(true, pref_names::kInstallForceList);
249 SetPref(false, pref_names::kInstallForceList, forced_list_pref.DeepCopy()); 299 SetPref(false, pref_names::kInstallForceList, forced_list_pref.DeepCopy());
250 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode, 300 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
251 ExtensionManagement::INSTALLATION_ALLOWED); 301 ExtensionManagement::INSTALLATION_ALLOWED);
252 } 302 }
253 303
304 // Tests parsing of new dictionary preference.
305 TEST_F(ExtensionManagementServiceTest, PreferenceParsing) {
306 SetExampleDictPref();
307
308 // Verifies the installation mode settings.
309 EXPECT_TRUE(extension_management_->BlacklistedByDefault());
310 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
311 ExtensionManagement::INSTALLATION_ALLOWED);
312 EXPECT_EQ(
313 extension_management_->ReadById(kTargetExtension2).installation_mode,
314 ExtensionManagement::INSTALLATION_FORCED);
315 EXPECT_EQ(extension_management_->ReadById(kTargetExtension2).update_url,
316 kExampleUpdateUrl);
317 EXPECT_EQ(
318 extension_management_->ReadById(kTargetExtension3).installation_mode,
319 ExtensionManagement::INSTALLATION_RECOMMENDED);
320 EXPECT_EQ(extension_management_->ReadById(kTargetExtension3).update_url,
321 kExampleUpdateUrl);
322 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
323 ExtensionManagement::INSTALLATION_BLOCKED);
324
325 // Verifies global settings.
326 EXPECT_TRUE(extension_management_->ReadGlobalSettings()
327 .has_restricted_install_sources);
328 const URLPatternSet& allowed_sites =
329 extension_management_->ReadGlobalSettings().install_sources;
330 EXPECT_EQ(allowed_sites.size(), 1u);
331 EXPECT_TRUE(allowed_sites.MatchesURL(GURL("http://foo.com/entry")));
332 EXPECT_FALSE(allowed_sites.MatchesURL(GURL("http://bar.com/entry")));
333
334 EXPECT_TRUE(
335 extension_management_->ReadGlobalSettings().has_restricted_allowed_types);
336 const std::vector<Manifest::Type>& allowed_types =
337 extension_management_->ReadGlobalSettings().allowed_types;
338 EXPECT_EQ(allowed_types.size(), 2u);
339 EXPECT_TRUE(std::find(allowed_types.begin(),
340 allowed_types.end(),
341 Manifest::TYPE_THEME) != allowed_types.end());
342 EXPECT_TRUE(std::find(allowed_types.begin(),
343 allowed_types.end(),
344 Manifest::TYPE_USER_SCRIPT) != allowed_types.end());
345 }
346
347 // Tests functionality of new preference as to deprecate legacy
348 // ExtensionInstallSources policy.
349 TEST_F(ExtensionManagementServiceTest, NewInstallSources) {
350 // Set the legacy preference, and verifies that it works.
351 base::ListValue allowed_sites_pref;
352 allowed_sites_pref.AppendString("https://www.example.com/foo");
353 SetPref(
354 true, pref_names::kAllowedInstallSites, allowed_sites_pref.DeepCopy());
355 EXPECT_TRUE(extension_management_->ReadGlobalSettings()
356 .has_restricted_install_sources);
357 EXPECT_TRUE(
358 extension_management_->ReadGlobalSettings()
359 .install_sources.MatchesURL(GURL("https://www.example.com/foo")));
360
361 // Set the new dictionary preference.
362 {
363 PrefUpdater updater(pref_service_.get());
364 updater.ClearInstallSources();
365 }
366 // Verifies that the new one overrides the legacy ones.
367 EXPECT_TRUE(extension_management_->ReadGlobalSettings()
368 .has_restricted_install_sources);
369 EXPECT_FALSE(
370 extension_management_->ReadGlobalSettings()
371 .install_sources.MatchesURL(GURL("https://www.example.com/foo")));
372
373 // update the new dictionary preference.
Joao da Silva 2014/09/18 15:23:54 Update
binjin 2014/09/18 15:49:04 Done.
374 {
375 PrefUpdater updater(pref_service_.get());
376 updater.AddInstallSource("https://corp.mycompany.com/*");
377 }
378 EXPECT_TRUE(extension_management_->ReadGlobalSettings()
379 .has_restricted_install_sources);
380 EXPECT_TRUE(extension_management_->ReadGlobalSettings()
381 .install_sources.MatchesURL(
382 GURL("https://corp.mycompany.com/entry")));
383 }
384
385 // Tests functionality of new preference as to deprecate legacy
386 // ExtensionAllowedTypes policy.
387 TEST_F(ExtensionManagementServiceTest, NewAllowedTypes) {
388 // Set the legacy preference, and verifies that it works.
389 base::ListValue allowed_types_pref;
390 allowed_types_pref.AppendInteger(Manifest::TYPE_USER_SCRIPT);
391 SetPref(true, pref_names::kAllowedTypes, allowed_types_pref.DeepCopy());
392 EXPECT_TRUE(
393 extension_management_->ReadGlobalSettings().has_restricted_allowed_types);
394 EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types.size(),
395 1u);
396 EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types[0],
397 Manifest::TYPE_USER_SCRIPT);
398
399 // Set the new dictionary preference.
400 {
401 PrefUpdater updater(pref_service_.get());
402 updater.ClearAllowedTypes();
403 }
404 // Verifies that the new one overrides the legacy ones.
405 EXPECT_TRUE(
406 extension_management_->ReadGlobalSettings().has_restricted_allowed_types);
407 EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types.size(),
408 0u);
409
410 // update the new dictionary preference.
Joao da Silva 2014/09/18 15:23:54 Update
binjin 2014/09/18 15:49:04 Done.
411 {
412 PrefUpdater updater(pref_service_.get());
413 updater.AddAllowedType("theme");
414 }
415 EXPECT_TRUE(
416 extension_management_->ReadGlobalSettings().has_restricted_allowed_types);
417 EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types.size(),
418 1u);
419 EXPECT_EQ(extension_management_->ReadGlobalSettings().allowed_types[0],
420 Manifest::TYPE_THEME);
421 }
422
423 // Tests functionality of new preference as to deprecate legacy
424 // ExtensionInstallBlacklist policy.
425 TEST_F(ExtensionManagementServiceTest, NewInstallBlacklist) {
426 // Set the new dictionary preference.
427 {
428 PrefUpdater updater(pref_service_.get());
429 updater.SetBlacklistedByDefault(false); // Allowed by default.
430 updater.SetIndividualExtensionInstallationAllowed(kTargetExtension, false);
431 }
432 EXPECT_FALSE(extension_management_->BlacklistedByDefault());
433 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
434 ExtensionManagement::INSTALLATION_BLOCKED);
435 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
436 ExtensionManagement::INSTALLATION_ALLOWED);
437
438 // Set legacy preference.
439 base::ListValue denied_list_pref;
440 denied_list_pref.AppendString("*");
441 denied_list_pref.AppendString(kTargetExtension2);
442 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy());
443
444 base::ListValue allowed_list_pref;
445 allowed_list_pref.AppendString(kTargetExtension);
446 SetPref(true, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy());
447
448 // Verifies that the new one have higher priority over the legacy ones.
449 EXPECT_FALSE(extension_management_->BlacklistedByDefault());
450 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
451 ExtensionManagement::INSTALLATION_BLOCKED);
452 EXPECT_EQ(
453 extension_management_->ReadById(kTargetExtension2).installation_mode,
454 ExtensionManagement::INSTALLATION_BLOCKED);
455 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
456 ExtensionManagement::INSTALLATION_ALLOWED);
457 }
458
459 // Tests functionality of new preference as to deprecate legacy
460 // ExtensionInstallWhitelist policy.
461 TEST_F(ExtensionManagementServiceTest, NewInstallWhitelist) {
462 // Set the new dictionary preference.
463 {
464 PrefUpdater updater(pref_service_.get());
465 updater.SetBlacklistedByDefault(true); // Disallowed by default.
466 updater.SetIndividualExtensionInstallationAllowed(kTargetExtension, true);
467 }
468 EXPECT_TRUE(extension_management_->BlacklistedByDefault());
469 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
470 ExtensionManagement::INSTALLATION_ALLOWED);
471 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
472 ExtensionManagement::INSTALLATION_BLOCKED);
473
474 // Set legacy preference.
475 base::ListValue denied_list_pref;
476 denied_list_pref.AppendString(kTargetExtension);
477 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy());
478
479 base::ListValue allowed_list_pref;
480 allowed_list_pref.AppendString(kTargetExtension2);
481 SetPref(true, pref_names::kInstallAllowList, allowed_list_pref.DeepCopy());
482
483 // Verifies that the new one have higher priority over the legacy ones.
484 EXPECT_TRUE(extension_management_->BlacklistedByDefault());
485 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
486 ExtensionManagement::INSTALLATION_ALLOWED);
487 EXPECT_EQ(
488 extension_management_->ReadById(kTargetExtension2).installation_mode,
489 ExtensionManagement::INSTALLATION_ALLOWED);
490 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
491 ExtensionManagement::INSTALLATION_BLOCKED);
492 }
493
494 // Tests functionality of new preference as to deprecate legacy
495 // ExtensionInstallForcelist policy.
496 TEST_F(ExtensionManagementServiceTest, NewInstallForcelist) {
497 // Set some legacy preferences, to verify that the new one overrides the
498 // legacy ones.
499 base::ListValue denied_list_pref;
500 denied_list_pref.AppendString(kTargetExtension);
501 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy());
502
503 // Set the new dictionary preference.
504 {
505 PrefUpdater updater(pref_service_.get());
506 updater.SetIndividualExtensionAutoInstalled(
507 kTargetExtension, kExampleUpdateUrl, true);
508 }
509 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).installation_mode,
510 ExtensionManagement::INSTALLATION_FORCED);
511 EXPECT_EQ(extension_management_->ReadById(kTargetExtension).update_url,
512 kExampleUpdateUrl);
513 EXPECT_EQ(extension_management_->ReadById(kOtherExtension).installation_mode,
514 ExtensionManagement::INSTALLATION_ALLOWED);
515 }
516
254 // Tests the flag value indicating that extensions are blacklisted by default. 517 // Tests the flag value indicating that extensions are blacklisted by default.
255 TEST_F(ExtensionAdminPolicyTest, BlacklistedByDefault) { 518 TEST_F(ExtensionAdminPolicyTest, BlacklistedByDefault) {
256 EXPECT_FALSE(BlacklistedByDefault(NULL)); 519 EXPECT_FALSE(BlacklistedByDefault(NULL));
257 520
258 base::ListValue blacklist; 521 base::ListValue blacklist;
259 blacklist.Append(new base::StringValue(kOtherExtension)); 522 blacklist.Append(new base::StringValue(kOtherExtension));
260 EXPECT_FALSE(BlacklistedByDefault(&blacklist)); 523 EXPECT_FALSE(BlacklistedByDefault(&blacklist));
261 blacklist.Append(new base::StringValue("*")); 524 blacklist.Append(new base::StringValue("*"));
262 EXPECT_TRUE(BlacklistedByDefault(&blacklist)); 525 EXPECT_TRUE(BlacklistedByDefault(&blacklist));
263 526
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
393 EXPECT_FALSE(error.empty()); 656 EXPECT_FALSE(error.empty());
394 657
395 CreateExtension(Manifest::INTERNAL); 658 CreateExtension(Manifest::INTERNAL);
396 error.clear(); 659 error.clear();
397 EXPECT_FALSE(MustRemainEnabled(extension_.get(), NULL)); 660 EXPECT_FALSE(MustRemainEnabled(extension_.get(), NULL));
398 EXPECT_FALSE(MustRemainEnabled(extension_.get(), &error)); 661 EXPECT_FALSE(MustRemainEnabled(extension_.get(), &error));
399 EXPECT_TRUE(error.empty()); 662 EXPECT_TRUE(error.empty());
400 } 663 }
401 664
402 } // namespace extensions 665 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698