15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "base/message_loop/message_loop.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/extensions/extension_action.h"
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/common/extensions/api/extension_action/action_info.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
97dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)using extensions::ActionInfo;
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ExtensionActionTest, Title) {
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ActionInfo action_info;
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_info.default_title = "Initial Title";
18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, action_info);
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("Initial Title", action.GetTitle(1));
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetTitle(ExtensionAction::kDefaultTabId, "foo");
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("foo", action.GetTitle(1));
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("foo", action.GetTitle(100));
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetTitle(100, "bar");
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("foo", action.GetTitle(1));
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("bar", action.GetTitle(100));
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetTitle(ExtensionAction::kDefaultTabId, "baz");
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("baz", action.GetTitle(1));
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.ClearAllValuesForTab(100);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("baz", action.GetTitle(100));
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ExtensionActionTest, Visibility) {
34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, ActionInfo());
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(action.GetIsVisible(1));
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  action.SetIsVisible(ExtensionAction::kDefaultTabId, true);
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(action.GetIsVisible(1));
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(action.GetIsVisible(100));
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  action.SetIsVisible(ExtensionAction::kDefaultTabId, false);
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(action.GetIsVisible(1));
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(action.GetIsVisible(100));
445d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  action.SetIsVisible(100, true);
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(action.GetIsVisible(1));
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(action.GetIsVisible(100));
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.ClearAllValuesForTab(100);
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(action.GetIsVisible(1));
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(action.GetIsVisible(100));
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ExtensionAction browser_action(
53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      std::string(), ActionInfo::TYPE_BROWSER, ActionInfo());
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(browser_action.GetIsVisible(1));
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ExtensionActionTest, Icon) {
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ActionInfo action_info;
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_info.default_icon.Add(16, "icon16.png");
60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ExtensionAction page_action(
61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)      std::string(), ActionInfo::TYPE_PAGE, action_info);
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(page_action.default_icon());
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ("icon16.png",
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            page_action.default_icon()->Get(
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                16, ExtensionIconSet::MATCH_EXACTLY));
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_EQ("",
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)            page_action.default_icon()->Get(
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                17, ExtensionIconSet::MATCH_BIGGER));
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ExtensionActionTest, Badge) {
72c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, ActionInfo());
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("", action.GetBadgeText(1));
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetBadgeText(ExtensionAction::kDefaultTabId, "foo");
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("foo", action.GetBadgeText(1));
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("foo", action.GetBadgeText(100));
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetBadgeText(100, "bar");
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("foo", action.GetBadgeText(1));
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("bar", action.GetBadgeText(100));
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetBadgeText(ExtensionAction::kDefaultTabId, "baz");
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("baz", action.GetBadgeText(1));
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.ClearAllValuesForTab(100);
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ("baz", action.GetBadgeText(100));
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ExtensionActionTest, BadgeTextColor) {
87c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, ActionInfo());
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0x00000000u, action.GetBadgeTextColor(1));
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetBadgeTextColor(ExtensionAction::kDefaultTabId, 0xFFFF0000u);
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(1));
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(100));
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetBadgeTextColor(100, 0xFF00FF00);
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(1));
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0xFF00FF00u, action.GetBadgeTextColor(100));
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetBadgeTextColor(ExtensionAction::kDefaultTabId, 0xFF0000FFu);
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0xFF0000FFu, action.GetBadgeTextColor(1));
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.ClearAllValuesForTab(100);
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0xFF0000FFu, action.GetBadgeTextColor(100));
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ExtensionActionTest, BadgeBackgroundColor) {
102c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, ActionInfo());
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0x00000000u, action.GetBadgeBackgroundColor(1));
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetBadgeBackgroundColor(ExtensionAction::kDefaultTabId,
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 0xFFFF0000u);
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(1));
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(100));
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetBadgeBackgroundColor(100, 0xFF00FF00);
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(1));
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0xFF00FF00u, action.GetBadgeBackgroundColor(100));
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetBadgeBackgroundColor(ExtensionAction::kDefaultTabId,
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                 0xFF0000FFu);
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0xFF0000FFu, action.GetBadgeBackgroundColor(1));
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.ClearAllValuesForTab(100);
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(0xFF0000FFu, action.GetBadgeBackgroundColor(100));
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(ExtensionActionTest, PopupUrl) {
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL url_unset;
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL url_foo("http://www.example.com/foo.html");
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL url_bar("http://www.example.com/bar.html");
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  GURL url_baz("http://www.example.com/baz.html");
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ActionInfo action_info;
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action_info.default_popup_url = url_foo;
126c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, action_info);
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(url_foo, action.GetPopupUrl(1));
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(url_foo, action.GetPopupUrl(100));
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(action.HasPopup(1));
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(action.HasPopup(100));
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetPopupUrl(ExtensionAction::kDefaultTabId, url_unset);
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(url_unset, action.GetPopupUrl(1));
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(url_unset, action.GetPopupUrl(100));
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(action.HasPopup(1));
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_FALSE(action.HasPopup(100));
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetPopupUrl(100, url_bar);
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(url_unset, action.GetPopupUrl(1));
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(url_bar, action.GetPopupUrl(100));
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.SetPopupUrl(ExtensionAction::kDefaultTabId, url_baz);
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(url_baz, action.GetPopupUrl(1));
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(url_bar, action.GetPopupUrl(100));
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  action.ClearAllValuesForTab(100);
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(url_baz, action.GetPopupUrl(1));
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_EQ(url_baz, action.GetPopupUrl(100));
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace
153