| 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..c1ed9a9cac6ffd330cbff7e722752d045128aa10 100644
|
| --- a/chrome/common/extensions/extension_action_unittest.cc
|
| +++ b/chrome/common/extensions/extension_action_unittest.cc
|
| @@ -15,8 +15,11 @@
|
| #include "ui/base/resource/resource_bundle.h"
|
| #include "ui/gfx/image/image_skia.h"
|
| #include "ui/gfx/skia_util.h"
|
| +#include "testing/gmock/include/gmock/gmock.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));
|
|
|