[Extensions] Cache extension action icons
Cache extension action icons so that they don't have to be
reloaded each time a new view is created (i.e., each time a
new browser or the new overflow menu is opened).
BUG=452958
Review URL: https://codereview.chromium.org/885443004
Cr-Commit-Position: refs/heads/master@{#313724}
diff --git a/chrome/browser/extensions/extension_action_unittest.cc b/chrome/browser/extensions/extension_action_unittest.cc
index 53bc363..17840da 100644
--- a/chrome/browser/extensions/extension_action_unittest.cc
+++ b/chrome/browser/extensions/extension_action_unittest.cc
@@ -5,114 +5,128 @@
#include "base/message_loop/message_loop.h"
#include "chrome/browser/extensions/extension_action.h"
#include "chrome/common/extensions/api/extension_action/action_info.h"
+#include "extensions/common/test_util.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "url/gurl.h"
+namespace extensions {
+
namespace {
-using extensions::ActionInfo;
+scoped_ptr<ExtensionAction> CreateAction(ActionInfo::Type type,
+ const ActionInfo& action_info) {
+ scoped_refptr<const Extension> extension = test_util::CreateEmptyExtension();
+ return make_scoped_ptr(new ExtensionAction(*extension, type, action_info));
+}
+
+} // namespace
TEST(ExtensionActionTest, Title) {
ActionInfo action_info;
action_info.default_title = "Initial Title";
- ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, action_info);
+ scoped_ptr<ExtensionAction> action =
+ CreateAction(ActionInfo::TYPE_PAGE, action_info);
- ASSERT_EQ("Initial Title", action.GetTitle(1));
- action.SetTitle(ExtensionAction::kDefaultTabId, "foo");
- ASSERT_EQ("foo", action.GetTitle(1));
- ASSERT_EQ("foo", action.GetTitle(100));
- action.SetTitle(100, "bar");
- ASSERT_EQ("foo", action.GetTitle(1));
- ASSERT_EQ("bar", action.GetTitle(100));
- action.SetTitle(ExtensionAction::kDefaultTabId, "baz");
- ASSERT_EQ("baz", action.GetTitle(1));
- action.ClearAllValuesForTab(100);
- ASSERT_EQ("baz", action.GetTitle(100));
+ ASSERT_EQ("Initial Title", action->GetTitle(1));
+ action->SetTitle(ExtensionAction::kDefaultTabId, "foo");
+ ASSERT_EQ("foo", action->GetTitle(1));
+ ASSERT_EQ("foo", action->GetTitle(100));
+ action->SetTitle(100, "bar");
+ ASSERT_EQ("foo", action->GetTitle(1));
+ ASSERT_EQ("bar", action->GetTitle(100));
+ action->SetTitle(ExtensionAction::kDefaultTabId, "baz");
+ ASSERT_EQ("baz", action->GetTitle(1));
+ action->ClearAllValuesForTab(100);
+ ASSERT_EQ("baz", action->GetTitle(100));
}
TEST(ExtensionActionTest, Visibility) {
- ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, ActionInfo());
+ scoped_ptr<ExtensionAction> action =
+ CreateAction(ActionInfo::TYPE_PAGE, ActionInfo());
- ASSERT_FALSE(action.GetIsVisible(1));
- action.SetIsVisible(ExtensionAction::kDefaultTabId, true);
- ASSERT_TRUE(action.GetIsVisible(1));
- ASSERT_TRUE(action.GetIsVisible(100));
+ ASSERT_FALSE(action->GetIsVisible(1));
+ action->SetIsVisible(ExtensionAction::kDefaultTabId, true);
+ ASSERT_TRUE(action->GetIsVisible(1));
+ ASSERT_TRUE(action->GetIsVisible(100));
- action.SetIsVisible(ExtensionAction::kDefaultTabId, false);
- ASSERT_FALSE(action.GetIsVisible(1));
- ASSERT_FALSE(action.GetIsVisible(100));
- action.SetIsVisible(100, true);
- ASSERT_FALSE(action.GetIsVisible(1));
- ASSERT_TRUE(action.GetIsVisible(100));
+ action->SetIsVisible(ExtensionAction::kDefaultTabId, false);
+ ASSERT_FALSE(action->GetIsVisible(1));
+ ASSERT_FALSE(action->GetIsVisible(100));
+ action->SetIsVisible(100, true);
+ ASSERT_FALSE(action->GetIsVisible(1));
+ ASSERT_TRUE(action->GetIsVisible(100));
- action.ClearAllValuesForTab(100);
- ASSERT_FALSE(action.GetIsVisible(1));
- ASSERT_FALSE(action.GetIsVisible(100));
+ action->ClearAllValuesForTab(100);
+ ASSERT_FALSE(action->GetIsVisible(1));
+ ASSERT_FALSE(action->GetIsVisible(100));
- ExtensionAction browser_action(
- std::string(), ActionInfo::TYPE_BROWSER, ActionInfo());
- ASSERT_TRUE(browser_action.GetIsVisible(1));
+ scoped_ptr<ExtensionAction> browser_action =
+ CreateAction(ActionInfo::TYPE_BROWSER, ActionInfo());
+ ASSERT_TRUE(browser_action->GetIsVisible(1));
}
TEST(ExtensionActionTest, Icon) {
ActionInfo action_info;
action_info.default_icon.Add(16, "icon16.png");
- ExtensionAction page_action(
- std::string(), ActionInfo::TYPE_PAGE, action_info);
- ASSERT_TRUE(page_action.default_icon());
+ scoped_ptr<ExtensionAction> page_action =
+ CreateAction(ActionInfo::TYPE_PAGE, action_info);
+ ASSERT_TRUE(page_action->default_icon());
EXPECT_EQ("icon16.png",
- page_action.default_icon()->Get(
+ page_action->default_icon()->Get(
16, ExtensionIconSet::MATCH_EXACTLY));
EXPECT_EQ("",
- page_action.default_icon()->Get(
+ page_action->default_icon()->Get(
17, ExtensionIconSet::MATCH_BIGGER));
}
TEST(ExtensionActionTest, Badge) {
- ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, ActionInfo());
- ASSERT_EQ("", action.GetBadgeText(1));
- action.SetBadgeText(ExtensionAction::kDefaultTabId, "foo");
- ASSERT_EQ("foo", action.GetBadgeText(1));
- ASSERT_EQ("foo", action.GetBadgeText(100));
- action.SetBadgeText(100, "bar");
- ASSERT_EQ("foo", action.GetBadgeText(1));
- ASSERT_EQ("bar", action.GetBadgeText(100));
- action.SetBadgeText(ExtensionAction::kDefaultTabId, "baz");
- ASSERT_EQ("baz", action.GetBadgeText(1));
- action.ClearAllValuesForTab(100);
- ASSERT_EQ("baz", action.GetBadgeText(100));
+ scoped_ptr<ExtensionAction> action =
+ CreateAction(ActionInfo::TYPE_PAGE, ActionInfo());
+ ASSERT_EQ("", action->GetBadgeText(1));
+ action->SetBadgeText(ExtensionAction::kDefaultTabId, "foo");
+ ASSERT_EQ("foo", action->GetBadgeText(1));
+ ASSERT_EQ("foo", action->GetBadgeText(100));
+ action->SetBadgeText(100, "bar");
+ ASSERT_EQ("foo", action->GetBadgeText(1));
+ ASSERT_EQ("bar", action->GetBadgeText(100));
+ action->SetBadgeText(ExtensionAction::kDefaultTabId, "baz");
+ ASSERT_EQ("baz", action->GetBadgeText(1));
+ action->ClearAllValuesForTab(100);
+ ASSERT_EQ("baz", action->GetBadgeText(100));
}
TEST(ExtensionActionTest, BadgeTextColor) {
- ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, ActionInfo());
- ASSERT_EQ(0x00000000u, action.GetBadgeTextColor(1));
- action.SetBadgeTextColor(ExtensionAction::kDefaultTabId, 0xFFFF0000u);
- ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(1));
- ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(100));
- action.SetBadgeTextColor(100, 0xFF00FF00);
- ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(1));
- ASSERT_EQ(0xFF00FF00u, action.GetBadgeTextColor(100));
- action.SetBadgeTextColor(ExtensionAction::kDefaultTabId, 0xFF0000FFu);
- ASSERT_EQ(0xFF0000FFu, action.GetBadgeTextColor(1));
- action.ClearAllValuesForTab(100);
- ASSERT_EQ(0xFF0000FFu, action.GetBadgeTextColor(100));
+ scoped_ptr<ExtensionAction> action =
+ CreateAction(ActionInfo::TYPE_PAGE, ActionInfo());
+ ASSERT_EQ(0x00000000u, action->GetBadgeTextColor(1));
+ action->SetBadgeTextColor(ExtensionAction::kDefaultTabId, 0xFFFF0000u);
+ ASSERT_EQ(0xFFFF0000u, action->GetBadgeTextColor(1));
+ ASSERT_EQ(0xFFFF0000u, action->GetBadgeTextColor(100));
+ action->SetBadgeTextColor(100, 0xFF00FF00);
+ ASSERT_EQ(0xFFFF0000u, action->GetBadgeTextColor(1));
+ ASSERT_EQ(0xFF00FF00u, action->GetBadgeTextColor(100));
+ action->SetBadgeTextColor(ExtensionAction::kDefaultTabId, 0xFF0000FFu);
+ ASSERT_EQ(0xFF0000FFu, action->GetBadgeTextColor(1));
+ action->ClearAllValuesForTab(100);
+ ASSERT_EQ(0xFF0000FFu, action->GetBadgeTextColor(100));
}
TEST(ExtensionActionTest, BadgeBackgroundColor) {
- ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, ActionInfo());
- ASSERT_EQ(0x00000000u, action.GetBadgeBackgroundColor(1));
- action.SetBadgeBackgroundColor(ExtensionAction::kDefaultTabId,
+ scoped_ptr<ExtensionAction> action =
+ CreateAction(ActionInfo::TYPE_PAGE, ActionInfo());
+ ASSERT_EQ(0x00000000u, action->GetBadgeBackgroundColor(1));
+ action->SetBadgeBackgroundColor(ExtensionAction::kDefaultTabId,
0xFFFF0000u);
- ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(1));
- ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(100));
- action.SetBadgeBackgroundColor(100, 0xFF00FF00);
- ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(1));
- ASSERT_EQ(0xFF00FF00u, action.GetBadgeBackgroundColor(100));
- action.SetBadgeBackgroundColor(ExtensionAction::kDefaultTabId,
+ ASSERT_EQ(0xFFFF0000u, action->GetBadgeBackgroundColor(1));
+ ASSERT_EQ(0xFFFF0000u, action->GetBadgeBackgroundColor(100));
+ action->SetBadgeBackgroundColor(100, 0xFF00FF00);
+ ASSERT_EQ(0xFFFF0000u, action->GetBadgeBackgroundColor(1));
+ ASSERT_EQ(0xFF00FF00u, action->GetBadgeBackgroundColor(100));
+ action->SetBadgeBackgroundColor(ExtensionAction::kDefaultTabId,
0xFF0000FFu);
- ASSERT_EQ(0xFF0000FFu, action.GetBadgeBackgroundColor(1));
- action.ClearAllValuesForTab(100);
- ASSERT_EQ(0xFF0000FFu, action.GetBadgeBackgroundColor(100));
+ ASSERT_EQ(0xFF0000FFu, action->GetBadgeBackgroundColor(1));
+ action->ClearAllValuesForTab(100);
+ ASSERT_EQ(0xFF0000FFu, action->GetBadgeBackgroundColor(100));
}
TEST(ExtensionActionTest, PopupUrl) {
@@ -123,30 +137,31 @@
ActionInfo action_info;
action_info.default_popup_url = url_foo;
- ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, action_info);
+ scoped_ptr<ExtensionAction> action =
+ CreateAction(ActionInfo::TYPE_PAGE, action_info);
- ASSERT_EQ(url_foo, action.GetPopupUrl(1));
- ASSERT_EQ(url_foo, action.GetPopupUrl(100));
- ASSERT_TRUE(action.HasPopup(1));
- ASSERT_TRUE(action.HasPopup(100));
+ ASSERT_EQ(url_foo, action->GetPopupUrl(1));
+ ASSERT_EQ(url_foo, action->GetPopupUrl(100));
+ ASSERT_TRUE(action->HasPopup(1));
+ ASSERT_TRUE(action->HasPopup(100));
- action.SetPopupUrl(ExtensionAction::kDefaultTabId, url_unset);
- ASSERT_EQ(url_unset, action.GetPopupUrl(1));
- ASSERT_EQ(url_unset, action.GetPopupUrl(100));
- ASSERT_FALSE(action.HasPopup(1));
- ASSERT_FALSE(action.HasPopup(100));
+ action->SetPopupUrl(ExtensionAction::kDefaultTabId, url_unset);
+ ASSERT_EQ(url_unset, action->GetPopupUrl(1));
+ ASSERT_EQ(url_unset, action->GetPopupUrl(100));
+ ASSERT_FALSE(action->HasPopup(1));
+ ASSERT_FALSE(action->HasPopup(100));
- action.SetPopupUrl(100, url_bar);
- ASSERT_EQ(url_unset, action.GetPopupUrl(1));
- ASSERT_EQ(url_bar, action.GetPopupUrl(100));
+ action->SetPopupUrl(100, url_bar);
+ ASSERT_EQ(url_unset, action->GetPopupUrl(1));
+ ASSERT_EQ(url_bar, action->GetPopupUrl(100));
- action.SetPopupUrl(ExtensionAction::kDefaultTabId, url_baz);
- ASSERT_EQ(url_baz, action.GetPopupUrl(1));
- ASSERT_EQ(url_bar, action.GetPopupUrl(100));
+ action->SetPopupUrl(ExtensionAction::kDefaultTabId, url_baz);
+ ASSERT_EQ(url_baz, action->GetPopupUrl(1));
+ ASSERT_EQ(url_bar, action->GetPopupUrl(100));
- action.ClearAllValuesForTab(100);
- ASSERT_EQ(url_baz, action.GetPopupUrl(1));
- ASSERT_EQ(url_baz, action.GetPopupUrl(100));
+ action->ClearAllValuesForTab(100);
+ ASSERT_EQ(url_baz, action->GetPopupUrl(1));
+ ASSERT_EQ(url_baz, action->GetPopupUrl(100));
}
-} // namespace
+} // namespace extensions