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

Side by Side Diff: chrome/common/extensions/manifest_unittest.cc

Issue 8890086: Issue 71980: Extensions code should use UTF-16 for user-visible Unicode strings (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 9 years 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/manifest.h" 5 #include "chrome/common/extensions/manifest.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 10
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 EXPECT_EQ(type == Manifest::kTypeHostedApp, manifest->IsHostedApp()); 137 EXPECT_EQ(type == Manifest::kTypeHostedApp, manifest->IsHostedApp());
138 } 138 }
139 139
140 void TestRestrictedKeys(Manifest* manifest, 140 void TestRestrictedKeys(Manifest* manifest,
141 const char* restricted_keys[], 141 const char* restricted_keys[],
142 size_t restricted_keys_length) { 142 size_t restricted_keys_length) {
143 // Verify that the keys on the restricted key list for the given manifest 143 // Verify that the keys on the restricted key list for the given manifest
144 // fail validation and are filtered out. 144 // fail validation and are filtered out.
145 DictionaryValue* value = manifest->value(); 145 DictionaryValue* value = manifest->value();
146 for (size_t i = 0; i < restricted_keys_length; ++i) { 146 for (size_t i = 0; i < restricted_keys_length; ++i) {
147 std::string error, str; 147 std::string str;
148 string16 error;
148 value->Set(restricted_keys[i], Value::CreateStringValue(default_value_)); 149 value->Set(restricted_keys[i], Value::CreateStringValue(default_value_));
149 EXPECT_FALSE(manifest->ValidateManifest(&error)); 150 EXPECT_FALSE(manifest->ValidateManifest(&error));
150 EXPECT_EQ(error, ExtensionErrorUtils::FormatErrorMessage( 151 EXPECT_EQ(error, ExtensionErrorUtils::FormatErrorMessageUTF16(
151 errors::kFeatureNotAllowed, restricted_keys[i])); 152 errors::kFeatureNotAllowed, restricted_keys[i]));
152 EXPECT_FALSE(manifest->GetString(restricted_keys[i], &str)); 153 EXPECT_FALSE(manifest->GetString(restricted_keys[i], &str));
153 EXPECT_TRUE(value->Remove(restricted_keys[i], NULL)); 154 EXPECT_TRUE(value->Remove(restricted_keys[i], NULL));
154 } 155 }
155 } 156 }
156 157
157 std::string default_value_; 158 std::string default_value_;
158 }; 159 };
159 160
160 // Verifies that extensions can access the correct keys. 161 // Verifies that extensions can access the correct keys.
161 TEST_F(ManifestTest, Extension) { 162 TEST_F(ManifestTest, Extension) {
162 // Generate the list of keys accessible by extensions. 163 // Generate the list of keys accessible by extensions.
163 std::set<std::string> extension_keys = GetAccessibleKeys(NULL, 0u); 164 std::set<std::string> extension_keys = GetAccessibleKeys(NULL, 0u);
164 165
165 // Construct the underlying value using every single key other than those 166 // Construct the underlying value using every single key other than those
166 // on the restricted list.. We can use the same value for every key because we 167 // on the restricted list.. We can use the same value for every key because we
167 // validate only by checking the presence of the keys. 168 // validate only by checking the presence of the keys.
168 DictionaryValue* value = new DictionaryValue(); 169 DictionaryValue* value = new DictionaryValue();
169 for (std::set<std::string>::iterator i = extension_keys.begin(); 170 for (std::set<std::string>::iterator i = extension_keys.begin();
170 i != extension_keys.end(); ++i) 171 i != extension_keys.end(); ++i)
171 value->Set(*i, Value::CreateStringValue(default_value_)); 172 value->Set(*i, Value::CreateStringValue(default_value_));
172 173
173 scoped_ptr<Manifest> manifest(new Manifest(value)); 174 scoped_ptr<Manifest> manifest(new Manifest(value));
174 std::string error; 175 string16 error;
175 EXPECT_TRUE(manifest->ValidateManifest(&error)); 176 EXPECT_TRUE(manifest->ValidateManifest(&error));
176 EXPECT_EQ("", error); 177 EXPECT_EQ(ASCIIToUTF16(""), error);
177 AssertType(manifest.get(), Manifest::kTypeExtension); 178 AssertType(manifest.get(), Manifest::kTypeExtension);
178 179
179 // Verify that all the extension keys are accessible. 180 // Verify that all the extension keys are accessible.
180 for (std::set<std::string>::iterator i = extension_keys.begin(); 181 for (std::set<std::string>::iterator i = extension_keys.begin();
181 i != extension_keys.end(); ++i) { 182 i != extension_keys.end(); ++i) {
182 std::string value; 183 std::string value;
183 manifest->GetString(*i, &value); 184 manifest->GetString(*i, &value);
184 EXPECT_EQ(default_value_, value) << *i; 185 EXPECT_EQ(default_value_, value) << *i;
185 } 186 }
186 187
(...skipping 12 matching lines...) Expand all
199 200
200 DictionaryValue* value = new DictionaryValue(); 201 DictionaryValue* value = new DictionaryValue();
201 for (std::set<std::string>::iterator i = theme_keys.begin(); 202 for (std::set<std::string>::iterator i = theme_keys.begin();
202 i != theme_keys.end(); ++i) 203 i != theme_keys.end(); ++i)
203 value->Set(*i, Value::CreateStringValue(default_value_)); 204 value->Set(*i, Value::CreateStringValue(default_value_));
204 205
205 std::string theme_key = keys::kTheme + std::string(".test"); 206 std::string theme_key = keys::kTheme + std::string(".test");
206 value->Set(theme_key, Value::CreateStringValue(default_value_)); 207 value->Set(theme_key, Value::CreateStringValue(default_value_));
207 208
208 scoped_ptr<Manifest> manifest(new Manifest(value)); 209 scoped_ptr<Manifest> manifest(new Manifest(value));
209 std::string error; 210 string16 error;
210 EXPECT_TRUE(manifest->ValidateManifest(&error)); 211 EXPECT_TRUE(manifest->ValidateManifest(&error));
211 EXPECT_EQ("", error); 212 EXPECT_EQ(ASCIIToUTF16(""), error);
212 AssertType(manifest.get(), Manifest::kTypeTheme); 213 AssertType(manifest.get(), Manifest::kTypeTheme);
213 214
214 // Verify that all the theme keys are accessible. 215 // Verify that all the theme keys are accessible.
215 std::string str; 216 std::string str;
216 for (std::set<std::string>::iterator i = theme_keys.begin(); 217 for (std::set<std::string>::iterator i = theme_keys.begin();
217 i != theme_keys.end(); ++i) { 218 i != theme_keys.end(); ++i) {
218 EXPECT_TRUE(manifest->GetString(*i, &str)); 219 EXPECT_TRUE(manifest->GetString(*i, &str));
219 EXPECT_EQ(default_value_, str) << *i; 220 EXPECT_EQ(default_value_, str) << *i;
220 } 221 }
221 EXPECT_TRUE(manifest->GetString(theme_key, &str)); 222 EXPECT_TRUE(manifest->GetString(theme_key, &str));
(...skipping 11 matching lines...) Expand all
233 ARRAYSIZE_UNSAFE(kNotPlatformAppKeys)); 234 ARRAYSIZE_UNSAFE(kNotPlatformAppKeys));
234 235
235 DictionaryValue* value = new DictionaryValue(); 236 DictionaryValue* value = new DictionaryValue();
236 for (std::set<std::string>::iterator i = platform_keys.begin(); 237 for (std::set<std::string>::iterator i = platform_keys.begin();
237 i != platform_keys.end(); ++i) 238 i != platform_keys.end(); ++i)
238 value->Set(*i, Value::CreateStringValue(default_value_)); 239 value->Set(*i, Value::CreateStringValue(default_value_));
239 240
240 value->Set(keys::kPlatformApp, Value::CreateBooleanValue(true)); 241 value->Set(keys::kPlatformApp, Value::CreateBooleanValue(true));
241 242
242 scoped_ptr<Manifest> manifest(new Manifest(value)); 243 scoped_ptr<Manifest> manifest(new Manifest(value));
243 std::string error; 244 string16 error;
244 EXPECT_TRUE(manifest->ValidateManifest(&error)); 245 EXPECT_TRUE(manifest->ValidateManifest(&error));
245 EXPECT_EQ("", error); 246 EXPECT_EQ(ASCIIToUTF16(""), error);
246 AssertType(manifest.get(), Manifest::kTypePlatformApp); 247 AssertType(manifest.get(), Manifest::kTypePlatformApp);
247 248
248 // Verify that all the platform app keys are accessible. 249 // Verify that all the platform app keys are accessible.
249 std::string str; 250 std::string str;
250 for (std::set<std::string>::iterator i = platform_keys.begin(); 251 for (std::set<std::string>::iterator i = platform_keys.begin();
251 i != platform_keys.end(); ++i) { 252 i != platform_keys.end(); ++i) {
252 EXPECT_TRUE(manifest->GetString(*i, &str)); 253 EXPECT_TRUE(manifest->GetString(*i, &str));
253 EXPECT_EQ(default_value_, str) << *i; 254 EXPECT_EQ(default_value_, str) << *i;
254 } 255 }
255 bool is_platform_app = false; 256 bool is_platform_app = false;
(...skipping 12 matching lines...) Expand all
268 ARRAYSIZE_UNSAFE(kNotHostedAppKeys)); 269 ARRAYSIZE_UNSAFE(kNotHostedAppKeys));
269 270
270 DictionaryValue* value = new DictionaryValue(); 271 DictionaryValue* value = new DictionaryValue();
271 for (std::set<std::string>::iterator i = keys.begin(); 272 for (std::set<std::string>::iterator i = keys.begin();
272 i != keys.end(); ++i) 273 i != keys.end(); ++i)
273 value->Set(*i, Value::CreateStringValue(default_value_)); 274 value->Set(*i, Value::CreateStringValue(default_value_));
274 275
275 value->Set(keys::kWebURLs, Value::CreateStringValue(default_value_)); 276 value->Set(keys::kWebURLs, Value::CreateStringValue(default_value_));
276 277
277 scoped_ptr<Manifest> manifest(new Manifest(value)); 278 scoped_ptr<Manifest> manifest(new Manifest(value));
278 std::string error; 279 string16 error;
279 EXPECT_TRUE(manifest->ValidateManifest(&error)); 280 EXPECT_TRUE(manifest->ValidateManifest(&error));
280 EXPECT_EQ("", error); 281 EXPECT_EQ(ASCIIToUTF16(""), error);
281 AssertType(manifest.get(), Manifest::kTypeHostedApp); 282 AssertType(manifest.get(), Manifest::kTypeHostedApp);
282 283
283 // Verify that all the hosted app keys are accessible. 284 // Verify that all the hosted app keys are accessible.
284 std::string str; 285 std::string str;
285 for (std::set<std::string>::iterator i = keys.begin(); 286 for (std::set<std::string>::iterator i = keys.begin();
286 i != keys.end(); ++i) { 287 i != keys.end(); ++i) {
287 EXPECT_TRUE(manifest->GetString(*i, &str)); 288 EXPECT_TRUE(manifest->GetString(*i, &str));
288 EXPECT_EQ(default_value_, str) << *i; 289 EXPECT_EQ(default_value_, str) << *i;
289 } 290 }
290 EXPECT_TRUE(manifest->GetString(keys::kWebURLs, &str)); 291 EXPECT_TRUE(manifest->GetString(keys::kWebURLs, &str));
(...skipping 10 matching lines...) Expand all
301 kNotPackagedAppKeys, 302 kNotPackagedAppKeys,
302 ARRAYSIZE_UNSAFE(kNotPackagedAppKeys)); 303 ARRAYSIZE_UNSAFE(kNotPackagedAppKeys));
303 304
304 DictionaryValue* value = new DictionaryValue(); 305 DictionaryValue* value = new DictionaryValue();
305 for (std::set<std::string>::iterator i = keys.begin(); 306 for (std::set<std::string>::iterator i = keys.begin();
306 i != keys.end(); ++i) 307 i != keys.end(); ++i)
307 value->Set(*i, Value::CreateStringValue(default_value_)); 308 value->Set(*i, Value::CreateStringValue(default_value_));
308 value->Set(keys::kApp, Value::CreateStringValue(default_value_)); 309 value->Set(keys::kApp, Value::CreateStringValue(default_value_));
309 310
310 scoped_ptr<Manifest> manifest(new Manifest(value)); 311 scoped_ptr<Manifest> manifest(new Manifest(value));
311 std::string error; 312 string16 error;
312 EXPECT_TRUE(manifest->ValidateManifest(&error)); 313 EXPECT_TRUE(manifest->ValidateManifest(&error));
313 EXPECT_EQ("", error); 314 EXPECT_EQ(ASCIIToUTF16(""), error);
314 AssertType(manifest.get(), Manifest::kTypePackagedApp); 315 AssertType(manifest.get(), Manifest::kTypePackagedApp);
315 316
316 // Verify that all the packaged app keys are accessible. 317 // Verify that all the packaged app keys are accessible.
317 std::string str; 318 std::string str;
318 for (std::set<std::string>::iterator i = keys.begin(); 319 for (std::set<std::string>::iterator i = keys.begin();
319 i != keys.end(); ++i) { 320 i != keys.end(); ++i) {
320 EXPECT_TRUE(manifest->GetString(*i, &str)); 321 EXPECT_TRUE(manifest->GetString(*i, &str));
321 EXPECT_EQ(default_value_, str) << *i; 322 EXPECT_EQ(default_value_, str) << *i;
322 } 323 }
323 EXPECT_TRUE(manifest->GetString(keys::kApp, &str)); 324 EXPECT_TRUE(manifest->GetString(keys::kApp, &str));
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 ListValue* expected_list = new ListValue(); 383 ListValue* expected_list = new ListValue();
383 ListValue* actual_list = NULL; 384 ListValue* actual_list = NULL;
384 expected_list->Append(Value::CreateStringValue("blah")); 385 expected_list->Append(Value::CreateStringValue("blah"));
385 value->Set(unknown_key, expected_list); 386 value->Set(unknown_key, expected_list);
386 EXPECT_FALSE(manifest->GetList(unknown_key, &actual_list)); 387 EXPECT_FALSE(manifest->GetList(unknown_key, &actual_list));
387 EXPECT_EQ(NULL, actual_list); 388 EXPECT_EQ(NULL, actual_list);
388 EXPECT_TRUE(value->Remove(unknown_key, NULL)); 389 EXPECT_TRUE(value->Remove(unknown_key, NULL));
389 } 390 }
390 391
391 } // namespace extensions 392 } // namespace extensions
OLDNEW
« chrome/common/extensions/extension.cc ('K') | « chrome/common/extensions/manifest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698