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 03fa634dd6ede7223c236b26c550c6a9655abee8..f8f9f45dbbf42968925abb86d8e546fc654eaf2a 100644 |
--- a/chrome/common/extensions/extension_action_unittest.cc |
+++ b/chrome/common/extensions/extension_action_unittest.cc |
@@ -10,6 +10,7 @@ |
#include "chrome/common/extensions/extension_action.h" |
#include "googleurl/src/gurl.h" |
#include "grit/theme_resources.h" |
+#include "testing/gmock/include/gmock/gmock.h" |
#include "testing/gtest/include/gtest/gtest.h" |
#include "third_party/skia/include/core/SkBitmap.h" |
#include "ui/base/resource/resource_bundle.h" |
@@ -17,6 +18,8 @@ |
#include "ui/gfx/skia_util.h" |
#include "webkit/glue/image_decoder.h" |
+using ::testing::Return; |
+ |
namespace { |
bool ImagesAreEqual(const gfx::Image& i1, const gfx::Image& i2) { |
@@ -49,6 +52,14 @@ class ExtensionActionTest : public testing::Test { |
ExtensionAction action; |
}; |
+class MockActionIconFactory : public ExtensionAction::IconFactory { |
+ public: |
+ virtual ~MockActionIconFactory() {} |
+ |
+ MOCK_METHOD2(GetIcon, gfx::ImageSkia(const ExtensionIconSet* icon_set, |
+ ExtensionAction::Type type)); |
+}; |
+ |
TEST_F(ExtensionActionTest, Title) { |
ASSERT_EQ("", action.GetTitle(1)); |
action.SetTitle(ExtensionAction::kDefaultTabId, "foo"); |
@@ -69,21 +80,27 @@ TEST_F(ExtensionActionTest, Icon) { |
IDR_EXTENSIONS_FAVICON); |
gfx::Image icon1 = LoadIcon("icon1.png"); |
gfx::Image icon2 = LoadIcon("icon2.png"); |
- ASSERT_TRUE(ImagesAreEqual(puzzle_piece, action.GetIcon(1))); |
- action.set_default_icon_path("the_default.png"); |
- ASSERT_TRUE(ImagesAreEqual(puzzle_piece, action.GetIcon(1))) |
- << "Still returns the puzzle piece because the image isn't loaded yet."; |
- action.CacheIcon("the_default.png", icon2); |
- ASSERT_TRUE(ImagesAreEqual(icon2, action.GetIcon(1))); |
+ scoped_ptr<ExtensionIconSet> default_icon_set(new ExtensionIconSet()); |
+ MockActionIconFactory icon_factory_mock; |
+ |
+ EXPECT_CALL(icon_factory_mock, |
+ GetIcon(default_icon_set.get(), ExtensionAction::TYPE_PAGE)) |
+ .WillOnce(Return(*icon2.ToImageSkia())); |
+ |
+ ASSERT_TRUE(ImagesAreEqual(puzzle_piece, |
+ action.GetIcon(1, &icon_factory_mock))); |
+ |
+ action.set_default_icon(default_icon_set.release()); |
+ ASSERT_TRUE(ImagesAreEqual(icon2, action.GetIcon(1, &icon_factory_mock))); |
action.SetIcon(ExtensionAction::kDefaultTabId, icon1); |
- ASSERT_TRUE(ImagesAreEqual(icon1, action.GetIcon(100))) |
+ ASSERT_TRUE(ImagesAreEqual(icon1, action.GetIcon(100, &icon_factory_mock))) |
<< "SetIcon(kDefaultTabId) overrides the default_icon_path."; |
action.SetIcon(100, icon2); |
- ASSERT_TRUE(ImagesAreEqual(icon1, action.GetIcon(1))); |
- ASSERT_TRUE(ImagesAreEqual(icon2, action.GetIcon(100))); |
+ ASSERT_TRUE(ImagesAreEqual(icon1, action.GetIcon(1, &icon_factory_mock))); |
+ ASSERT_TRUE(ImagesAreEqual(icon2, action.GetIcon(100, &icon_factory_mock))); |
} |
TEST_F(ExtensionActionTest, IconIndex) { |
@@ -94,15 +111,23 @@ TEST_F(ExtensionActionTest, IconIndex) { |
IDR_EXTENSIONS_FAVICON); |
ASSERT_EQ(-1, action.GetIconIndex(1)); |
- action.icon_paths()->push_back("foo.png"); |
- action.icon_paths()->push_back("bar.png"); |
+ |
+ ExtensionIconSet* icon1_set = new ExtensionIconSet(); |
+ action.AddPageActionIcon(icon1_set); |
+ |
+ ExtensionIconSet* icon2_set = new ExtensionIconSet(); |
+ action.AddPageActionIcon(icon2_set); |
+ |
+ MockActionIconFactory icon_factory_mock; |
+ |
+ EXPECT_CALL(icon_factory_mock, |
+ GetIcon(icon2_set, ExtensionAction::TYPE_PAGE)) |
+ .WillOnce(Return(*icon2.ToImageSkia())); |
+ |
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))) |
- << "Non-loaded icon gets the puzzle piece."; |
- action.CacheIcon("bar.png", icon1); |
- ASSERT_TRUE(ImagesAreEqual(icon1, action.GetIcon(100))); |
+ ASSERT_TRUE(ImagesAreEqual(icon2, action.GetIcon(100, &icon_factory_mock))); |
action.SetIconIndex(100, 0); |
ASSERT_EQ(0, action.GetIconIndex(100)); |