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