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

Side by Side Diff: chrome/common/extensions/features/simple_feature_unittest.cc

Issue 12093036: Move Extension Location and Type enums to Manifest, and move InstallWarning to its own file. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 10 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/common/extensions/features/simple_feature.h" 5 #include "chrome/common/extensions/features/simple_feature.h"
6 6
7 #include "chrome/common/extensions/value_builder.h" 7 #include "chrome/common/extensions/value_builder.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 using chrome::VersionInfo; 10 using chrome::VersionInfo;
11 using extensions::DictionaryBuilder; 11 using extensions::DictionaryBuilder;
12 using extensions::Extension; 12 using extensions::Extension;
13 using extensions::Feature; 13 using extensions::Feature;
14 using extensions::ListBuilder; 14 using extensions::ListBuilder;
15 using extensions::Manifest;
15 using extensions::SimpleFeature; 16 using extensions::SimpleFeature;
16 17
17 namespace { 18 namespace {
18 19
19 struct IsAvailableTestData { 20 struct IsAvailableTestData {
20 std::string extension_id; 21 std::string extension_id;
21 Extension::Type extension_type; 22 Manifest::Type extension_type;
22 Feature::Location location; 23 Feature::Location location;
23 Feature::Platform platform; 24 Feature::Platform platform;
24 int manifest_version; 25 int manifest_version;
25 Feature::AvailabilityResult expected_result; 26 Feature::AvailabilityResult expected_result;
26 }; 27 };
27 28
28 class ExtensionSimpleFeatureTest : public testing::Test { 29 class ExtensionSimpleFeatureTest : public testing::Test {
29 protected: 30 protected:
30 ExtensionSimpleFeatureTest() 31 ExtensionSimpleFeatureTest()
31 : current_channel_(VersionInfo::CHANNEL_UNKNOWN) {} 32 : current_channel_(VersionInfo::CHANNEL_UNKNOWN) {}
32 virtual ~ExtensionSimpleFeatureTest() {} 33 virtual ~ExtensionSimpleFeatureTest() {}
33 34
34 private: 35 private:
35 Feature::ScopedCurrentChannel current_channel_; 36 Feature::ScopedCurrentChannel current_channel_;
36 }; 37 };
37 38
38 TEST_F(ExtensionSimpleFeatureTest, IsAvailableNullCase) { 39 TEST_F(ExtensionSimpleFeatureTest, IsAvailableNullCase) {
39 const IsAvailableTestData tests[] = { 40 const IsAvailableTestData tests[] = {
40 { "", Extension::TYPE_UNKNOWN, 41 { "", Manifest::TYPE_UNKNOWN,
41 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, 42 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
42 Feature::IS_AVAILABLE }, 43 Feature::IS_AVAILABLE },
43 { "random-extension", Extension::TYPE_UNKNOWN, 44 { "random-extension", Manifest::TYPE_UNKNOWN,
44 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, 45 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
45 Feature::IS_AVAILABLE }, 46 Feature::IS_AVAILABLE },
46 { "", Extension::TYPE_LEGACY_PACKAGED_APP, 47 { "", Manifest::TYPE_LEGACY_PACKAGED_APP,
47 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, 48 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
48 Feature::IS_AVAILABLE }, 49 Feature::IS_AVAILABLE },
49 { "", Extension::TYPE_UNKNOWN, 50 { "", Manifest::TYPE_UNKNOWN,
50 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, 51 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
51 Feature::IS_AVAILABLE }, 52 Feature::IS_AVAILABLE },
52 { "", Extension::TYPE_UNKNOWN, 53 { "", Manifest::TYPE_UNKNOWN,
53 Feature::COMPONENT_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1, 54 Feature::COMPONENT_LOCATION, Feature::UNSPECIFIED_PLATFORM, -1,
54 Feature::IS_AVAILABLE }, 55 Feature::IS_AVAILABLE },
55 { "", Extension::TYPE_UNKNOWN, 56 { "", Manifest::TYPE_UNKNOWN,
56 Feature::UNSPECIFIED_LOCATION, Feature::CHROMEOS_PLATFORM, -1, 57 Feature::UNSPECIFIED_LOCATION, Feature::CHROMEOS_PLATFORM, -1,
57 Feature::IS_AVAILABLE }, 58 Feature::IS_AVAILABLE },
58 { "", Extension::TYPE_UNKNOWN, 59 { "", Manifest::TYPE_UNKNOWN,
59 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, 25, 60 Feature::UNSPECIFIED_LOCATION, Feature::UNSPECIFIED_PLATFORM, 25,
60 Feature::IS_AVAILABLE } 61 Feature::IS_AVAILABLE }
61 }; 62 };
62 63
63 SimpleFeature feature; 64 SimpleFeature feature;
64 for (size_t i = 0; i < arraysize(tests); ++i) { 65 for (size_t i = 0; i < arraysize(tests); ++i) {
65 const IsAvailableTestData& test = tests[i]; 66 const IsAvailableTestData& test = tests[i];
66 EXPECT_EQ(test.expected_result, 67 EXPECT_EQ(test.expected_result,
67 feature.IsAvailableToManifest(test.extension_id, 68 feature.IsAvailableToManifest(test.extension_id,
68 test.extension_type, 69 test.extension_type,
69 test.location, 70 test.location,
70 test.manifest_version, 71 test.manifest_version,
71 test.platform).result()); 72 test.platform).result());
72 } 73 }
73 } 74 }
74 75
75 TEST_F(ExtensionSimpleFeatureTest, Whitelist) { 76 TEST_F(ExtensionSimpleFeatureTest, Whitelist) {
76 SimpleFeature feature; 77 SimpleFeature feature;
77 feature.whitelist()->insert("foo"); 78 feature.whitelist()->insert("foo");
78 feature.whitelist()->insert("bar"); 79 feature.whitelist()->insert("bar");
79 80
80 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( 81 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
81 "foo", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, 82 "foo", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
82 Feature::UNSPECIFIED_PLATFORM).result()); 83 Feature::UNSPECIFIED_PLATFORM).result());
83 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( 84 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
84 "bar", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, 85 "bar", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
85 Feature::UNSPECIFIED_PLATFORM).result()); 86 Feature::UNSPECIFIED_PLATFORM).result());
86 87
87 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( 88 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest(
88 "baz", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, 89 "baz", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
89 Feature::UNSPECIFIED_PLATFORM).result()); 90 Feature::UNSPECIFIED_PLATFORM).result());
90 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( 91 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest(
91 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, 92 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
92 Feature::UNSPECIFIED_PLATFORM).result()); 93 Feature::UNSPECIFIED_PLATFORM).result());
93 94
94 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); 95 feature.extension_types()->insert(Manifest::TYPE_LEGACY_PACKAGED_APP);
95 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest( 96 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToManifest(
96 "baz", Extension::TYPE_LEGACY_PACKAGED_APP, 97 "baz", Manifest::TYPE_LEGACY_PACKAGED_APP,
97 Feature::UNSPECIFIED_LOCATION, -1, 98 Feature::UNSPECIFIED_LOCATION, -1,
98 Feature::UNSPECIFIED_PLATFORM).result()); 99 Feature::UNSPECIFIED_PLATFORM).result());
99 } 100 }
100 101
101 TEST_F(ExtensionSimpleFeatureTest, PackageType) { 102 TEST_F(ExtensionSimpleFeatureTest, PackageType) {
102 SimpleFeature feature; 103 SimpleFeature feature;
103 feature.extension_types()->insert(Extension::TYPE_EXTENSION); 104 feature.extension_types()->insert(Manifest::TYPE_EXTENSION);
104 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); 105 feature.extension_types()->insert(Manifest::TYPE_LEGACY_PACKAGED_APP);
105 106
106 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( 107 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
107 "", Extension::TYPE_EXTENSION, Feature::UNSPECIFIED_LOCATION, -1, 108 "", Manifest::TYPE_EXTENSION, Feature::UNSPECIFIED_LOCATION, -1,
108 Feature::UNSPECIFIED_PLATFORM).result()); 109 Feature::UNSPECIFIED_PLATFORM).result());
109 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( 110 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
110 "", Extension::TYPE_LEGACY_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION, 111 "", Manifest::TYPE_LEGACY_PACKAGED_APP, Feature::UNSPECIFIED_LOCATION,
111 -1, Feature::UNSPECIFIED_PLATFORM).result()); 112 -1, Feature::UNSPECIFIED_PLATFORM).result());
112 113
113 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest( 114 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest(
114 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, 115 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
115 Feature::UNSPECIFIED_PLATFORM).result()); 116 Feature::UNSPECIFIED_PLATFORM).result());
116 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest( 117 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToManifest(
117 "", Extension::TYPE_THEME, Feature::UNSPECIFIED_LOCATION, -1, 118 "", Manifest::TYPE_THEME, Feature::UNSPECIFIED_LOCATION, -1,
118 Feature::UNSPECIFIED_PLATFORM).result()); 119 Feature::UNSPECIFIED_PLATFORM).result());
119 } 120 }
120 121
121 TEST_F(ExtensionSimpleFeatureTest, Context) { 122 TEST_F(ExtensionSimpleFeatureTest, Context) {
122 SimpleFeature feature; 123 SimpleFeature feature;
123 feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); 124 feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
124 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); 125 feature.extension_types()->insert(Manifest::TYPE_LEGACY_PACKAGED_APP);
125 feature.set_platform(Feature::CHROMEOS_PLATFORM); 126 feature.set_platform(Feature::CHROMEOS_PLATFORM);
126 feature.set_min_manifest_version(21); 127 feature.set_min_manifest_version(21);
127 feature.set_max_manifest_version(25); 128 feature.set_max_manifest_version(25);
128 129
129 DictionaryValue manifest; 130 DictionaryValue manifest;
130 manifest.SetString("name", "test"); 131 manifest.SetString("name", "test");
131 manifest.SetString("version", "1"); 132 manifest.SetString("version", "1");
132 manifest.SetInteger("manifest_version", 21); 133 manifest.SetInteger("manifest_version", 21);
133 manifest.SetString("app.launch.local_path", "foo.html"); 134 manifest.SetString("app.launch.local_path", "foo.html");
134 135
135 std::string error; 136 std::string error;
136 scoped_refptr<const Extension> extension(Extension::Create( 137 scoped_refptr<const Extension> extension(Extension::Create(
137 FilePath(), Extension::INTERNAL, manifest, Extension::NO_FLAGS, &error)); 138 FilePath(), Manifest::INTERNAL, manifest, Extension::NO_FLAGS, &error));
138 EXPECT_EQ("", error); 139 EXPECT_EQ("", error);
139 ASSERT_TRUE(extension.get()); 140 ASSERT_TRUE(extension.get());
140 141
141 feature.whitelist()->insert("monkey"); 142 feature.whitelist()->insert("monkey");
142 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToContext( 143 EXPECT_EQ(Feature::NOT_FOUND_IN_WHITELIST, feature.IsAvailableToContext(
143 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 144 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
144 Feature::CHROMEOS_PLATFORM).result()); 145 Feature::CHROMEOS_PLATFORM).result());
145 feature.whitelist()->clear(); 146 feature.whitelist()->clear();
146 147
147 feature.extension_types()->clear(); 148 feature.extension_types()->clear();
148 feature.extension_types()->insert(Extension::TYPE_THEME); 149 feature.extension_types()->insert(Manifest::TYPE_THEME);
149 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToContext( 150 EXPECT_EQ(Feature::INVALID_TYPE, feature.IsAvailableToContext(
150 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 151 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
151 Feature::CHROMEOS_PLATFORM).result()); 152 Feature::CHROMEOS_PLATFORM).result());
152 feature.extension_types()->clear(); 153 feature.extension_types()->clear();
153 feature.extension_types()->insert(Extension::TYPE_LEGACY_PACKAGED_APP); 154 feature.extension_types()->insert(Manifest::TYPE_LEGACY_PACKAGED_APP);
154 155
155 feature.GetContexts()->clear(); 156 feature.GetContexts()->clear();
156 feature.GetContexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT); 157 feature.GetContexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT);
157 EXPECT_EQ(Feature::INVALID_CONTEXT, feature.IsAvailableToContext( 158 EXPECT_EQ(Feature::INVALID_CONTEXT, feature.IsAvailableToContext(
158 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT, 159 extension.get(), Feature::BLESSED_EXTENSION_CONTEXT,
159 Feature::CHROMEOS_PLATFORM).result()); 160 Feature::CHROMEOS_PLATFORM).result());
160 feature.GetContexts()->clear(); 161 feature.GetContexts()->clear();
161 feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); 162 feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
162 163
163 feature.set_location(Feature::COMPONENT_LOCATION); 164 feature.set_location(Feature::COMPONENT_LOCATION);
(...skipping 19 matching lines...) Expand all
183 feature.set_max_manifest_version(25); 184 feature.set_max_manifest_version(25);
184 } 185 }
185 186
186 TEST_F(ExtensionSimpleFeatureTest, Location) { 187 TEST_F(ExtensionSimpleFeatureTest, Location) {
187 SimpleFeature feature; 188 SimpleFeature feature;
188 189
189 // If the feature specifies "component" as its location, then only component 190 // If the feature specifies "component" as its location, then only component
190 // extensions can access it. 191 // extensions can access it.
191 feature.set_location(Feature::COMPONENT_LOCATION); 192 feature.set_location(Feature::COMPONENT_LOCATION);
192 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( 193 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
193 "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1, 194 "", Manifest::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1,
194 Feature::UNSPECIFIED_PLATFORM).result()); 195 Feature::UNSPECIFIED_PLATFORM).result());
195 EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToManifest( 196 EXPECT_EQ(Feature::INVALID_LOCATION, feature.IsAvailableToManifest(
196 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, 197 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
197 Feature::UNSPECIFIED_PLATFORM).result()); 198 Feature::UNSPECIFIED_PLATFORM).result());
198 199
199 // But component extensions can access anything else, whatever their location. 200 // But component extensions can access anything else, whatever their location.
200 feature.set_location(Feature::UNSPECIFIED_LOCATION); 201 feature.set_location(Feature::UNSPECIFIED_LOCATION);
201 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( 202 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
202 "", Extension::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1, 203 "", Manifest::TYPE_UNKNOWN, Feature::COMPONENT_LOCATION, -1,
203 Feature::UNSPECIFIED_PLATFORM).result()); 204 Feature::UNSPECIFIED_PLATFORM).result());
204 } 205 }
205 206
206 TEST_F(ExtensionSimpleFeatureTest, Platform) { 207 TEST_F(ExtensionSimpleFeatureTest, Platform) {
207 SimpleFeature feature; 208 SimpleFeature feature;
208 feature.set_platform(Feature::CHROMEOS_PLATFORM); 209 feature.set_platform(Feature::CHROMEOS_PLATFORM);
209 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( 210 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
210 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, 211 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
211 Feature::CHROMEOS_PLATFORM).result()); 212 Feature::CHROMEOS_PLATFORM).result());
212 EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToManifest( 213 EXPECT_EQ(Feature::INVALID_PLATFORM, feature.IsAvailableToManifest(
213 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1, 214 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, -1,
214 Feature::UNSPECIFIED_PLATFORM).result()); 215 Feature::UNSPECIFIED_PLATFORM).result());
215 } 216 }
216 217
217 TEST_F(ExtensionSimpleFeatureTest, Version) { 218 TEST_F(ExtensionSimpleFeatureTest, Version) {
218 SimpleFeature feature; 219 SimpleFeature feature;
219 feature.set_min_manifest_version(5); 220 feature.set_min_manifest_version(5);
220 221
221 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, 222 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION,
222 feature.IsAvailableToManifest( 223 feature.IsAvailableToManifest(
223 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, 224 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
224 0, Feature::UNSPECIFIED_PLATFORM).result()); 225 0, Feature::UNSPECIFIED_PLATFORM).result());
225 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION, 226 EXPECT_EQ(Feature::INVALID_MIN_MANIFEST_VERSION,
226 feature.IsAvailableToManifest( 227 feature.IsAvailableToManifest(
227 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, 228 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
228 4, Feature::UNSPECIFIED_PLATFORM).result()); 229 4, Feature::UNSPECIFIED_PLATFORM).result());
229 230
230 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( 231 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
231 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, 232 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
232 5, Feature::UNSPECIFIED_PLATFORM).result()); 233 5, Feature::UNSPECIFIED_PLATFORM).result());
233 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( 234 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
234 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, 235 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
235 10, Feature::UNSPECIFIED_PLATFORM).result()); 236 10, Feature::UNSPECIFIED_PLATFORM).result());
236 237
237 feature.set_max_manifest_version(8); 238 feature.set_max_manifest_version(8);
238 239
239 EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION, 240 EXPECT_EQ(Feature::INVALID_MAX_MANIFEST_VERSION,
240 feature.IsAvailableToManifest( 241 feature.IsAvailableToManifest(
241 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, 242 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
242 10, Feature::UNSPECIFIED_PLATFORM).result()); 243 10, Feature::UNSPECIFIED_PLATFORM).result());
243 EXPECT_EQ(Feature::IS_AVAILABLE, 244 EXPECT_EQ(Feature::IS_AVAILABLE,
244 feature.IsAvailableToManifest( 245 feature.IsAvailableToManifest(
245 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, 246 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
246 8, Feature::UNSPECIFIED_PLATFORM).result()); 247 8, Feature::UNSPECIFIED_PLATFORM).result());
247 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest( 248 EXPECT_EQ(Feature::IS_AVAILABLE, feature.IsAvailableToManifest(
248 "", Extension::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION, 249 "", Manifest::TYPE_UNKNOWN, Feature::UNSPECIFIED_LOCATION,
249 7, Feature::UNSPECIFIED_PLATFORM).result()); 250 7, Feature::UNSPECIFIED_PLATFORM).result());
250 } 251 }
251 252
252 TEST_F(ExtensionSimpleFeatureTest, ParseNull) { 253 TEST_F(ExtensionSimpleFeatureTest, ParseNull) {
253 scoped_ptr<DictionaryValue> value(new DictionaryValue()); 254 scoped_ptr<DictionaryValue> value(new DictionaryValue());
254 scoped_ptr<SimpleFeature> feature(new SimpleFeature()); 255 scoped_ptr<SimpleFeature> feature(new SimpleFeature());
255 feature->Parse(value.get()); 256 feature->Parse(value.get());
256 EXPECT_TRUE(feature->whitelist()->empty()); 257 EXPECT_TRUE(feature->whitelist()->empty());
257 EXPECT_TRUE(feature->extension_types()->empty()); 258 EXPECT_TRUE(feature->extension_types()->empty());
258 EXPECT_TRUE(feature->GetContexts()->empty()); 259 EXPECT_TRUE(feature->GetContexts()->empty());
(...skipping 21 matching lines...) Expand all
280 ListValue* extension_types = new ListValue(); 281 ListValue* extension_types = new ListValue();
281 extension_types->Append(Value::CreateStringValue("extension")); 282 extension_types->Append(Value::CreateStringValue("extension"));
282 extension_types->Append(Value::CreateStringValue("theme")); 283 extension_types->Append(Value::CreateStringValue("theme"));
283 extension_types->Append(Value::CreateStringValue("packaged_app")); 284 extension_types->Append(Value::CreateStringValue("packaged_app"));
284 extension_types->Append(Value::CreateStringValue("hosted_app")); 285 extension_types->Append(Value::CreateStringValue("hosted_app"));
285 extension_types->Append(Value::CreateStringValue("platform_app")); 286 extension_types->Append(Value::CreateStringValue("platform_app"));
286 value->Set("extension_types", extension_types); 287 value->Set("extension_types", extension_types);
287 scoped_ptr<SimpleFeature> feature(new SimpleFeature()); 288 scoped_ptr<SimpleFeature> feature(new SimpleFeature());
288 feature->Parse(value.get()); 289 feature->Parse(value.get());
289 EXPECT_EQ(5u, feature->extension_types()->size()); 290 EXPECT_EQ(5u, feature->extension_types()->size());
290 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_EXTENSION)); 291 EXPECT_TRUE(feature->extension_types()->count(Manifest::TYPE_EXTENSION));
291 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_THEME)); 292 EXPECT_TRUE(feature->extension_types()->count(Manifest::TYPE_THEME));
292 EXPECT_TRUE(feature->extension_types()->count( 293 EXPECT_TRUE(feature->extension_types()->count(
293 Extension::TYPE_LEGACY_PACKAGED_APP)); 294 Manifest::TYPE_LEGACY_PACKAGED_APP));
294 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_HOSTED_APP)); 295 EXPECT_TRUE(feature->extension_types()->count(Manifest::TYPE_HOSTED_APP));
295 EXPECT_TRUE(feature->extension_types()->count(Extension::TYPE_PLATFORM_APP)); 296 EXPECT_TRUE(feature->extension_types()->count(Manifest::TYPE_PLATFORM_APP));
296 297
297 value->SetString("extension_types", "all"); 298 value->SetString("extension_types", "all");
298 scoped_ptr<SimpleFeature> feature2(new SimpleFeature()); 299 scoped_ptr<SimpleFeature> feature2(new SimpleFeature());
299 feature2->Parse(value.get()); 300 feature2->Parse(value.get());
300 EXPECT_EQ(*(feature->extension_types()), *(feature2->extension_types())); 301 EXPECT_EQ(*(feature->extension_types()), *(feature2->extension_types()));
301 } 302 }
302 303
303 TEST_F(ExtensionSimpleFeatureTest, ParseContexts) { 304 TEST_F(ExtensionSimpleFeatureTest, ParseContexts) {
304 scoped_ptr<DictionaryValue> value(new DictionaryValue()); 305 scoped_ptr<DictionaryValue> value(new DictionaryValue());
305 ListValue* contexts = new ListValue(); 306 ListValue* contexts = new ListValue();
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 value->SetInteger("max_manifest_version", 5); 349 value->SetInteger("max_manifest_version", 5);
349 scoped_ptr<SimpleFeature> feature(new SimpleFeature()); 350 scoped_ptr<SimpleFeature> feature(new SimpleFeature());
350 feature->Parse(value.get()); 351 feature->Parse(value.get());
351 EXPECT_EQ(1, feature->min_manifest_version()); 352 EXPECT_EQ(1, feature->min_manifest_version());
352 EXPECT_EQ(5, feature->max_manifest_version()); 353 EXPECT_EQ(5, feature->max_manifest_version());
353 } 354 }
354 355
355 TEST_F(ExtensionSimpleFeatureTest, Inheritance) { 356 TEST_F(ExtensionSimpleFeatureTest, Inheritance) {
356 SimpleFeature feature; 357 SimpleFeature feature;
357 feature.whitelist()->insert("foo"); 358 feature.whitelist()->insert("foo");
358 feature.extension_types()->insert(Extension::TYPE_THEME); 359 feature.extension_types()->insert(Manifest::TYPE_THEME);
359 feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT); 360 feature.GetContexts()->insert(Feature::BLESSED_EXTENSION_CONTEXT);
360 feature.set_location(Feature::COMPONENT_LOCATION); 361 feature.set_location(Feature::COMPONENT_LOCATION);
361 feature.set_platform(Feature::CHROMEOS_PLATFORM); 362 feature.set_platform(Feature::CHROMEOS_PLATFORM);
362 feature.set_min_manifest_version(1); 363 feature.set_min_manifest_version(1);
363 feature.set_max_manifest_version(2); 364 feature.set_max_manifest_version(2);
364 365
365 SimpleFeature feature2 = feature; 366 SimpleFeature feature2 = feature;
366 EXPECT_TRUE(feature2.Equals(feature)); 367 EXPECT_TRUE(feature2.Equals(feature));
367 368
368 DictionaryValue definition; 369 DictionaryValue definition;
(...skipping 12 matching lines...) Expand all
381 // Can't test location or platform because we only have one value so far. 382 // Can't test location or platform because we only have one value so far.
382 definition.Set("min_manifest_version", Value::CreateIntegerValue(2)); 383 definition.Set("min_manifest_version", Value::CreateIntegerValue(2));
383 definition.Set("max_manifest_version", Value::CreateIntegerValue(3)); 384 definition.Set("max_manifest_version", Value::CreateIntegerValue(3));
384 385
385 feature2.Parse(&definition); 386 feature2.Parse(&definition);
386 EXPECT_FALSE(feature2.Equals(feature)); 387 EXPECT_FALSE(feature2.Equals(feature));
387 EXPECT_EQ(1u, feature2.whitelist()->size()); 388 EXPECT_EQ(1u, feature2.whitelist()->size());
388 EXPECT_EQ(1u, feature2.extension_types()->size()); 389 EXPECT_EQ(1u, feature2.extension_types()->size());
389 EXPECT_EQ(1u, feature2.GetContexts()->size()); 390 EXPECT_EQ(1u, feature2.GetContexts()->size());
390 EXPECT_EQ(1u, feature2.whitelist()->count("bar")); 391 EXPECT_EQ(1u, feature2.whitelist()->count("bar"));
391 EXPECT_EQ(1u, feature2.extension_types()->count(Extension::TYPE_EXTENSION)); 392 EXPECT_EQ(1u, feature2.extension_types()->count(Manifest::TYPE_EXTENSION));
392 EXPECT_EQ(1u, feature2.GetContexts()->count( 393 EXPECT_EQ(1u, feature2.GetContexts()->count(
393 Feature::UNBLESSED_EXTENSION_CONTEXT)); 394 Feature::UNBLESSED_EXTENSION_CONTEXT));
394 EXPECT_EQ(2, feature2.min_manifest_version()); 395 EXPECT_EQ(2, feature2.min_manifest_version());
395 EXPECT_EQ(3, feature2.max_manifest_version()); 396 EXPECT_EQ(3, feature2.max_manifest_version());
396 } 397 }
397 398
398 TEST_F(ExtensionSimpleFeatureTest, Equals) { 399 TEST_F(ExtensionSimpleFeatureTest, Equals) {
399 SimpleFeature feature; 400 SimpleFeature feature;
400 feature.whitelist()->insert("foo"); 401 feature.whitelist()->insert("foo");
401 feature.extension_types()->insert(Extension::TYPE_THEME); 402 feature.extension_types()->insert(Manifest::TYPE_THEME);
402 feature.GetContexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT); 403 feature.GetContexts()->insert(Feature::UNBLESSED_EXTENSION_CONTEXT);
403 feature.set_location(Feature::COMPONENT_LOCATION); 404 feature.set_location(Feature::COMPONENT_LOCATION);
404 feature.set_platform(Feature::CHROMEOS_PLATFORM); 405 feature.set_platform(Feature::CHROMEOS_PLATFORM);
405 feature.set_min_manifest_version(18); 406 feature.set_min_manifest_version(18);
406 feature.set_max_manifest_version(25); 407 feature.set_max_manifest_version(25);
407 408
408 SimpleFeature feature2(feature); 409 SimpleFeature feature2(feature);
409 EXPECT_TRUE(feature2.Equals(feature)); 410 EXPECT_TRUE(feature2.Equals(feature));
410 411
411 feature2.whitelist()->clear(); 412 feature2.whitelist()->clear();
(...skipping 30 matching lines...) Expand all
442 443
443 SimpleFeature feature; 444 SimpleFeature feature;
444 if (!channel.empty()) { 445 if (!channel.empty()) {
445 DictionaryValue feature_value; 446 DictionaryValue feature_value;
446 feature_value.SetString("channel", channel); 447 feature_value.SetString("channel", channel);
447 feature.Parse(&feature_value); 448 feature.Parse(&feature_value);
448 } 449 }
449 450
450 return feature.IsAvailableToManifest( 451 return feature.IsAvailableToManifest(
451 "random-extension", 452 "random-extension",
452 Extension::TYPE_UNKNOWN, 453 Manifest::TYPE_UNKNOWN,
453 Feature::UNSPECIFIED_LOCATION, 454 Feature::UNSPECIFIED_LOCATION,
454 -1, 455 -1,
455 Feature::GetCurrentPlatform()).result(); 456 Feature::GetCurrentPlatform()).result();
456 } 457 }
457 458
458 TEST_F(ExtensionSimpleFeatureTest, SupportedChannel) { 459 TEST_F(ExtensionSimpleFeatureTest, SupportedChannel) {
459 // stable supported. 460 // stable supported.
460 EXPECT_EQ(Feature::IS_AVAILABLE, 461 EXPECT_EQ(Feature::IS_AVAILABLE,
461 IsAvailableInChannel("stable", VersionInfo::CHANNEL_UNKNOWN)); 462 IsAvailableInChannel("stable", VersionInfo::CHANNEL_UNKNOWN));
462 EXPECT_EQ(Feature::IS_AVAILABLE, 463 EXPECT_EQ(Feature::IS_AVAILABLE,
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
523 IsAvailableInChannel("", VersionInfo::CHANNEL_CANARY)); 524 IsAvailableInChannel("", VersionInfo::CHANNEL_CANARY));
524 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, 525 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
525 IsAvailableInChannel("", VersionInfo::CHANNEL_DEV)); 526 IsAvailableInChannel("", VersionInfo::CHANNEL_DEV));
526 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, 527 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
527 IsAvailableInChannel("", VersionInfo::CHANNEL_BETA)); 528 IsAvailableInChannel("", VersionInfo::CHANNEL_BETA));
528 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL, 529 EXPECT_EQ(Feature::UNSUPPORTED_CHANNEL,
529 IsAvailableInChannel("", VersionInfo::CHANNEL_STABLE)); 530 IsAvailableInChannel("", VersionInfo::CHANNEL_STABLE));
530 } 531 }
531 532
532 } // namespace 533 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698