blob: 8607c0ce2a12f80b7f1d183ccfe6014c25012295 [file] [log] [blame]
[email protected]3349b592012-04-26 12:35:281// Copyright (c) 2012 The Chromium Authors. All rights reserved.
[email protected]4a3dab22009-11-11 17:36:502// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]48a7a425b2012-08-03 12:52:585#include "base/message_loop.h"
[email protected]8ddcc922012-10-13 05:13:036#include "chrome/browser/extensions/extension_action.h"
[email protected]c3a4bd992010-08-18 20:25:017#include "googleurl/src/gurl.h"
[email protected]92c6f9b92009-10-24 04:35:088#include "testing/gtest/include/gtest/gtest.h"
[email protected]92c6f9b92009-10-24 04:35:089
[email protected]39eae2b72012-08-01 07:22:3210namespace {
[email protected]18539ee2010-09-16 21:39:2911
[email protected]0f34d9082012-10-08 19:16:4412using extensions::Extension;
[email protected]92c6f9b92009-10-24 04:35:0813
[email protected]0f34d9082012-10-08 19:16:4414TEST(ExtensionActionTest, Title) {
15 Extension::ActionInfo action_info;
16 action_info.default_title = "Initial Title";
17 ExtensionAction action("", Extension::ActionInfo::TYPE_PAGE, action_info);
[email protected]39eae2b72012-08-01 07:22:3218
[email protected]0f34d9082012-10-08 19:16:4419 ASSERT_EQ("Initial Title", action.GetTitle(1));
[email protected]5d246db22009-10-27 06:17:5720 action.SetTitle(ExtensionAction::kDefaultTabId, "foo");
[email protected]92c6f9b92009-10-24 04:35:0821 ASSERT_EQ("foo", action.GetTitle(1));
22 ASSERT_EQ("foo", action.GetTitle(100));
23 action.SetTitle(100, "bar");
24 ASSERT_EQ("foo", action.GetTitle(1));
25 ASSERT_EQ("bar", action.GetTitle(100));
[email protected]5d246db22009-10-27 06:17:5726 action.SetTitle(ExtensionAction::kDefaultTabId, "baz");
[email protected]92c6f9b92009-10-24 04:35:0827 ASSERT_EQ("baz", action.GetTitle(1));
28 action.ClearAllValuesForTab(100);
29 ASSERT_EQ("baz", action.GetTitle(100));
[email protected]39eae2b72012-08-01 07:22:3230}
[email protected]92c6f9b92009-10-24 04:35:0831
[email protected]0f34d9082012-10-08 19:16:4432TEST(ExtensionActionTest, Visibility) {
33 ExtensionAction action("", Extension::ActionInfo::TYPE_PAGE,
34 Extension::ActionInfo());
35
[email protected]e3a8a922010-10-02 02:04:3036 ASSERT_FALSE(action.GetIsVisible(1));
[email protected]48a7a425b2012-08-03 12:52:5837 action.SetAppearance(ExtensionAction::kDefaultTabId, ExtensionAction::ACTIVE);
[email protected]e3a8a922010-10-02 02:04:3038 ASSERT_TRUE(action.GetIsVisible(1));
39 ASSERT_TRUE(action.GetIsVisible(100));
[email protected]48a7a425b2012-08-03 12:52:5840
41 action.SetAppearance(ExtensionAction::kDefaultTabId,
42 ExtensionAction::INVISIBLE);
[email protected]e3a8a922010-10-02 02:04:3043 ASSERT_FALSE(action.GetIsVisible(1));
44 ASSERT_FALSE(action.GetIsVisible(100));
[email protected]48a7a425b2012-08-03 12:52:5845 action.SetAppearance(100, ExtensionAction::ACTIVE);
[email protected]e3a8a922010-10-02 02:04:3046 ASSERT_FALSE(action.GetIsVisible(1));
47 ASSERT_TRUE(action.GetIsVisible(100));
[email protected]a048c092012-09-21 02:33:2648 EXPECT_FALSE(action.GetIconAnimation(100))
49 << "Page actions should not animate.";
[email protected]48a7a425b2012-08-03 12:52:5850
[email protected]56ce6e52009-10-27 00:10:5251 action.ClearAllValuesForTab(100);
[email protected]e3a8a922010-10-02 02:04:3052 ASSERT_FALSE(action.GetIsVisible(1));
53 ASSERT_FALSE(action.GetIsVisible(100));
[email protected]0f34d9082012-10-08 19:16:4454
55 ExtensionAction browser_action("", Extension::ActionInfo::TYPE_BROWSER,
56 Extension::ActionInfo());
57 ASSERT_TRUE(browser_action.GetIsVisible(1));
[email protected]a048c092012-09-21 02:33:2658}
59
[email protected]0f34d9082012-10-08 19:16:4460TEST(ExtensionActionTest, ScriptBadgeAnimation) {
[email protected]a048c092012-09-21 02:33:2661 // Supports the icon animation.
62 MessageLoop message_loop;
63
[email protected]0f34d9082012-10-08 19:16:4464 ExtensionAction script_badge("", Extension::ActionInfo::TYPE_SCRIPT_BADGE,
65 Extension::ActionInfo());
[email protected]a048c092012-09-21 02:33:2666 EXPECT_FALSE(script_badge.GetIconAnimation(ExtensionAction::kDefaultTabId));
67 script_badge.SetAppearance(ExtensionAction::kDefaultTabId,
68 ExtensionAction::ACTIVE);
69 EXPECT_FALSE(script_badge.GetIconAnimation(ExtensionAction::kDefaultTabId))
70 << "Showing the default tab should not animate script badges.";
71
72 script_badge.SetAppearance(ExtensionAction::kDefaultTabId,
73 ExtensionAction::INVISIBLE);
74 EXPECT_FALSE(script_badge.GetIconAnimation(1))
75 << "Making a script badge invisible should not show its animation.";
76 script_badge.SetAppearance(1, ExtensionAction::ACTIVE);
77 EXPECT_TRUE(script_badge.GetIconAnimation(1))
78 << "Making a script badge visible should show its animation.";
79
80 script_badge.ClearAllValuesForTab(1);
81 EXPECT_FALSE(script_badge.GetIconAnimation(100));
[email protected]48a7a425b2012-08-03 12:52:5882}
83
[email protected]0f34d9082012-10-08 19:16:4484TEST(ExtensionActionTest, GetAttention) {
[email protected]48a7a425b2012-08-03 12:52:5885 // Supports the icon animation.
[email protected]b4cb7b5a2012-09-11 05:52:0586 scoped_ptr<MessageLoop> message_loop(new MessageLoop);
[email protected]48a7a425b2012-08-03 12:52:5887
[email protected]0f34d9082012-10-08 19:16:4488 ExtensionAction script_badge("", Extension::ActionInfo::TYPE_SCRIPT_BADGE,
89 Extension::ActionInfo());
[email protected]a048c092012-09-21 02:33:2690 EXPECT_FALSE(script_badge.GetIsVisible(1));
91 EXPECT_FALSE(script_badge.GetIconAnimation(1));
92 script_badge.SetAppearance(1, ExtensionAction::WANTS_ATTENTION);
93 EXPECT_TRUE(script_badge.GetIsVisible(1));
94 EXPECT_TRUE(script_badge.GetIconAnimation(1));
[email protected]48a7a425b2012-08-03 12:52:5895
96 // Simulate waiting long enough for the animation to end.
[email protected]b4cb7b5a2012-09-11 05:52:0597 message_loop.reset(); // Can't have 2 MessageLoops alive at once.
98 message_loop.reset(new MessageLoop);
[email protected]a048c092012-09-21 02:33:2699 EXPECT_FALSE(script_badge.GetIconAnimation(1)); // Sanity check.
[email protected]48a7a425b2012-08-03 12:52:58100
[email protected]a048c092012-09-21 02:33:26101 script_badge.SetAppearance(1, ExtensionAction::ACTIVE);
102 EXPECT_FALSE(script_badge.GetIconAnimation(1))
[email protected]48a7a425b2012-08-03 12:52:58103 << "The animation should not play again if the icon was already visible.";
[email protected]39eae2b72012-08-01 07:22:32104}
[email protected]56ce6e52009-10-27 00:10:52105
[email protected]0f34d9082012-10-08 19:16:44106TEST(ExtensionActionTest, Icon) {
107 Extension::ActionInfo action_info;
108 action_info.default_icon.Add(16, "icon16.png");
109 ExtensionAction page_action("", Extension::ActionInfo::TYPE_PAGE,
110 action_info);
111 ASSERT_TRUE(page_action.default_icon());
112 EXPECT_EQ("icon16.png",
113 page_action.default_icon()->Get(
114 16, ExtensionIconSet::MATCH_EXACTLY));
115 EXPECT_EQ("",
116 page_action.default_icon()->Get(
117 17, ExtensionIconSet::MATCH_BIGGER));
118}
119
120TEST(ExtensionActionTest, Badge) {
121 ExtensionAction action("", Extension::ActionInfo::TYPE_PAGE,
122 Extension::ActionInfo());
[email protected]92c6f9b92009-10-24 04:35:08123 ASSERT_EQ("", action.GetBadgeText(1));
[email protected]5d246db22009-10-27 06:17:57124 action.SetBadgeText(ExtensionAction::kDefaultTabId, "foo");
[email protected]92c6f9b92009-10-24 04:35:08125 ASSERT_EQ("foo", action.GetBadgeText(1));
126 ASSERT_EQ("foo", action.GetBadgeText(100));
127 action.SetBadgeText(100, "bar");
128 ASSERT_EQ("foo", action.GetBadgeText(1));
129 ASSERT_EQ("bar", action.GetBadgeText(100));
[email protected]5d246db22009-10-27 06:17:57130 action.SetBadgeText(ExtensionAction::kDefaultTabId, "baz");
[email protected]92c6f9b92009-10-24 04:35:08131 ASSERT_EQ("baz", action.GetBadgeText(1));
132 action.ClearAllValuesForTab(100);
133 ASSERT_EQ("baz", action.GetBadgeText(100));
[email protected]39eae2b72012-08-01 07:22:32134}
[email protected]92c6f9b92009-10-24 04:35:08135
[email protected]0f34d9082012-10-08 19:16:44136TEST(ExtensionActionTest, BadgeTextColor) {
137 ExtensionAction action("", Extension::ActionInfo::TYPE_PAGE,
138 Extension::ActionInfo());
[email protected]92c6f9b92009-10-24 04:35:08139 ASSERT_EQ(0x00000000u, action.GetBadgeTextColor(1));
[email protected]5d246db22009-10-27 06:17:57140 action.SetBadgeTextColor(ExtensionAction::kDefaultTabId, 0xFFFF0000u);
[email protected]92c6f9b92009-10-24 04:35:08141 ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(1));
142 ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(100));
143 action.SetBadgeTextColor(100, 0xFF00FF00);
144 ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(1));
145 ASSERT_EQ(0xFF00FF00u, action.GetBadgeTextColor(100));
[email protected]5d246db22009-10-27 06:17:57146 action.SetBadgeTextColor(ExtensionAction::kDefaultTabId, 0xFF0000FFu);
[email protected]92c6f9b92009-10-24 04:35:08147 ASSERT_EQ(0xFF0000FFu, action.GetBadgeTextColor(1));
148 action.ClearAllValuesForTab(100);
149 ASSERT_EQ(0xFF0000FFu, action.GetBadgeTextColor(100));
[email protected]39eae2b72012-08-01 07:22:32150}
[email protected]92c6f9b92009-10-24 04:35:08151
[email protected]0f34d9082012-10-08 19:16:44152TEST(ExtensionActionTest, BadgeBackgroundColor) {
153 ExtensionAction action("", Extension::ActionInfo::TYPE_PAGE,
154 Extension::ActionInfo());
[email protected]92c6f9b92009-10-24 04:35:08155 ASSERT_EQ(0x00000000u, action.GetBadgeBackgroundColor(1));
[email protected]5d246db22009-10-27 06:17:57156 action.SetBadgeBackgroundColor(ExtensionAction::kDefaultTabId,
[email protected]56ce6e52009-10-27 00:10:52157 0xFFFF0000u);
[email protected]92c6f9b92009-10-24 04:35:08158 ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(1));
159 ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(100));
160 action.SetBadgeBackgroundColor(100, 0xFF00FF00);
161 ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(1));
162 ASSERT_EQ(0xFF00FF00u, action.GetBadgeBackgroundColor(100));
[email protected]5d246db22009-10-27 06:17:57163 action.SetBadgeBackgroundColor(ExtensionAction::kDefaultTabId,
[email protected]56ce6e52009-10-27 00:10:52164 0xFF0000FFu);
[email protected]92c6f9b92009-10-24 04:35:08165 ASSERT_EQ(0xFF0000FFu, action.GetBadgeBackgroundColor(1));
166 action.ClearAllValuesForTab(100);
167 ASSERT_EQ(0xFF0000FFu, action.GetBadgeBackgroundColor(100));
[email protected]39eae2b72012-08-01 07:22:32168}
[email protected]a388c4842010-01-27 17:13:15169
[email protected]0f34d9082012-10-08 19:16:44170TEST(ExtensionActionTest, PopupUrl) {
[email protected]a388c4842010-01-27 17:13:15171 GURL url_unset;
172 GURL url_foo("http://www.example.com/foo.html");
173 GURL url_bar("http://www.example.com/bar.html");
174 GURL url_baz("http://www.example.com/baz.html");
175
[email protected]0f34d9082012-10-08 19:16:44176 Extension::ActionInfo action_info;
177 action_info.default_popup_url = url_foo;
178 ExtensionAction action("", Extension::ActionInfo::TYPE_PAGE, action_info);
179
180 ASSERT_EQ(url_foo, action.GetPopupUrl(1));
181 ASSERT_EQ(url_foo, action.GetPopupUrl(100));
182 ASSERT_TRUE(action.HasPopup(1));
183 ASSERT_TRUE(action.HasPopup(100));
184
185 action.SetPopupUrl(ExtensionAction::kDefaultTabId, url_unset);
[email protected]a388c4842010-01-27 17:13:15186 ASSERT_EQ(url_unset, action.GetPopupUrl(1));
187 ASSERT_EQ(url_unset, action.GetPopupUrl(100));
188 ASSERT_FALSE(action.HasPopup(1));
189 ASSERT_FALSE(action.HasPopup(100));
190
[email protected]a388c4842010-01-27 17:13:15191 action.SetPopupUrl(100, url_bar);
[email protected]0f34d9082012-10-08 19:16:44192 ASSERT_EQ(url_unset, action.GetPopupUrl(1));
[email protected]a388c4842010-01-27 17:13:15193 ASSERT_EQ(url_bar, action.GetPopupUrl(100));
194
195 action.SetPopupUrl(ExtensionAction::kDefaultTabId, url_baz);
196 ASSERT_EQ(url_baz, action.GetPopupUrl(1));
197 ASSERT_EQ(url_bar, action.GetPopupUrl(100));
198
199 action.ClearAllValuesForTab(100);
200 ASSERT_EQ(url_baz, action.GetPopupUrl(1));
201 ASSERT_EQ(url_baz, action.GetPopupUrl(100));
[email protected]92c6f9b92009-10-24 04:35:08202}
[email protected]39eae2b72012-08-01 07:22:32203
204} // namespace