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

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
« no previous file with comments | « chrome/common/extensions/manifest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 130 matching lines...) Expand 10 before | Expand all | Expand 10 after
141 EXPECT_EQ(type == Manifest::kTypeHostedApp, manifest->IsHostedApp()); 141 EXPECT_EQ(type == Manifest::kTypeHostedApp, manifest->IsHostedApp());
142 } 142 }
143 143
144 void TestRestrictedKeys(Manifest* manifest, 144 void TestRestrictedKeys(Manifest* manifest,
145 const char* restricted_keys[], 145 const char* restricted_keys[],
146 size_t restricted_keys_length) { 146 size_t restricted_keys_length) {
147 // Verify that the keys on the restricted key list for the given manifest 147 // Verify that the keys on the restricted key list for the given manifest
148 // fail validation and are filtered out. 148 // fail validation and are filtered out.
149 DictionaryValue* value = manifest->value(); 149 DictionaryValue* value = manifest->value();
150 for (size_t i = 0; i < restricted_keys_length; ++i) { 150 for (size_t i = 0; i < restricted_keys_length; ++i) {
151 std::string error, str; 151 std::string str;
152 string16 error;
152 value->Set(restricted_keys[i], Value::CreateStringValue(default_value_)); 153 value->Set(restricted_keys[i], Value::CreateStringValue(default_value_));
153 EXPECT_FALSE(manifest->ValidateManifest(&error)); 154 EXPECT_FALSE(manifest->ValidateManifest(&error));
154 EXPECT_EQ(error, ExtensionErrorUtils::FormatErrorMessage( 155 EXPECT_EQ(error, ExtensionErrorUtils::FormatErrorMessageUTF16(
155 errors::kFeatureNotAllowed, restricted_keys[i])); 156 errors::kFeatureNotAllowed, restricted_keys[i]));
156 EXPECT_FALSE(manifest->GetString(restricted_keys[i], &str)); 157 EXPECT_FALSE(manifest->GetString(restricted_keys[i], &str));
157 EXPECT_TRUE(value->Remove(restricted_keys[i], NULL)); 158 EXPECT_TRUE(value->Remove(restricted_keys[i], NULL));
158 } 159 }
159 } 160 }
160 161
161 std::string default_value_; 162 std::string default_value_;
162 }; 163 };
163 164
164 // Verifies that extensions can access the correct keys. 165 // Verifies that extensions can access the correct keys.
165 TEST_F(ManifestTest, Extension) { 166 TEST_F(ManifestTest, Extension) {
166 // Generate the list of keys accessible by extensions. 167 // Generate the list of keys accessible by extensions.
167 std::set<std::string> extension_keys = GetAccessibleKeys(NULL, 0u); 168 std::set<std::string> extension_keys = GetAccessibleKeys(NULL, 0u);
168 169
169 // Construct the underlying value using every single key other than those 170 // Construct the underlying value using every single key other than those
170 // on the restricted list.. We can use the same value for every key because we 171 // on the restricted list.. We can use the same value for every key because we
171 // validate only by checking the presence of the keys. 172 // validate only by checking the presence of the keys.
172 DictionaryValue* value = new DictionaryValue(); 173 DictionaryValue* value = new DictionaryValue();
173 for (std::set<std::string>::iterator i = extension_keys.begin(); 174 for (std::set<std::string>::iterator i = extension_keys.begin();
174 i != extension_keys.end(); ++i) 175 i != extension_keys.end(); ++i)
175 value->Set(*i, Value::CreateStringValue(default_value_)); 176 value->Set(*i, Value::CreateStringValue(default_value_));
176 177
177 scoped_ptr<Manifest> manifest(new Manifest(value)); 178 scoped_ptr<Manifest> manifest(new Manifest(value));
178 std::string error; 179 string16 error;
179 EXPECT_TRUE(manifest->ValidateManifest(&error)); 180 EXPECT_TRUE(manifest->ValidateManifest(&error));
180 EXPECT_EQ("", error); 181 EXPECT_EQ(ASCIIToUTF16(""), error);
181 AssertType(manifest.get(), Manifest::kTypeExtension); 182 AssertType(manifest.get(), Manifest::kTypeExtension);
182 183
183 // Verify that all the extension keys are accessible. 184 // Verify that all the extension keys are accessible.
184 for (std::set<std::string>::iterator i = extension_keys.begin(); 185 for (std::set<std::string>::iterator i = extension_keys.begin();
185 i != extension_keys.end(); ++i) { 186 i != extension_keys.end(); ++i) {
186 std::string value; 187 std::string value;
187 manifest->GetString(*i, &value); 188 manifest->GetString(*i, &value);
188 EXPECT_EQ(default_value_, value) << *i; 189 EXPECT_EQ(default_value_, value) << *i;
189 } 190 }
190 191
(...skipping 12 matching lines...) Expand all
203 204
204 DictionaryValue* value = new DictionaryValue(); 205 DictionaryValue* value = new DictionaryValue();
205 for (std::set<std::string>::iterator i = theme_keys.begin(); 206 for (std::set<std::string>::iterator i = theme_keys.begin();
206 i != theme_keys.end(); ++i) 207 i != theme_keys.end(); ++i)
207 value->Set(*i, Value::CreateStringValue(default_value_)); 208 value->Set(*i, Value::CreateStringValue(default_value_));
208 209
209 std::string theme_key = keys::kTheme + std::string(".test"); 210 std::string theme_key = keys::kTheme + std::string(".test");
210 value->Set(theme_key, Value::CreateStringValue(default_value_)); 211 value->Set(theme_key, Value::CreateStringValue(default_value_));
211 212
212 scoped_ptr<Manifest> manifest(new Manifest(value)); 213 scoped_ptr<Manifest> manifest(new Manifest(value));
213 std::string error; 214 string16 error;
214 EXPECT_TRUE(manifest->ValidateManifest(&error)); 215 EXPECT_TRUE(manifest->ValidateManifest(&error));
215 EXPECT_EQ("", error); 216 EXPECT_EQ(ASCIIToUTF16(""), error);
216 AssertType(manifest.get(), Manifest::kTypeTheme); 217 AssertType(manifest.get(), Manifest::kTypeTheme);
217 218
218 // Verify that all the theme keys are accessible. 219 // Verify that all the theme keys are accessible.
219 std::string str; 220 std::string str;
220 for (std::set<std::string>::iterator i = theme_keys.begin(); 221 for (std::set<std::string>::iterator i = theme_keys.begin();
221 i != theme_keys.end(); ++i) { 222 i != theme_keys.end(); ++i) {
222 EXPECT_TRUE(manifest->GetString(*i, &str)); 223 EXPECT_TRUE(manifest->GetString(*i, &str));
223 EXPECT_EQ(default_value_, str) << *i; 224 EXPECT_EQ(default_value_, str) << *i;
224 } 225 }
225 EXPECT_TRUE(manifest->GetString(theme_key, &str)); 226 EXPECT_TRUE(manifest->GetString(theme_key, &str));
(...skipping 11 matching lines...) Expand all
237 ARRAYSIZE_UNSAFE(kNotPlatformAppKeys)); 238 ARRAYSIZE_UNSAFE(kNotPlatformAppKeys));
238 239
239 DictionaryValue* value = new DictionaryValue(); 240 DictionaryValue* value = new DictionaryValue();
240 for (std::set<std::string>::iterator i = platform_keys.begin(); 241 for (std::set<std::string>::iterator i = platform_keys.begin();
241 i != platform_keys.end(); ++i) 242 i != platform_keys.end(); ++i)
242 value->Set(*i, Value::CreateStringValue(default_value_)); 243 value->Set(*i, Value::CreateStringValue(default_value_));
243 244
244 value->Set(keys::kPlatformApp, Value::CreateBooleanValue(true)); 245 value->Set(keys::kPlatformApp, Value::CreateBooleanValue(true));
245 246
246 scoped_ptr<Manifest> manifest(new Manifest(value)); 247 scoped_ptr<Manifest> manifest(new Manifest(value));
247 std::string error; 248 string16 error;
248 EXPECT_TRUE(manifest->ValidateManifest(&error)); 249 EXPECT_TRUE(manifest->ValidateManifest(&error));
249 EXPECT_EQ("", error); 250 EXPECT_EQ(ASCIIToUTF16(""), error);
250 AssertType(manifest.get(), Manifest::kTypePlatformApp); 251 AssertType(manifest.get(), Manifest::kTypePlatformApp);
251 252
252 // Verify that all the platform app keys are accessible. 253 // Verify that all the platform app keys are accessible.
253 std::string str; 254 std::string str;
254 for (std::set<std::string>::iterator i = platform_keys.begin(); 255 for (std::set<std::string>::iterator i = platform_keys.begin();
255 i != platform_keys.end(); ++i) { 256 i != platform_keys.end(); ++i) {
256 EXPECT_TRUE(manifest->GetString(*i, &str)); 257 EXPECT_TRUE(manifest->GetString(*i, &str));
257 EXPECT_EQ(default_value_, str) << *i; 258 EXPECT_EQ(default_value_, str) << *i;
258 } 259 }
259 bool is_platform_app = false; 260 bool is_platform_app = false;
(...skipping 12 matching lines...) Expand all
272 ARRAYSIZE_UNSAFE(kNotHostedAppKeys)); 273 ARRAYSIZE_UNSAFE(kNotHostedAppKeys));
273 274
274 DictionaryValue* value = new DictionaryValue(); 275 DictionaryValue* value = new DictionaryValue();
275 for (std::set<std::string>::iterator i = keys.begin(); 276 for (std::set<std::string>::iterator i = keys.begin();
276 i != keys.end(); ++i) 277 i != keys.end(); ++i)
277 value->Set(*i, Value::CreateStringValue(default_value_)); 278 value->Set(*i, Value::CreateStringValue(default_value_));
278 279
279 value->Set(keys::kWebURLs, Value::CreateStringValue(default_value_)); 280 value->Set(keys::kWebURLs, Value::CreateStringValue(default_value_));
280 281
281 scoped_ptr<Manifest> manifest(new Manifest(value)); 282 scoped_ptr<Manifest> manifest(new Manifest(value));
282 std::string error; 283 string16 error;
283 EXPECT_TRUE(manifest->ValidateManifest(&error)); 284 EXPECT_TRUE(manifest->ValidateManifest(&error));
284 EXPECT_EQ("", error); 285 EXPECT_EQ(ASCIIToUTF16(""), error);
285 AssertType(manifest.get(), Manifest::kTypeHostedApp); 286 AssertType(manifest.get(), Manifest::kTypeHostedApp);
286 287
287 // Verify that all the hosted app keys are accessible. 288 // Verify that all the hosted app keys are accessible.
288 std::string str; 289 std::string str;
289 for (std::set<std::string>::iterator i = keys.begin(); 290 for (std::set<std::string>::iterator i = keys.begin();
290 i != keys.end(); ++i) { 291 i != keys.end(); ++i) {
291 EXPECT_TRUE(manifest->GetString(*i, &str)); 292 EXPECT_TRUE(manifest->GetString(*i, &str));
292 EXPECT_EQ(default_value_, str) << *i; 293 EXPECT_EQ(default_value_, str) << *i;
293 } 294 }
294 EXPECT_TRUE(manifest->GetString(keys::kWebURLs, &str)); 295 EXPECT_TRUE(manifest->GetString(keys::kWebURLs, &str));
(...skipping 10 matching lines...) Expand all
305 kNotPackagedAppKeys, 306 kNotPackagedAppKeys,
306 ARRAYSIZE_UNSAFE(kNotPackagedAppKeys)); 307 ARRAYSIZE_UNSAFE(kNotPackagedAppKeys));
307 308
308 DictionaryValue* value = new DictionaryValue(); 309 DictionaryValue* value = new DictionaryValue();
309 for (std::set<std::string>::iterator i = keys.begin(); 310 for (std::set<std::string>::iterator i = keys.begin();
310 i != keys.end(); ++i) 311 i != keys.end(); ++i)
311 value->Set(*i, Value::CreateStringValue(default_value_)); 312 value->Set(*i, Value::CreateStringValue(default_value_));
312 value->Set(keys::kApp, Value::CreateStringValue(default_value_)); 313 value->Set(keys::kApp, Value::CreateStringValue(default_value_));
313 314
314 scoped_ptr<Manifest> manifest(new Manifest(value)); 315 scoped_ptr<Manifest> manifest(new Manifest(value));
315 std::string error; 316 string16 error;
316 EXPECT_TRUE(manifest->ValidateManifest(&error)); 317 EXPECT_TRUE(manifest->ValidateManifest(&error));
317 EXPECT_EQ("", error); 318 EXPECT_EQ(ASCIIToUTF16(""), error);
318 AssertType(manifest.get(), Manifest::kTypePackagedApp); 319 AssertType(manifest.get(), Manifest::kTypePackagedApp);
319 320
320 // Verify that all the packaged app keys are accessible. 321 // Verify that all the packaged app keys are accessible.
321 std::string str; 322 std::string str;
322 for (std::set<std::string>::iterator i = keys.begin(); 323 for (std::set<std::string>::iterator i = keys.begin();
323 i != keys.end(); ++i) { 324 i != keys.end(); ++i) {
324 EXPECT_TRUE(manifest->GetString(*i, &str)); 325 EXPECT_TRUE(manifest->GetString(*i, &str));
325 EXPECT_EQ(default_value_, str) << *i; 326 EXPECT_EQ(default_value_, str) << *i;
326 } 327 }
327 EXPECT_TRUE(manifest->GetString(keys::kApp, &str)); 328 EXPECT_TRUE(manifest->GetString(keys::kApp, &str));
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 ListValue* expected_list = new ListValue(); 387 ListValue* expected_list = new ListValue();
387 ListValue* actual_list = NULL; 388 ListValue* actual_list = NULL;
388 expected_list->Append(Value::CreateStringValue("blah")); 389 expected_list->Append(Value::CreateStringValue("blah"));
389 value->Set(unknown_key, expected_list); 390 value->Set(unknown_key, expected_list);
390 EXPECT_FALSE(manifest->GetList(unknown_key, &actual_list)); 391 EXPECT_FALSE(manifest->GetList(unknown_key, &actual_list));
391 EXPECT_EQ(NULL, actual_list); 392 EXPECT_EQ(NULL, actual_list);
392 EXPECT_TRUE(value->Remove(unknown_key, NULL)); 393 EXPECT_TRUE(value->Remove(unknown_key, NULL));
393 } 394 }
394 395
395 } // namespace extensions 396 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/common/extensions/manifest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698