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/extensions/extension_management.h" | 5 #include "chrome/browser/extensions/extension_management.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <memory> | 8 #include <memory> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/json/json_parser.h" | 12 #include "base/json/json_parser.h" |
13 #include "base/values.h" | 13 #include "base/values.h" |
14 #include "chrome/browser/extensions/extension_management_internal.h" | 14 #include "chrome/browser/extensions/extension_management_internal.h" |
15 #include "chrome/browser/extensions/extension_management_test_util.h" | 15 #include "chrome/browser/extensions/extension_management_test_util.h" |
16 #include "chrome/browser/extensions/external_policy_loader.h" | 16 #include "chrome/browser/extensions/external_policy_loader.h" |
17 #include "chrome/browser/extensions/standard_management_policy_provider.h" | 17 #include "chrome/browser/extensions/standard_management_policy_provider.h" |
18 #include "components/prefs/pref_registry_simple.h" | 18 #include "chrome/test/base/testing_profile.h" |
19 #include "components/prefs/testing_pref_service.h" | 19 #include "components/sync_preferences/testing_pref_service_syncable.h" |
| 20 #include "content/public/test/test_browser_thread_bundle.h" |
20 #include "extensions/browser/pref_names.h" | 21 #include "extensions/browser/pref_names.h" |
21 #include "extensions/common/manifest.h" | 22 #include "extensions/common/manifest.h" |
22 #include "extensions/common/manifest_constants.h" | 23 #include "extensions/common/manifest_constants.h" |
23 #include "extensions/common/permissions/api_permission.h" | 24 #include "extensions/common/permissions/api_permission.h" |
24 #include "extensions/common/permissions/permissions_info.h" | 25 #include "extensions/common/permissions/permissions_info.h" |
25 #include "extensions/common/url_pattern.h" | 26 #include "extensions/common/url_pattern.h" |
26 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
27 #include "url/gurl.h" | 28 #include "url/gurl.h" |
28 | 29 |
29 namespace extensions { | 30 namespace extensions { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
69 " \"installation_mode\": \"blocked\"," | 70 " \"installation_mode\": \"blocked\"," |
70 " \"install_sources\": [\"*://foo.com/*\"]," | 71 " \"install_sources\": [\"*://foo.com/*\"]," |
71 " \"allowed_types\": [\"theme\", \"user_script\"]," | 72 " \"allowed_types\": [\"theme\", \"user_script\"]," |
72 " \"blocked_permissions\": [\"fileSystem\", \"downloads\"]," | 73 " \"blocked_permissions\": [\"fileSystem\", \"downloads\"]," |
73 " }," | 74 " }," |
74 "}"; | 75 "}"; |
75 | 76 |
76 } // namespace | 77 } // namespace |
77 | 78 |
78 class ExtensionManagementServiceTest : public testing::Test { | 79 class ExtensionManagementServiceTest : public testing::Test { |
79 public: | 80 protected: |
80 typedef ExtensionManagementPrefUpdater<TestingPrefServiceSimple> PrefUpdater; | 81 using PrefUpdater = ExtensionManagementPrefUpdater< |
| 82 sync_preferences::TestingPrefServiceSyncable>; |
81 | 83 |
82 ExtensionManagementServiceTest() {} | 84 ExtensionManagementServiceTest() = default; |
83 ~ExtensionManagementServiceTest() override {} | 85 ~ExtensionManagementServiceTest() override = default; |
84 | 86 |
85 // testing::Test: | 87 // testing::Test: |
86 void SetUp() override { InitPrefService(); } | 88 void SetUp() override { |
87 | 89 profile_ = base::MakeUnique<TestingProfile>(); |
88 void InitPrefService() { | 90 pref_service_ = profile_->GetTestingPrefService(); |
89 extension_management_.reset(); | 91 extension_management_ = |
90 pref_service_.reset(new TestingPrefServiceSimple()); | 92 base::MakeUnique<ExtensionManagement>(profile_.get()); |
91 pref_service_->registry()->RegisterListPref( | |
92 pref_names::kAllowedInstallSites); | |
93 pref_service_->registry()->RegisterListPref(pref_names::kAllowedTypes); | |
94 pref_service_->registry()->RegisterListPref(pref_names::kInstallDenyList); | |
95 pref_service_->registry()->RegisterListPref(pref_names::kInstallAllowList); | |
96 pref_service_->registry()->RegisterDictionaryPref( | |
97 pref_names::kInstallForceList); | |
98 pref_service_->registry()->RegisterDictionaryPref( | |
99 pref_names::kExtensionManagement); | |
100 extension_management_.reset(new ExtensionManagement(pref_service_.get())); | |
101 } | 93 } |
102 | 94 |
103 void SetPref(bool managed, const char* path, base::Value* value) { | 95 void SetPref(bool managed, const char* path, base::Value* value) { |
104 if (managed) | 96 if (managed) |
105 pref_service_->SetManagedPref(path, value); | 97 pref_service_->SetManagedPref(path, value); |
106 else | 98 else |
107 pref_service_->SetUserPref(path, value); | 99 pref_service_->SetUserPref(path, value); |
108 } | 100 } |
109 | 101 |
110 void RemovePref(bool managed, const char* path) { | 102 void RemovePref(bool managed, const char* path) { |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
145 | 137 |
146 APIPermissionSet GetBlockedAPIPermissionsByUpdateUrl( | 138 APIPermissionSet GetBlockedAPIPermissionsByUpdateUrl( |
147 const std::string& update_url) { | 139 const std::string& update_url) { |
148 return GetBlockedAPIPermissions(kNonExistingExtension, update_url); | 140 return GetBlockedAPIPermissions(kNonExistingExtension, update_url); |
149 } | 141 } |
150 | 142 |
151 void SetExampleDictPref() { | 143 void SetExampleDictPref() { |
152 std::string error_msg; | 144 std::string error_msg; |
153 std::unique_ptr<base::Value> parsed = base::JSONReader::ReadAndReturnError( | 145 std::unique_ptr<base::Value> parsed = base::JSONReader::ReadAndReturnError( |
154 kExampleDictPreference, | 146 kExampleDictPreference, |
155 base::JSONParserOptions::JSON_ALLOW_TRAILING_COMMAS, NULL, &error_msg); | 147 base::JSONParserOptions::JSON_ALLOW_TRAILING_COMMAS, nullptr, |
| 148 &error_msg); |
156 ASSERT_TRUE(parsed && parsed->IsType(base::Value::Type::DICTIONARY)) | 149 ASSERT_TRUE(parsed && parsed->IsType(base::Value::Type::DICTIONARY)) |
157 << error_msg; | 150 << error_msg; |
158 SetPref(true, pref_names::kExtensionManagement, parsed.release()); | 151 SetPref(true, pref_names::kExtensionManagement, parsed.release()); |
159 } | 152 } |
160 | 153 |
161 // Wrapper of ExtensionManagement::GetInstallationMode, |id| and | 154 // Wrapper of ExtensionManagement::GetInstallationMode, |id| and |
162 // |update_url| are used to construct an Extension for testing. | 155 // |update_url| are used to construct an Extension for testing. |
163 ExtensionManagement::InstallationMode GetInstallationMode( | 156 ExtensionManagement::InstallationMode GetInstallationMode( |
164 const std::string& id, | 157 const std::string& id, |
165 const std::string& update_url) { | 158 const std::string& update_url) { |
(...skipping 18 matching lines...) Expand all Loading... |
184 CreateExtension(Manifest::UNPACKED, version, id, kNonExistingUpdateUrl); | 177 CreateExtension(Manifest::UNPACKED, version, id, kNonExistingUpdateUrl); |
185 std::string minimum_version_required; | 178 std::string minimum_version_required; |
186 bool ret = extension_management_->CheckMinimumVersion( | 179 bool ret = extension_management_->CheckMinimumVersion( |
187 extension.get(), &minimum_version_required); | 180 extension.get(), &minimum_version_required); |
188 EXPECT_EQ(ret, minimum_version_required.empty()); | 181 EXPECT_EQ(ret, minimum_version_required.empty()); |
189 EXPECT_EQ(ret, extension_management_->CheckMinimumVersion(extension.get(), | 182 EXPECT_EQ(ret, extension_management_->CheckMinimumVersion(extension.get(), |
190 nullptr)); | 183 nullptr)); |
191 return ret; | 184 return ret; |
192 } | 185 } |
193 | 186 |
194 protected: | 187 content::TestBrowserThreadBundle thread_bundle_; |
195 std::unique_ptr<TestingPrefServiceSimple> pref_service_; | 188 std::unique_ptr<TestingProfile> profile_; |
| 189 sync_preferences::TestingPrefServiceSyncable* pref_service_ = nullptr; |
196 std::unique_ptr<ExtensionManagement> extension_management_; | 190 std::unique_ptr<ExtensionManagement> extension_management_; |
197 | 191 |
198 private: | 192 private: |
199 // Create an extension with specified |location|, |version|, |id| and | 193 // Create an extension with specified |location|, |version|, |id| and |
200 // |update_url|. | 194 // |update_url|. |
201 scoped_refptr<const Extension> CreateExtension( | 195 scoped_refptr<const Extension> CreateExtension( |
202 Manifest::Location location, | 196 Manifest::Location location, |
203 const std::string& version, | 197 const std::string& version, |
204 const std::string& id, | 198 const std::string& id, |
205 const std::string& update_url) { | 199 const std::string& update_url) { |
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
522 GetBlockedAPIPermissions(kTargetExtension3, kExampleUpdateUrl)); | 516 GetBlockedAPIPermissions(kTargetExtension3, kExampleUpdateUrl)); |
523 } | 517 } |
524 | 518 |
525 // Tests the 'minimum_version_required' settings of extension management. | 519 // Tests the 'minimum_version_required' settings of extension management. |
526 TEST_F(ExtensionManagementServiceTest, kMinimumVersionRequired) { | 520 TEST_F(ExtensionManagementServiceTest, kMinimumVersionRequired) { |
527 EXPECT_TRUE(CheckMinimumVersion(kTargetExtension, "0.0")); | 521 EXPECT_TRUE(CheckMinimumVersion(kTargetExtension, "0.0")); |
528 EXPECT_TRUE(CheckMinimumVersion(kTargetExtension, "3.0.0")); | 522 EXPECT_TRUE(CheckMinimumVersion(kTargetExtension, "3.0.0")); |
529 EXPECT_TRUE(CheckMinimumVersion(kTargetExtension, "9999.0")); | 523 EXPECT_TRUE(CheckMinimumVersion(kTargetExtension, "9999.0")); |
530 | 524 |
531 { | 525 { |
532 PrefUpdater pref(pref_service_.get()); | 526 PrefUpdater pref(pref_service_); |
533 pref.SetMinimumVersionRequired(kTargetExtension, "3.0"); | 527 pref.SetMinimumVersionRequired(kTargetExtension, "3.0"); |
534 } | 528 } |
535 | 529 |
536 EXPECT_FALSE(CheckMinimumVersion(kTargetExtension, "0.0")); | 530 EXPECT_FALSE(CheckMinimumVersion(kTargetExtension, "0.0")); |
537 EXPECT_FALSE(CheckMinimumVersion(kTargetExtension, "2.99")); | 531 EXPECT_FALSE(CheckMinimumVersion(kTargetExtension, "2.99")); |
538 EXPECT_TRUE(CheckMinimumVersion(kTargetExtension, "3.0.0")); | 532 EXPECT_TRUE(CheckMinimumVersion(kTargetExtension, "3.0.0")); |
539 EXPECT_TRUE(CheckMinimumVersion(kTargetExtension, "3.0.1")); | 533 EXPECT_TRUE(CheckMinimumVersion(kTargetExtension, "3.0.1")); |
540 EXPECT_TRUE(CheckMinimumVersion(kTargetExtension, "4.0")); | 534 EXPECT_TRUE(CheckMinimumVersion(kTargetExtension, "4.0")); |
541 } | 535 } |
542 | 536 |
543 // Tests functionality of new preference as to deprecate legacy | 537 // Tests functionality of new preference as to deprecate legacy |
544 // ExtensionInstallSources policy. | 538 // ExtensionInstallSources policy. |
545 TEST_F(ExtensionManagementServiceTest, NewInstallSources) { | 539 TEST_F(ExtensionManagementServiceTest, NewInstallSources) { |
546 // Set the legacy preference, and verifies that it works. | 540 // Set the legacy preference, and verifies that it works. |
547 base::ListValue allowed_sites_pref; | 541 base::ListValue allowed_sites_pref; |
548 allowed_sites_pref.AppendString("https://www.example.com/foo"); | 542 allowed_sites_pref.AppendString("https://www.example.com/foo"); |
549 SetPref( | 543 SetPref( |
550 true, pref_names::kAllowedInstallSites, allowed_sites_pref.DeepCopy()); | 544 true, pref_names::kAllowedInstallSites, allowed_sites_pref.DeepCopy()); |
551 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources); | 545 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources); |
552 EXPECT_TRUE(ReadGlobalSettings()->install_sources.MatchesURL( | 546 EXPECT_TRUE(ReadGlobalSettings()->install_sources.MatchesURL( |
553 GURL("https://www.example.com/foo"))); | 547 GURL("https://www.example.com/foo"))); |
554 | 548 |
555 // Set the new dictionary preference. | 549 // Set the new dictionary preference. |
556 { | 550 { |
557 PrefUpdater updater(pref_service_.get()); | 551 PrefUpdater updater(pref_service_); |
558 updater.ClearInstallSources(); | 552 updater.ClearInstallSources(); |
559 } | 553 } |
560 // Verifies that the new one overrides the legacy ones. | 554 // Verifies that the new one overrides the legacy ones. |
561 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources); | 555 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources); |
562 EXPECT_FALSE(ReadGlobalSettings()->install_sources.MatchesURL( | 556 EXPECT_FALSE(ReadGlobalSettings()->install_sources.MatchesURL( |
563 GURL("https://www.example.com/foo"))); | 557 GURL("https://www.example.com/foo"))); |
564 | 558 |
565 // Updates the new dictionary preference. | 559 // Updates the new dictionary preference. |
566 { | 560 { |
567 PrefUpdater updater(pref_service_.get()); | 561 PrefUpdater updater(pref_service_); |
568 updater.AddInstallSource("https://corp.mycompany.com/*"); | 562 updater.AddInstallSource("https://corp.mycompany.com/*"); |
569 } | 563 } |
570 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources); | 564 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_install_sources); |
571 EXPECT_TRUE(ReadGlobalSettings()->install_sources.MatchesURL( | 565 EXPECT_TRUE(ReadGlobalSettings()->install_sources.MatchesURL( |
572 GURL("https://corp.mycompany.com/entry"))); | 566 GURL("https://corp.mycompany.com/entry"))); |
573 } | 567 } |
574 | 568 |
575 // Tests functionality of new preference as to deprecate legacy | 569 // Tests functionality of new preference as to deprecate legacy |
576 // ExtensionAllowedTypes policy. | 570 // ExtensionAllowedTypes policy. |
577 TEST_F(ExtensionManagementServiceTest, NewAllowedTypes) { | 571 TEST_F(ExtensionManagementServiceTest, NewAllowedTypes) { |
578 // Set the legacy preference, and verifies that it works. | 572 // Set the legacy preference, and verifies that it works. |
579 base::ListValue allowed_types_pref; | 573 base::ListValue allowed_types_pref; |
580 allowed_types_pref.AppendInteger(Manifest::TYPE_USER_SCRIPT); | 574 allowed_types_pref.AppendInteger(Manifest::TYPE_USER_SCRIPT); |
581 SetPref(true, pref_names::kAllowedTypes, allowed_types_pref.DeepCopy()); | 575 SetPref(true, pref_names::kAllowedTypes, allowed_types_pref.DeepCopy()); |
582 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types); | 576 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types); |
583 EXPECT_EQ(ReadGlobalSettings()->allowed_types.size(), 1u); | 577 EXPECT_EQ(ReadGlobalSettings()->allowed_types.size(), 1u); |
584 EXPECT_EQ(ReadGlobalSettings()->allowed_types[0], Manifest::TYPE_USER_SCRIPT); | 578 EXPECT_EQ(ReadGlobalSettings()->allowed_types[0], Manifest::TYPE_USER_SCRIPT); |
585 | 579 |
586 // Set the new dictionary preference. | 580 // Set the new dictionary preference. |
587 { | 581 { |
588 PrefUpdater updater(pref_service_.get()); | 582 PrefUpdater updater(pref_service_); |
589 updater.ClearAllowedTypes(); | 583 updater.ClearAllowedTypes(); |
590 } | 584 } |
591 // Verifies that the new one overrides the legacy ones. | 585 // Verifies that the new one overrides the legacy ones. |
592 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types); | 586 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types); |
593 EXPECT_EQ(ReadGlobalSettings()->allowed_types.size(), 0u); | 587 EXPECT_EQ(ReadGlobalSettings()->allowed_types.size(), 0u); |
594 | 588 |
595 // Updates the new dictionary preference. | 589 // Updates the new dictionary preference. |
596 { | 590 { |
597 PrefUpdater updater(pref_service_.get()); | 591 PrefUpdater updater(pref_service_); |
598 updater.AddAllowedType("theme"); | 592 updater.AddAllowedType("theme"); |
599 } | 593 } |
600 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types); | 594 EXPECT_TRUE(ReadGlobalSettings()->has_restricted_allowed_types); |
601 EXPECT_EQ(ReadGlobalSettings()->allowed_types.size(), 1u); | 595 EXPECT_EQ(ReadGlobalSettings()->allowed_types.size(), 1u); |
602 EXPECT_EQ(ReadGlobalSettings()->allowed_types[0], Manifest::TYPE_THEME); | 596 EXPECT_EQ(ReadGlobalSettings()->allowed_types[0], Manifest::TYPE_THEME); |
603 } | 597 } |
604 | 598 |
605 // Tests functionality of new preference as to deprecate legacy | 599 // Tests functionality of new preference as to deprecate legacy |
606 // ExtensionInstallBlacklist policy. | 600 // ExtensionInstallBlacklist policy. |
607 TEST_F(ExtensionManagementServiceTest, NewInstallBlacklist) { | 601 TEST_F(ExtensionManagementServiceTest, NewInstallBlacklist) { |
608 // Set the new dictionary preference. | 602 // Set the new dictionary preference. |
609 { | 603 { |
610 PrefUpdater updater(pref_service_.get()); | 604 PrefUpdater updater(pref_service_); |
611 updater.SetBlacklistedByDefault(false); // Allowed by default. | 605 updater.SetBlacklistedByDefault(false); // Allowed by default. |
612 updater.SetIndividualExtensionInstallationAllowed(kTargetExtension, false); | 606 updater.SetIndividualExtensionInstallationAllowed(kTargetExtension, false); |
613 updater.ClearPerExtensionSettings(kTargetExtension2); | 607 updater.ClearPerExtensionSettings(kTargetExtension2); |
614 } | 608 } |
615 EXPECT_FALSE(extension_management_->BlacklistedByDefault()); | 609 EXPECT_FALSE(extension_management_->BlacklistedByDefault()); |
616 EXPECT_EQ(GetInstallationModeById(kTargetExtension), | 610 EXPECT_EQ(GetInstallationModeById(kTargetExtension), |
617 ExtensionManagement::INSTALLATION_BLOCKED); | 611 ExtensionManagement::INSTALLATION_BLOCKED); |
618 EXPECT_EQ(GetInstallationModeById(kNonExistingExtension), | 612 EXPECT_EQ(GetInstallationModeById(kNonExistingExtension), |
619 ExtensionManagement::INSTALLATION_ALLOWED); | 613 ExtensionManagement::INSTALLATION_ALLOWED); |
620 | 614 |
(...skipping 15 matching lines...) Expand all Loading... |
636 ExtensionManagement::INSTALLATION_BLOCKED); | 630 ExtensionManagement::INSTALLATION_BLOCKED); |
637 EXPECT_EQ(GetInstallationModeById(kNonExistingExtension), | 631 EXPECT_EQ(GetInstallationModeById(kNonExistingExtension), |
638 ExtensionManagement::INSTALLATION_ALLOWED); | 632 ExtensionManagement::INSTALLATION_ALLOWED); |
639 } | 633 } |
640 | 634 |
641 // Tests functionality of new preference as to deprecate legacy | 635 // Tests functionality of new preference as to deprecate legacy |
642 // ExtensionInstallWhitelist policy. | 636 // ExtensionInstallWhitelist policy. |
643 TEST_F(ExtensionManagementServiceTest, NewInstallWhitelist) { | 637 TEST_F(ExtensionManagementServiceTest, NewInstallWhitelist) { |
644 // Set the new dictionary preference. | 638 // Set the new dictionary preference. |
645 { | 639 { |
646 PrefUpdater updater(pref_service_.get()); | 640 PrefUpdater updater(pref_service_); |
647 updater.SetBlacklistedByDefault(true); // Disallowed by default. | 641 updater.SetBlacklistedByDefault(true); // Disallowed by default. |
648 updater.SetIndividualExtensionInstallationAllowed(kTargetExtension, true); | 642 updater.SetIndividualExtensionInstallationAllowed(kTargetExtension, true); |
649 updater.ClearPerExtensionSettings(kTargetExtension2); | 643 updater.ClearPerExtensionSettings(kTargetExtension2); |
650 } | 644 } |
651 EXPECT_TRUE(extension_management_->BlacklistedByDefault()); | 645 EXPECT_TRUE(extension_management_->BlacklistedByDefault()); |
652 EXPECT_EQ(GetInstallationModeById(kTargetExtension), | 646 EXPECT_EQ(GetInstallationModeById(kTargetExtension), |
653 ExtensionManagement::INSTALLATION_ALLOWED); | 647 ExtensionManagement::INSTALLATION_ALLOWED); |
654 EXPECT_EQ(GetInstallationModeById(kNonExistingExtension), | 648 EXPECT_EQ(GetInstallationModeById(kNonExistingExtension), |
655 ExtensionManagement::INSTALLATION_BLOCKED); | 649 ExtensionManagement::INSTALLATION_BLOCKED); |
656 | 650 |
(...skipping 20 matching lines...) Expand all Loading... |
677 // ExtensionInstallForcelist policy. | 671 // ExtensionInstallForcelist policy. |
678 TEST_F(ExtensionManagementServiceTest, NewInstallForcelist) { | 672 TEST_F(ExtensionManagementServiceTest, NewInstallForcelist) { |
679 // Set some legacy preferences, to verify that the new one overrides the | 673 // Set some legacy preferences, to verify that the new one overrides the |
680 // legacy ones. | 674 // legacy ones. |
681 base::ListValue denied_list_pref; | 675 base::ListValue denied_list_pref; |
682 denied_list_pref.AppendString(kTargetExtension); | 676 denied_list_pref.AppendString(kTargetExtension); |
683 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy()); | 677 SetPref(true, pref_names::kInstallDenyList, denied_list_pref.DeepCopy()); |
684 | 678 |
685 // Set the new dictionary preference. | 679 // Set the new dictionary preference. |
686 { | 680 { |
687 PrefUpdater updater(pref_service_.get()); | 681 PrefUpdater updater(pref_service_); |
688 updater.SetIndividualExtensionAutoInstalled( | 682 updater.SetIndividualExtensionAutoInstalled( |
689 kTargetExtension, kExampleUpdateUrl, true); | 683 kTargetExtension, kExampleUpdateUrl, true); |
690 } | 684 } |
691 EXPECT_EQ(GetInstallationModeById(kTargetExtension), | 685 EXPECT_EQ(GetInstallationModeById(kTargetExtension), |
692 ExtensionManagement::INSTALLATION_FORCED); | 686 ExtensionManagement::INSTALLATION_FORCED); |
693 CheckAutomaticallyInstalledUpdateUrl(kTargetExtension, kExampleUpdateUrl); | 687 CheckAutomaticallyInstalledUpdateUrl(kTargetExtension, kExampleUpdateUrl); |
694 EXPECT_EQ(GetInstallationModeById(kNonExistingExtension), | 688 EXPECT_EQ(GetInstallationModeById(kNonExistingExtension), |
695 ExtensionManagement::INSTALLATION_ALLOWED); | 689 ExtensionManagement::INSTALLATION_ALLOWED); |
696 } | 690 } |
697 | 691 |
(...skipping 13 matching lines...) Expand all Loading... |
711 EXPECT_TRUE(extension_management_->IsInstallationExplicitlyAllowed(allowed)); | 705 EXPECT_TRUE(extension_management_->IsInstallationExplicitlyAllowed(allowed)); |
712 EXPECT_TRUE(extension_management_->IsInstallationExplicitlyAllowed(forced)); | 706 EXPECT_TRUE(extension_management_->IsInstallationExplicitlyAllowed(forced)); |
713 EXPECT_TRUE( | 707 EXPECT_TRUE( |
714 extension_management_->IsInstallationExplicitlyAllowed(recommended)); | 708 extension_management_->IsInstallationExplicitlyAllowed(recommended)); |
715 EXPECT_FALSE(extension_management_->IsInstallationExplicitlyAllowed(blocked)); | 709 EXPECT_FALSE(extension_management_->IsInstallationExplicitlyAllowed(blocked)); |
716 EXPECT_FALSE( | 710 EXPECT_FALSE( |
717 extension_management_->IsInstallationExplicitlyAllowed(not_specified)); | 711 extension_management_->IsInstallationExplicitlyAllowed(not_specified)); |
718 | 712 |
719 { | 713 { |
720 // Set BlacklistedByDefault() to false. | 714 // Set BlacklistedByDefault() to false. |
721 PrefUpdater pref(pref_service_.get()); | 715 PrefUpdater pref(pref_service_); |
722 pref.SetBlacklistedByDefault(false); | 716 pref.SetBlacklistedByDefault(false); |
723 } | 717 } |
724 | 718 |
725 // The result should remain the same. | 719 // The result should remain the same. |
726 EXPECT_TRUE(extension_management_->IsInstallationExplicitlyAllowed(allowed)); | 720 EXPECT_TRUE(extension_management_->IsInstallationExplicitlyAllowed(allowed)); |
727 EXPECT_TRUE(extension_management_->IsInstallationExplicitlyAllowed(forced)); | 721 EXPECT_TRUE(extension_management_->IsInstallationExplicitlyAllowed(forced)); |
728 EXPECT_TRUE( | 722 EXPECT_TRUE( |
729 extension_management_->IsInstallationExplicitlyAllowed(recommended)); | 723 extension_management_->IsInstallationExplicitlyAllowed(recommended)); |
730 EXPECT_FALSE(extension_management_->IsInstallationExplicitlyAllowed(blocked)); | 724 EXPECT_FALSE(extension_management_->IsInstallationExplicitlyAllowed(blocked)); |
731 EXPECT_FALSE( | 725 EXPECT_FALSE( |
732 extension_management_->IsInstallationExplicitlyAllowed(not_specified)); | 726 extension_management_->IsInstallationExplicitlyAllowed(not_specified)); |
733 } | 727 } |
734 | 728 |
735 // Tests the flag value indicating that extensions are blacklisted by default. | 729 // Tests the flag value indicating that extensions are blacklisted by default. |
736 TEST_F(ExtensionAdminPolicyTest, BlacklistedByDefault) { | 730 TEST_F(ExtensionAdminPolicyTest, BlacklistedByDefault) { |
737 EXPECT_FALSE(BlacklistedByDefault(NULL)); | 731 EXPECT_FALSE(BlacklistedByDefault(nullptr)); |
738 | 732 |
739 base::ListValue blacklist; | 733 base::ListValue blacklist; |
740 blacklist.AppendString(kNonExistingExtension); | 734 blacklist.AppendString(kNonExistingExtension); |
741 EXPECT_FALSE(BlacklistedByDefault(&blacklist)); | 735 EXPECT_FALSE(BlacklistedByDefault(&blacklist)); |
742 blacklist.AppendString("*"); | 736 blacklist.AppendString("*"); |
743 EXPECT_TRUE(BlacklistedByDefault(&blacklist)); | 737 EXPECT_TRUE(BlacklistedByDefault(&blacklist)); |
744 | 738 |
745 blacklist.Clear(); | 739 blacklist.Clear(); |
746 blacklist.AppendString("*"); | 740 blacklist.AppendString("*"); |
747 EXPECT_TRUE(BlacklistedByDefault(&blacklist)); | 741 EXPECT_TRUE(BlacklistedByDefault(&blacklist)); |
748 } | 742 } |
749 | 743 |
750 // Tests UserMayLoad for required extensions. | 744 // Tests UserMayLoad for required extensions. |
751 TEST_F(ExtensionAdminPolicyTest, UserMayLoadRequired) { | 745 TEST_F(ExtensionAdminPolicyTest, UserMayLoadRequired) { |
752 CreateExtension(Manifest::COMPONENT); | 746 CreateExtension(Manifest::COMPONENT); |
753 EXPECT_TRUE(UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), NULL)); | 747 EXPECT_TRUE(UserMayLoad(nullptr, nullptr, nullptr, nullptr, extension_.get(), |
| 748 nullptr)); |
754 base::string16 error; | 749 base::string16 error; |
755 EXPECT_TRUE(UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), &error)); | 750 EXPECT_TRUE(UserMayLoad(nullptr, nullptr, nullptr, nullptr, extension_.get(), |
| 751 &error)); |
756 EXPECT_TRUE(error.empty()); | 752 EXPECT_TRUE(error.empty()); |
757 | 753 |
758 // Required extensions may load even if they're on the blacklist. | 754 // Required extensions may load even if they're on the blacklist. |
759 base::ListValue blacklist; | 755 base::ListValue blacklist; |
760 blacklist.AppendString(extension_->id()); | 756 blacklist.AppendString(extension_->id()); |
761 EXPECT_TRUE( | 757 EXPECT_TRUE(UserMayLoad(&blacklist, nullptr, nullptr, nullptr, |
762 UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), NULL)); | 758 extension_.get(), nullptr)); |
763 | 759 |
764 blacklist.AppendString("*"); | 760 blacklist.AppendString("*"); |
765 EXPECT_TRUE( | 761 EXPECT_TRUE(UserMayLoad(&blacklist, nullptr, nullptr, nullptr, |
766 UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), NULL)); | 762 extension_.get(), nullptr)); |
767 } | 763 } |
768 | 764 |
769 // Tests UserMayLoad when no blacklist exists, or it's empty. | 765 // Tests UserMayLoad when no blacklist exists, or it's empty. |
770 TEST_F(ExtensionAdminPolicyTest, UserMayLoadNoBlacklist) { | 766 TEST_F(ExtensionAdminPolicyTest, UserMayLoadNoBlacklist) { |
771 CreateExtension(Manifest::INTERNAL); | 767 CreateExtension(Manifest::INTERNAL); |
772 EXPECT_TRUE(UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), NULL)); | 768 EXPECT_TRUE(UserMayLoad(nullptr, nullptr, nullptr, nullptr, extension_.get(), |
| 769 nullptr)); |
773 base::ListValue blacklist; | 770 base::ListValue blacklist; |
774 EXPECT_TRUE( | 771 EXPECT_TRUE(UserMayLoad(&blacklist, nullptr, nullptr, nullptr, |
775 UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), NULL)); | 772 extension_.get(), nullptr)); |
776 base::string16 error; | 773 base::string16 error; |
777 EXPECT_TRUE( | 774 EXPECT_TRUE(UserMayLoad(&blacklist, nullptr, nullptr, nullptr, |
778 UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), &error)); | 775 extension_.get(), &error)); |
779 EXPECT_TRUE(error.empty()); | 776 EXPECT_TRUE(error.empty()); |
780 } | 777 } |
781 | 778 |
782 // Tests UserMayLoad for an extension on the whitelist. | 779 // Tests UserMayLoad for an extension on the whitelist. |
783 TEST_F(ExtensionAdminPolicyTest, UserMayLoadWhitelisted) { | 780 TEST_F(ExtensionAdminPolicyTest, UserMayLoadWhitelisted) { |
784 CreateExtension(Manifest::INTERNAL); | 781 CreateExtension(Manifest::INTERNAL); |
785 | 782 |
786 base::ListValue whitelist; | 783 base::ListValue whitelist; |
787 whitelist.AppendString(extension_->id()); | 784 whitelist.AppendString(extension_->id()); |
788 EXPECT_TRUE( | 785 EXPECT_TRUE(UserMayLoad(nullptr, &whitelist, nullptr, nullptr, |
789 UserMayLoad(NULL, &whitelist, NULL, NULL, extension_.get(), NULL)); | 786 extension_.get(), nullptr)); |
790 | 787 |
791 base::ListValue blacklist; | 788 base::ListValue blacklist; |
792 blacklist.AppendString(extension_->id()); | 789 blacklist.AppendString(extension_->id()); |
793 EXPECT_TRUE( | 790 EXPECT_TRUE(UserMayLoad(nullptr, &whitelist, nullptr, nullptr, |
794 UserMayLoad(NULL, &whitelist, NULL, NULL, extension_.get(), NULL)); | 791 extension_.get(), nullptr)); |
795 base::string16 error; | 792 base::string16 error; |
796 EXPECT_TRUE( | 793 EXPECT_TRUE(UserMayLoad(nullptr, &whitelist, nullptr, nullptr, |
797 UserMayLoad(NULL, &whitelist, NULL, NULL, extension_.get(), &error)); | 794 extension_.get(), &error)); |
798 EXPECT_TRUE(error.empty()); | 795 EXPECT_TRUE(error.empty()); |
799 } | 796 } |
800 | 797 |
801 // Tests UserMayLoad for an extension on the blacklist. | 798 // Tests UserMayLoad for an extension on the blacklist. |
802 TEST_F(ExtensionAdminPolicyTest, UserMayLoadBlacklisted) { | 799 TEST_F(ExtensionAdminPolicyTest, UserMayLoadBlacklisted) { |
803 CreateExtension(Manifest::INTERNAL); | 800 CreateExtension(Manifest::INTERNAL); |
804 | 801 |
805 // Blacklisted by default. | 802 // Blacklisted by default. |
806 base::ListValue blacklist; | 803 base::ListValue blacklist; |
807 blacklist.AppendString("*"); | 804 blacklist.AppendString("*"); |
808 EXPECT_FALSE( | 805 EXPECT_FALSE(UserMayLoad(&blacklist, nullptr, nullptr, nullptr, |
809 UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), NULL)); | 806 extension_.get(), nullptr)); |
810 base::string16 error; | 807 base::string16 error; |
811 EXPECT_FALSE( | 808 EXPECT_FALSE(UserMayLoad(&blacklist, nullptr, nullptr, nullptr, |
812 UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), &error)); | 809 extension_.get(), &error)); |
813 EXPECT_FALSE(error.empty()); | 810 EXPECT_FALSE(error.empty()); |
814 | 811 |
815 // Extension on the blacklist, with and without wildcard. | 812 // Extension on the blacklist, with and without wildcard. |
816 blacklist.AppendString(extension_->id()); | 813 blacklist.AppendString(extension_->id()); |
817 EXPECT_FALSE( | 814 EXPECT_FALSE(UserMayLoad(&blacklist, nullptr, nullptr, nullptr, |
818 UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), NULL)); | 815 extension_.get(), nullptr)); |
819 blacklist.Clear(); | 816 blacklist.Clear(); |
820 blacklist.AppendString(extension_->id()); | 817 blacklist.AppendString(extension_->id()); |
821 EXPECT_FALSE( | 818 EXPECT_FALSE(UserMayLoad(&blacklist, nullptr, nullptr, nullptr, |
822 UserMayLoad(&blacklist, NULL, NULL, NULL, extension_.get(), NULL)); | 819 extension_.get(), nullptr)); |
823 | 820 |
824 // With a whitelist. There's no such thing as a whitelist wildcard. | 821 // With a whitelist. There's no such thing as a whitelist wildcard. |
825 base::ListValue whitelist; | 822 base::ListValue whitelist; |
826 whitelist.AppendString("behllobkkfkfnphdnhnkndlbkcpglgmj"); | 823 whitelist.AppendString("behllobkkfkfnphdnhnkndlbkcpglgmj"); |
827 EXPECT_FALSE( | 824 EXPECT_FALSE(UserMayLoad(&blacklist, &whitelist, nullptr, nullptr, |
828 UserMayLoad(&blacklist, &whitelist, NULL, NULL, extension_.get(), NULL)); | 825 extension_.get(), nullptr)); |
829 whitelist.AppendString("*"); | 826 whitelist.AppendString("*"); |
830 EXPECT_FALSE( | 827 EXPECT_FALSE(UserMayLoad(&blacklist, &whitelist, nullptr, nullptr, |
831 UserMayLoad(&blacklist, &whitelist, NULL, NULL, extension_.get(), NULL)); | 828 extension_.get(), nullptr)); |
832 } | 829 } |
833 | 830 |
834 TEST_F(ExtensionAdminPolicyTest, UserMayLoadAllowedTypes) { | 831 TEST_F(ExtensionAdminPolicyTest, UserMayLoadAllowedTypes) { |
835 CreateExtension(Manifest::INTERNAL); | 832 CreateExtension(Manifest::INTERNAL); |
836 EXPECT_TRUE(UserMayLoad(NULL, NULL, NULL, NULL, extension_.get(), NULL)); | 833 EXPECT_TRUE(UserMayLoad(nullptr, nullptr, nullptr, nullptr, extension_.get(), |
| 834 nullptr)); |
837 | 835 |
838 base::ListValue allowed_types; | 836 base::ListValue allowed_types; |
839 EXPECT_FALSE( | 837 EXPECT_FALSE(UserMayLoad(nullptr, nullptr, nullptr, &allowed_types, |
840 UserMayLoad(NULL, NULL, NULL, &allowed_types, extension_.get(), NULL)); | 838 extension_.get(), nullptr)); |
841 | 839 |
842 allowed_types.AppendInteger(Manifest::TYPE_EXTENSION); | 840 allowed_types.AppendInteger(Manifest::TYPE_EXTENSION); |
843 EXPECT_TRUE( | 841 EXPECT_TRUE(UserMayLoad(nullptr, nullptr, nullptr, &allowed_types, |
844 UserMayLoad(NULL, NULL, NULL, &allowed_types, extension_.get(), NULL)); | 842 extension_.get(), nullptr)); |
845 | 843 |
846 CreateHostedApp(Manifest::INTERNAL); | 844 CreateHostedApp(Manifest::INTERNAL); |
847 EXPECT_FALSE( | 845 EXPECT_FALSE(UserMayLoad(nullptr, nullptr, nullptr, &allowed_types, |
848 UserMayLoad(NULL, NULL, NULL, &allowed_types, extension_.get(), NULL)); | 846 extension_.get(), nullptr)); |
849 | 847 |
850 CreateHostedApp(Manifest::EXTERNAL_POLICY_DOWNLOAD); | 848 CreateHostedApp(Manifest::EXTERNAL_POLICY_DOWNLOAD); |
851 EXPECT_FALSE( | 849 EXPECT_FALSE(UserMayLoad(nullptr, nullptr, nullptr, &allowed_types, |
852 UserMayLoad(NULL, NULL, NULL, &allowed_types, extension_.get(), NULL)); | 850 extension_.get(), nullptr)); |
853 } | 851 } |
854 | 852 |
855 TEST_F(ExtensionAdminPolicyTest, UserMayModifySettings) { | 853 TEST_F(ExtensionAdminPolicyTest, UserMayModifySettings) { |
856 CreateExtension(Manifest::INTERNAL); | 854 CreateExtension(Manifest::INTERNAL); |
857 EXPECT_TRUE(UserMayModifySettings(extension_.get(), NULL)); | 855 EXPECT_TRUE(UserMayModifySettings(extension_.get(), nullptr)); |
858 base::string16 error; | 856 base::string16 error; |
859 EXPECT_TRUE(UserMayModifySettings(extension_.get(), &error)); | 857 EXPECT_TRUE(UserMayModifySettings(extension_.get(), &error)); |
860 EXPECT_TRUE(error.empty()); | 858 EXPECT_TRUE(error.empty()); |
861 | 859 |
862 CreateExtension(Manifest::EXTERNAL_POLICY_DOWNLOAD); | 860 CreateExtension(Manifest::EXTERNAL_POLICY_DOWNLOAD); |
863 error.clear(); | 861 error.clear(); |
864 EXPECT_FALSE(UserMayModifySettings(extension_.get(), NULL)); | 862 EXPECT_FALSE(UserMayModifySettings(extension_.get(), nullptr)); |
865 EXPECT_FALSE(UserMayModifySettings(extension_.get(), &error)); | 863 EXPECT_FALSE(UserMayModifySettings(extension_.get(), &error)); |
866 EXPECT_FALSE(error.empty()); | 864 EXPECT_FALSE(error.empty()); |
867 } | 865 } |
868 | 866 |
869 TEST_F(ExtensionAdminPolicyTest, MustRemainEnabled) { | 867 TEST_F(ExtensionAdminPolicyTest, MustRemainEnabled) { |
870 CreateExtension(Manifest::EXTERNAL_POLICY_DOWNLOAD); | 868 CreateExtension(Manifest::EXTERNAL_POLICY_DOWNLOAD); |
871 EXPECT_TRUE(MustRemainEnabled(extension_.get(), NULL)); | 869 EXPECT_TRUE(MustRemainEnabled(extension_.get(), nullptr)); |
872 base::string16 error; | 870 base::string16 error; |
873 EXPECT_TRUE(MustRemainEnabled(extension_.get(), &error)); | 871 EXPECT_TRUE(MustRemainEnabled(extension_.get(), &error)); |
874 EXPECT_FALSE(error.empty()); | 872 EXPECT_FALSE(error.empty()); |
875 | 873 |
876 CreateExtension(Manifest::INTERNAL); | 874 CreateExtension(Manifest::INTERNAL); |
877 error.clear(); | 875 error.clear(); |
878 EXPECT_FALSE(MustRemainEnabled(extension_.get(), NULL)); | 876 EXPECT_FALSE(MustRemainEnabled(extension_.get(), nullptr)); |
879 EXPECT_FALSE(MustRemainEnabled(extension_.get(), &error)); | 877 EXPECT_FALSE(MustRemainEnabled(extension_.get(), &error)); |
880 EXPECT_TRUE(error.empty()); | 878 EXPECT_TRUE(error.empty()); |
881 } | 879 } |
882 | 880 |
883 } // namespace extensions | 881 } // namespace extensions |
OLD | NEW |