extension_registry_unittest.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
1// Copyright 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#include "extensions/browser/extension_registry.h" 6 7#include <string> 8 9#include "base/memory/ref_counted.h" 10#include "extensions/common/extension.h" 11#include "extensions/common/test_util.h" 12#include "testing/gtest/include/gtest/gtest.h" 13 14namespace extensions { 15namespace { 16 17typedef testing::Test ExtensionRegistryTest; 18 19TEST_F(ExtensionRegistryTest, FillAndClearRegistry) { 20 ExtensionRegistry registry; 21 scoped_refptr<Extension> extension1 = test_util::CreateExtensionWithID("id1"); 22 scoped_refptr<Extension> extension2 = test_util::CreateExtensionWithID("id2"); 23 scoped_refptr<Extension> extension3 = test_util::CreateExtensionWithID("id3"); 24 scoped_refptr<Extension> extension4 = test_util::CreateExtensionWithID("id4"); 25 26 // All the sets start empty. 27 EXPECT_EQ(0u, registry.enabled_extensions().size()); 28 EXPECT_EQ(0u, registry.disabled_extensions().size()); 29 EXPECT_EQ(0u, registry.terminated_extensions().size()); 30 EXPECT_EQ(0u, registry.blacklisted_extensions().size()); 31 32 // Extensions can be added to each set. 33 registry.AddEnabled(extension1); 34 registry.AddDisabled(extension2); 35 registry.AddTerminated(extension3); 36 registry.AddBlacklisted(extension4); 37 38 EXPECT_EQ(1u, registry.enabled_extensions().size()); 39 EXPECT_EQ(1u, registry.disabled_extensions().size()); 40 EXPECT_EQ(1u, registry.terminated_extensions().size()); 41 EXPECT_EQ(1u, registry.blacklisted_extensions().size()); 42 43 // Clearing the registry clears all sets. 44 registry.ClearAll(); 45 46 EXPECT_EQ(0u, registry.enabled_extensions().size()); 47 EXPECT_EQ(0u, registry.disabled_extensions().size()); 48 EXPECT_EQ(0u, registry.terminated_extensions().size()); 49 EXPECT_EQ(0u, registry.blacklisted_extensions().size()); 50} 51 52// A simple test of adding and removing things from sets. 53TEST_F(ExtensionRegistryTest, AddAndRemoveExtensionFromRegistry) { 54 ExtensionRegistry registry; 55 56 // Adding an extension works. 57 scoped_refptr<Extension> extension = test_util::CreateExtensionWithID("id"); 58 EXPECT_TRUE(registry.AddEnabled(extension)); 59 EXPECT_EQ(1u, registry.enabled_extensions().size()); 60 61 // The extension was only added to one set. 62 EXPECT_EQ(0u, registry.disabled_extensions().size()); 63 EXPECT_EQ(0u, registry.terminated_extensions().size()); 64 EXPECT_EQ(0u, registry.blacklisted_extensions().size()); 65 66 // Removing an extension works. 67 EXPECT_TRUE(registry.RemoveEnabled(extension->id())); 68 EXPECT_EQ(0u, registry.enabled_extensions().size()); 69 70 // Trying to remove an extension that isn't in the set fails cleanly. 71 EXPECT_FALSE(registry.RemoveEnabled(extension->id())); 72} 73 74TEST_F(ExtensionRegistryTest, AddExtensionToRegistryTwice) { 75 ExtensionRegistry registry; 76 scoped_refptr<Extension> extension = test_util::CreateExtensionWithID("id"); 77 78 // An extension can exist in two sets at once. It would be nice to eliminate 79 // this functionality, but some users of ExtensionRegistry need it. 80 EXPECT_TRUE(registry.AddEnabled(extension)); 81 EXPECT_TRUE(registry.AddDisabled(extension)); 82 83 EXPECT_EQ(1u, registry.enabled_extensions().size()); 84 EXPECT_EQ(1u, registry.disabled_extensions().size()); 85 EXPECT_EQ(0u, registry.terminated_extensions().size()); 86 EXPECT_EQ(0u, registry.blacklisted_extensions().size()); 87} 88 89TEST_F(ExtensionRegistryTest, GetExtensionById) { 90 ExtensionRegistry registry; 91 92 // Trying to get an extension fails cleanly when the sets are empty. 93 EXPECT_FALSE( 94 registry.GetExtensionById("id", ExtensionRegistry::EVERYTHING)); 95 96 scoped_refptr<Extension> enabled = 97 test_util::CreateExtensionWithID("enabled"); 98 scoped_refptr<Extension> disabled = 99 test_util::CreateExtensionWithID("disabled"); 100 scoped_refptr<Extension> terminated = 101 test_util::CreateExtensionWithID("terminated"); 102 scoped_refptr<Extension> blacklisted = 103 test_util::CreateExtensionWithID("blacklisted"); 104 105 // Add an extension to each set. 106 registry.AddEnabled(enabled); 107 registry.AddDisabled(disabled); 108 registry.AddTerminated(terminated); 109 registry.AddBlacklisted(blacklisted); 110 111 // Enabled is part of everything and the enabled list. 112 EXPECT_TRUE( 113 registry.GetExtensionById("enabled", ExtensionRegistry::EVERYTHING)); 114 EXPECT_TRUE( 115 registry.GetExtensionById("enabled", ExtensionRegistry::ENABLED)); 116 EXPECT_FALSE( 117 registry.GetExtensionById("enabled", ExtensionRegistry::DISABLED)); 118 EXPECT_FALSE( 119 registry.GetExtensionById("enabled", ExtensionRegistry::TERMINATED)); 120 EXPECT_FALSE( 121 registry.GetExtensionById("enabled", ExtensionRegistry::BLACKLISTED)); 122 123 // Disabled is part of everything and the disabled list. 124 EXPECT_TRUE( 125 registry.GetExtensionById("disabled", ExtensionRegistry::EVERYTHING)); 126 EXPECT_FALSE( 127 registry.GetExtensionById("disabled", ExtensionRegistry::ENABLED)); 128 EXPECT_TRUE( 129 registry.GetExtensionById("disabled", ExtensionRegistry::DISABLED)); 130 EXPECT_FALSE( 131 registry.GetExtensionById("disabled", ExtensionRegistry::TERMINATED)); 132 EXPECT_FALSE( 133 registry.GetExtensionById("disabled", ExtensionRegistry::BLACKLISTED)); 134 135 // Terminated is part of everything and the terminated list. 136 EXPECT_TRUE( 137 registry.GetExtensionById("terminated", ExtensionRegistry::EVERYTHING)); 138 EXPECT_FALSE( 139 registry.GetExtensionById("terminated", ExtensionRegistry::ENABLED)); 140 EXPECT_FALSE( 141 registry.GetExtensionById("terminated", ExtensionRegistry::DISABLED)); 142 EXPECT_TRUE( 143 registry.GetExtensionById("terminated", ExtensionRegistry::TERMINATED)); 144 EXPECT_FALSE( 145 registry.GetExtensionById("terminated", ExtensionRegistry::BLACKLISTED)); 146 147 // Blacklisted is part of everything and the blacklisted list. 148 EXPECT_TRUE( 149 registry.GetExtensionById("blacklisted", ExtensionRegistry::EVERYTHING)); 150 EXPECT_FALSE( 151 registry.GetExtensionById("blacklisted", ExtensionRegistry::ENABLED)); 152 EXPECT_FALSE( 153 registry.GetExtensionById("blacklisted", ExtensionRegistry::DISABLED)); 154 EXPECT_FALSE( 155 registry.GetExtensionById("blacklisted", ExtensionRegistry::TERMINATED)); 156 EXPECT_TRUE( 157 registry.GetExtensionById("blacklisted", ExtensionRegistry::BLACKLISTED)); 158 159 // Enabled can be found with multiple flags set. 160 EXPECT_TRUE(registry.GetExtensionById( 161 "enabled", ExtensionRegistry::ENABLED | ExtensionRegistry::TERMINATED)); 162 163 // Enabled isn't found if the wrong flags are set. 164 EXPECT_FALSE(registry.GetExtensionById( 165 "enabled", ExtensionRegistry::DISABLED | ExtensionRegistry::BLACKLISTED)); 166} 167 168} // namespace 169} // namespace extensions 170