Chromium Code Reviews| Index: chrome/common/extensions/extension_action_unittest.cc |
| diff --git a/chrome/common/extensions/extension_action_unittest.cc b/chrome/common/extensions/extension_action_unittest.cc |
| index 23696f0f1c33fced8b68586fc80d463de09edea5..976167cd8231ad16a2d226b5c1a4a17568b904a0 100644 |
| --- a/chrome/common/extensions/extension_action_unittest.cc |
| +++ b/chrome/common/extensions/extension_action_unittest.cc |
| @@ -8,14 +8,19 @@ |
| #include "chrome/common/chrome_paths.h" |
| #include "chrome/common/extensions/extension_action.h" |
| #include "googleurl/src/gurl.h" |
| +#include "grit/theme_resources.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| #include "third_party/skia/include/core/SkBitmap.h" |
| +#include "ui/base/resource/resource_bundle.h" |
| +#include "ui/gfx/image/image.h" |
| #include "ui/gfx/skia_util.h" |
| #include "webkit/glue/image_decoder.h" |
| -using gfx::BitmapsAreEqual; |
| +static bool ImagesAreEqual(const gfx::Image& i1, const gfx::Image& i2) { |
|
not at google - send to devlin
2012/07/26 02:29:44
ditto anonymous namespace, and next function.
In
Jeffrey Yasskin
2012/07/26 21:11:47
Done.
|
| + return gfx::BitmapsAreEqual(*i1.ToSkBitmap(), *i2.ToSkBitmap()); |
| +} |
| -static SkBitmap LoadIcon(const std::string& filename) { |
| +static gfx::Image LoadIcon(const std::string& filename) { |
| FilePath path; |
| PathService::Get(chrome::DIR_TEST_DATA, &path); |
| path = path.AppendASCII("extensions").AppendASCII(filename); |
| @@ -29,13 +34,19 @@ static SkBitmap LoadIcon(const std::string& filename) { |
| webkit_glue::ImageDecoder decoder; |
| bitmap = decoder.Decode(data, file_contents.length()); |
| - return bitmap; |
| + return gfx::Image(bitmap); |
| } |
| -TEST(ExtensionActionTest, TabSpecificState) { |
| - ExtensionAction action("", ExtensionAction::TYPE_PAGE); |
| +class ExtensionActionTest : public testing::Test { |
| + public: |
| + ExtensionActionTest() |
| + : action("", ExtensionAction::TYPE_PAGE) { |
| + } |
| + |
| + ExtensionAction action; |
|
Jeffrey Yasskin
2012/07/25 19:45:26
Breaks the naming rule in order to keep the diff s
|
| +}; |
| - // title |
| +TEST_F(ExtensionActionTest, Title) { |
| ASSERT_EQ("", action.GetTitle(1)); |
| action.SetTitle(ExtensionAction::kDefaultTabId, "foo"); |
| ASSERT_EQ("foo", action.GetTitle(1)); |
| @@ -47,32 +58,61 @@ TEST(ExtensionActionTest, TabSpecificState) { |
| ASSERT_EQ("baz", action.GetTitle(1)); |
| action.ClearAllValuesForTab(100); |
| ASSERT_EQ("baz", action.GetTitle(100)); |
| +} |
| + |
| +TEST_F(ExtensionActionTest, Icon) { |
| + ExtensionAction::PathToIconCache cache; |
| + |
| + gfx::Image puzzle_piece = |
| + ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
| + IDR_EXTENSIONS_FAVICON); |
| + gfx::Image icon1 = LoadIcon("icon1.png"); |
| + gfx::Image icon2 = LoadIcon("icon2.png"); |
| + ASSERT_TRUE(ImagesAreEqual(puzzle_piece, action.GetIcon(1, cache))); |
| + |
| + action.set_default_icon_path("the_default.png"); |
| + ASSERT_TRUE(ImagesAreEqual(puzzle_piece, action.GetIcon(1, cache))) |
| + << "Still returns the puzzle piece because the image isn't loaded yet."; |
| + cache["the_default.png"] = icon2; |
| + ASSERT_TRUE(ImagesAreEqual(icon2, action.GetIcon(1, cache))); |
| + |
| + action.SetIcon(ExtensionAction::kDefaultTabId, *icon1.ToSkBitmap()); |
| + ASSERT_TRUE(ImagesAreEqual(icon1, action.GetIcon(100, cache))) |
| + << "SetIcon(kDefaultTabId) overrides the default_icon_path."; |
| + |
| + action.SetIcon(100, *icon2.ToSkBitmap()); |
| + ASSERT_TRUE(ImagesAreEqual(icon1, action.GetIcon(1, cache))); |
| + ASSERT_TRUE(ImagesAreEqual(icon2, action.GetIcon(100, cache))); |
| +} |
| + |
| +TEST_F(ExtensionActionTest, IconIndex) { |
| + ExtensionAction::PathToIconCache cache; |
| + gfx::Image icon1 = LoadIcon("icon1.png"); |
| + gfx::Image icon2 = LoadIcon("icon2.png"); |
| + gfx::Image puzzle_piece = |
| + ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
| + IDR_EXTENSIONS_FAVICON); |
| - // icon |
| - SkBitmap icon1 = LoadIcon("icon1.png"); |
| - SkBitmap icon2 = LoadIcon("icon2.png"); |
| - ASSERT_TRUE(action.GetIcon(1).isNull()); |
| - action.SetIcon(ExtensionAction::kDefaultTabId, icon1); |
| - ASSERT_TRUE(BitmapsAreEqual(icon1, action.GetIcon(100))); |
| - action.SetIcon(100, icon2); |
| - ASSERT_TRUE(BitmapsAreEqual(icon1, action.GetIcon(1))); |
| - ASSERT_TRUE(BitmapsAreEqual(icon2, action.GetIcon(100))); |
| - |
| - // icon index |
| ASSERT_EQ(-1, action.GetIconIndex(1)); |
| action.icon_paths()->push_back("foo.png"); |
| action.icon_paths()->push_back("bar.png"); |
| action.SetIconIndex(ExtensionAction::kDefaultTabId, 1); |
| ASSERT_EQ(1, action.GetIconIndex(1)); |
| ASSERT_EQ(1, action.GetIconIndex(100)); |
| + ASSERT_TRUE(ImagesAreEqual(puzzle_piece, action.GetIcon(100, cache))) |
| + << "Non-loaded icon gets the puzzle piece."; |
| + cache["bar.png"] = icon1; |
| + ASSERT_TRUE(ImagesAreEqual(icon1, action.GetIcon(100, cache))); |
| + |
| action.SetIconIndex(100, 0); |
| ASSERT_EQ(0, action.GetIconIndex(100)); |
| ASSERT_EQ(1, action.GetIconIndex(1)); |
| action.ClearAllValuesForTab(100); |
| ASSERT_EQ(1, action.GetIconIndex(100)); |
| ASSERT_EQ(1, action.GetIconIndex(1)); |
| +} |
| - // visibility |
| +TEST_F(ExtensionActionTest, Visibility) { |
| ASSERT_FALSE(action.GetIsVisible(1)); |
| action.SetIsVisible(ExtensionAction::kDefaultTabId, true); |
| ASSERT_TRUE(action.GetIsVisible(1)); |
| @@ -86,8 +126,9 @@ TEST(ExtensionActionTest, TabSpecificState) { |
| action.ClearAllValuesForTab(100); |
| ASSERT_FALSE(action.GetIsVisible(1)); |
| ASSERT_FALSE(action.GetIsVisible(100)); |
| +} |
| - // badge text |
| +TEST_F(ExtensionActionTest, Badge) { |
| ASSERT_EQ("", action.GetBadgeText(1)); |
| action.SetBadgeText(ExtensionAction::kDefaultTabId, "foo"); |
| ASSERT_EQ("foo", action.GetBadgeText(1)); |
| @@ -99,8 +140,9 @@ TEST(ExtensionActionTest, TabSpecificState) { |
| ASSERT_EQ("baz", action.GetBadgeText(1)); |
| action.ClearAllValuesForTab(100); |
| ASSERT_EQ("baz", action.GetBadgeText(100)); |
| +} |
| - // badge text color |
| +TEST_F(ExtensionActionTest, BadgeTextColor) { |
| ASSERT_EQ(0x00000000u, action.GetBadgeTextColor(1)); |
| action.SetBadgeTextColor(ExtensionAction::kDefaultTabId, 0xFFFF0000u); |
| ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(1)); |
| @@ -112,8 +154,9 @@ TEST(ExtensionActionTest, TabSpecificState) { |
| ASSERT_EQ(0xFF0000FFu, action.GetBadgeTextColor(1)); |
| action.ClearAllValuesForTab(100); |
| ASSERT_EQ(0xFF0000FFu, action.GetBadgeTextColor(100)); |
| +} |
| - // badge background color |
| +TEST_F(ExtensionActionTest, BadgeBackgroundColor) { |
| ASSERT_EQ(0x00000000u, action.GetBadgeBackgroundColor(1)); |
| action.SetBadgeBackgroundColor(ExtensionAction::kDefaultTabId, |
| 0xFFFF0000u); |
| @@ -127,8 +170,9 @@ TEST(ExtensionActionTest, TabSpecificState) { |
| ASSERT_EQ(0xFF0000FFu, action.GetBadgeBackgroundColor(1)); |
| action.ClearAllValuesForTab(100); |
| ASSERT_EQ(0xFF0000FFu, action.GetBadgeBackgroundColor(100)); |
| +} |
| - // popup url |
| +TEST_F(ExtensionActionTest, PopupUrl) { |
| GURL url_unset; |
| GURL url_foo("http://www.example.com/foo.html"); |
| GURL url_bar("http://www.example.com/bar.html"); |