OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "base/file_path.h" | 5 #include "base/file_path.h" |
6 #include "base/file_util.h" | 6 #include "base/file_util.h" |
7 #include "base/string_util.h" | 7 #include "base/string_util.h" |
8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
9 #include "chrome/common/chrome_paths.h" | 9 #include "chrome/common/chrome_paths.h" |
10 #include "chrome/common/extensions/extension.h" | 10 #include "chrome/common/extensions/extension.h" |
(...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
290 } | 290 } |
291 | 291 |
292 TEST(ExtensionTest, LoadPageActionHelper) { | 292 TEST(ExtensionTest, LoadPageActionHelper) { |
293 #if defined(OS_WIN) | 293 #if defined(OS_WIN) |
294 FilePath path(StringPrintf(L"c:\\extension")); | 294 FilePath path(StringPrintf(L"c:\\extension")); |
295 #else | 295 #else |
296 FilePath path(StringPrintf("/extension")); | 296 FilePath path(StringPrintf("/extension")); |
297 #endif | 297 #endif |
298 Extension extension(path); | 298 Extension extension(path); |
299 std::string error_msg; | 299 std::string error_msg; |
300 scoped_ptr<ExtensionAction2> action; | 300 scoped_ptr<ExtensionAction> action; |
301 DictionaryValue input; | 301 DictionaryValue input; |
302 | 302 |
303 // First try with an empty dictionary. We should get nothing back. | 303 // First try with an empty dictionary. We should get nothing back. |
304 ASSERT_TRUE(extension.LoadExtensionAction2Helper( | 304 ASSERT_TRUE(extension.LoadExtensionActionHelper( |
305 &input, &error_msg) == NULL); | 305 &input, &error_msg) == NULL); |
306 ASSERT_STRNE("", error_msg.c_str()); | 306 ASSERT_STRNE("", error_msg.c_str()); |
307 error_msg = ""; | 307 error_msg = ""; |
308 | 308 |
309 // Now try the same, but as a browser action. Ensure same results. | 309 // Now try the same, but as a browser action. Ensure same results. |
310 ASSERT_TRUE(extension.LoadExtensionAction2Helper( | 310 ASSERT_TRUE(extension.LoadExtensionActionHelper( |
311 &input, &error_msg) == NULL); | 311 &input, &error_msg) == NULL); |
312 ASSERT_STRNE("", error_msg.c_str()); | 312 ASSERT_STRNE("", error_msg.c_str()); |
313 error_msg = ""; | 313 error_msg = ""; |
314 | 314 |
315 // Now setup some values to use in the page action. | 315 // Now setup some values to use in the page action. |
316 const std::string id("MyExtensionActionId"); | 316 const std::string id("MyExtensionActionId"); |
317 const std::string name("MyExtensionActionName"); | 317 const std::string name("MyExtensionActionName"); |
318 std::string img1("image1.png"); | 318 std::string img1("image1.png"); |
319 std::string img2("image2.png"); | 319 std::string img2("image2.png"); |
320 | 320 |
321 // Add the dictionary for the contextual action. | 321 // Add the dictionary for the contextual action. |
322 input.SetString(keys::kPageActionId, id); | 322 input.SetString(keys::kPageActionId, id); |
323 input.SetString(keys::kName, name); | 323 input.SetString(keys::kName, name); |
324 ListValue* icons = new ListValue; | 324 ListValue* icons = new ListValue; |
325 icons->Set(0, Value::CreateStringValue(img1)); | 325 icons->Set(0, Value::CreateStringValue(img1)); |
326 icons->Set(1, Value::CreateStringValue(img2)); | 326 icons->Set(1, Value::CreateStringValue(img2)); |
327 input.Set(keys::kPageActionIcons, icons); | 327 input.Set(keys::kPageActionIcons, icons); |
328 | 328 |
329 // Parse and read back the values from the object. | 329 // Parse and read back the values from the object. |
330 action.reset(extension.LoadExtensionAction2Helper( | 330 action.reset(extension.LoadExtensionActionHelper( |
331 &input, &error_msg)); | 331 &input, &error_msg)); |
332 ASSERT_TRUE(NULL != action.get()); | 332 ASSERT_TRUE(NULL != action.get()); |
333 ASSERT_STREQ("", error_msg.c_str()); | 333 ASSERT_STREQ("", error_msg.c_str()); |
334 ASSERT_STREQ(id.c_str(), action->id().c_str()); | 334 ASSERT_STREQ(id.c_str(), action->id().c_str()); |
335 ASSERT_STREQ(name.c_str(), action->GetTitle(1).c_str()); | 335 ASSERT_STREQ(name.c_str(), action->GetTitle(1).c_str()); |
336 ASSERT_EQ(2u, action->icon_paths()->size()); | 336 ASSERT_EQ(2u, action->icon_paths()->size()); |
337 ASSERT_STREQ(img1.c_str(), action->icon_paths()->at(0).c_str()); | 337 ASSERT_STREQ(img1.c_str(), action->icon_paths()->at(0).c_str()); |
338 ASSERT_STREQ(img2.c_str(), action->icon_paths()->at(1).c_str()); | 338 ASSERT_STREQ(img2.c_str(), action->icon_paths()->at(1).c_str()); |
339 | 339 |
340 // Explicitly set the same type and parse again. | 340 // Explicitly set the same type and parse again. |
341 input.SetString(keys::kType, values::kPageActionTypeTab); | 341 input.SetString(keys::kType, values::kPageActionTypeTab); |
342 action.reset(extension.LoadExtensionAction2Helper( | 342 action.reset(extension.LoadExtensionActionHelper( |
343 &input, &error_msg)); | 343 &input, &error_msg)); |
344 ASSERT_TRUE(NULL != action.get()); | 344 ASSERT_TRUE(NULL != action.get()); |
345 ASSERT_STREQ("", error_msg.c_str()); | 345 ASSERT_STREQ("", error_msg.c_str()); |
346 | 346 |
347 // Make a deep copy of the input and remove one key at a time and see if we | 347 // Make a deep copy of the input and remove one key at a time and see if we |
348 // get the right error. | 348 // get the right error. |
349 scoped_ptr<DictionaryValue> copy; | 349 scoped_ptr<DictionaryValue> copy; |
350 | 350 |
351 // First remove id key. | 351 // First remove id key. |
352 copy.reset(static_cast<DictionaryValue*>(input.DeepCopy())); | 352 copy.reset(static_cast<DictionaryValue*>(input.DeepCopy())); |
353 copy->Remove(keys::kPageActionId, NULL); | 353 copy->Remove(keys::kPageActionId, NULL); |
354 action.reset(extension.LoadExtensionAction2Helper( | 354 action.reset(extension.LoadExtensionActionHelper( |
355 copy.get(), &error_msg)); | 355 copy.get(), &error_msg)); |
356 ASSERT_TRUE(NULL != action.get()); | 356 ASSERT_TRUE(NULL != action.get()); |
357 ASSERT_STREQ("", error_msg.c_str()); | 357 ASSERT_STREQ("", error_msg.c_str()); |
358 error_msg = ""; | 358 error_msg = ""; |
359 | 359 |
360 // Then remove the name key. | 360 // Then remove the name key. |
361 copy.reset(static_cast<DictionaryValue*>(input.DeepCopy())); | 361 copy.reset(static_cast<DictionaryValue*>(input.DeepCopy())); |
362 copy->Remove(keys::kName, NULL); | 362 copy->Remove(keys::kName, NULL); |
363 action.reset(extension.LoadExtensionAction2Helper( | 363 action.reset(extension.LoadExtensionActionHelper( |
364 copy.get(), &error_msg)); | 364 copy.get(), &error_msg)); |
365 ASSERT_TRUE(NULL == action.get()); | 365 ASSERT_TRUE(NULL == action.get()); |
366 ASSERT_TRUE(MatchPattern(error_msg.c_str(), | 366 ASSERT_TRUE(MatchPattern(error_msg.c_str(), |
367 errors::kInvalidPageActionDefaultTitle)); | 367 errors::kInvalidPageActionDefaultTitle)); |
368 error_msg = ""; | 368 error_msg = ""; |
369 | 369 |
370 // Then remove the icon paths key. | 370 // Then remove the icon paths key. |
371 copy.reset(static_cast<DictionaryValue*>(input.DeepCopy())); | 371 copy.reset(static_cast<DictionaryValue*>(input.DeepCopy())); |
372 copy->Remove(keys::kPageActionIcons, NULL); | 372 copy->Remove(keys::kPageActionIcons, NULL); |
373 action.reset(extension.LoadExtensionAction2Helper( | 373 action.reset(extension.LoadExtensionActionHelper( |
374 copy.get(), &error_msg)); | 374 copy.get(), &error_msg)); |
375 ASSERT_TRUE(NULL != action.get()); | 375 ASSERT_TRUE(NULL != action.get()); |
376 error_msg = ""; | 376 error_msg = ""; |
377 | 377 |
378 // Now test that we can parse the new format for page actions. | 378 // Now test that we can parse the new format for page actions. |
379 | 379 |
380 // Now setup some values to use in the page action. | 380 // Now setup some values to use in the page action. |
381 const std::string kTitle("MyExtensionActionTitle"); | 381 const std::string kTitle("MyExtensionActionTitle"); |
382 const std::string kIcon("image1.png"); | 382 const std::string kIcon("image1.png"); |
383 | 383 |
384 // Add the dictionary for the contextual action. | 384 // Add the dictionary for the contextual action. |
385 input.Clear(); | 385 input.Clear(); |
386 input.SetString(keys::kPageActionDefaultTitle, kTitle); | 386 input.SetString(keys::kPageActionDefaultTitle, kTitle); |
387 input.SetString(keys::kPageActionDefaultIcon, kIcon); | 387 input.SetString(keys::kPageActionDefaultIcon, kIcon); |
388 | 388 |
389 // Parse and read back the values from the object. | 389 // Parse and read back the values from the object. |
390 action.reset(extension.LoadExtensionAction2Helper( | 390 action.reset(extension.LoadExtensionActionHelper( |
391 &input, &error_msg)); | 391 &input, &error_msg)); |
392 ASSERT_TRUE(action.get()); | 392 ASSERT_TRUE(action.get()); |
393 ASSERT_STREQ("", error_msg.c_str()); | 393 ASSERT_STREQ("", error_msg.c_str()); |
394 ASSERT_EQ(kTitle, action->GetTitle(1)); | 394 ASSERT_EQ(kTitle, action->GetTitle(1)); |
395 ASSERT_EQ(0u, action->icon_paths()->size()); | 395 ASSERT_EQ(0u, action->icon_paths()->size()); |
396 } | 396 } |
397 | 397 |
398 TEST(ExtensionTest, IdIsValid) { | 398 TEST(ExtensionTest, IdIsValid) { |
399 EXPECT_TRUE(Extension::IdIsValid("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")); | 399 EXPECT_TRUE(Extension::IdIsValid("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")); |
400 EXPECT_TRUE(Extension::IdIsValid("pppppppppppppppppppppppppppppppp")); | 400 EXPECT_TRUE(Extension::IdIsValid("pppppppppppppppppppppppppppppppp")); |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
641 scoped_ptr<Extension> new_extension( | 641 scoped_ptr<Extension> new_extension( |
642 LoadManifest("allow_silent_upgrade", | 642 LoadManifest("allow_silent_upgrade", |
643 std::string(kTests[i].base_name) + "_new.json")); | 643 std::string(kTests[i].base_name) + "_new.json")); |
644 | 644 |
645 EXPECT_EQ(kTests[i].expect_success, | 645 EXPECT_EQ(kTests[i].expect_success, |
646 Extension::IsPrivilegeIncrease(old_extension.get(), | 646 Extension::IsPrivilegeIncrease(old_extension.get(), |
647 new_extension.get())) | 647 new_extension.get())) |
648 << kTests[i].base_name; | 648 << kTests[i].base_name; |
649 } | 649 } |
650 } | 650 } |
OLD | NEW |