Home | History | Annotate | Download | only in extensions
      1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "base/message_loop/message_loop.h"
      6 #include "chrome/browser/extensions/extension_action.h"
      7 #include "chrome/common/extensions/api/extension_action/action_info.h"
      8 #include "testing/gtest/include/gtest/gtest.h"
      9 #include "url/gurl.h"
     10 
     11 namespace {
     12 
     13 using extensions::ActionInfo;
     14 
     15 TEST(ExtensionActionTest, Title) {
     16   ActionInfo action_info;
     17   action_info.default_title = "Initial Title";
     18   ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, action_info);
     19 
     20   ASSERT_EQ("Initial Title", action.GetTitle(1));
     21   action.SetTitle(ExtensionAction::kDefaultTabId, "foo");
     22   ASSERT_EQ("foo", action.GetTitle(1));
     23   ASSERT_EQ("foo", action.GetTitle(100));
     24   action.SetTitle(100, "bar");
     25   ASSERT_EQ("foo", action.GetTitle(1));
     26   ASSERT_EQ("bar", action.GetTitle(100));
     27   action.SetTitle(ExtensionAction::kDefaultTabId, "baz");
     28   ASSERT_EQ("baz", action.GetTitle(1));
     29   action.ClearAllValuesForTab(100);
     30   ASSERT_EQ("baz", action.GetTitle(100));
     31 }
     32 
     33 TEST(ExtensionActionTest, Visibility) {
     34   ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, ActionInfo());
     35 
     36   ASSERT_FALSE(action.GetIsVisible(1));
     37   action.SetIsVisible(ExtensionAction::kDefaultTabId, true);
     38   ASSERT_TRUE(action.GetIsVisible(1));
     39   ASSERT_TRUE(action.GetIsVisible(100));
     40 
     41   action.SetIsVisible(ExtensionAction::kDefaultTabId, false);
     42   ASSERT_FALSE(action.GetIsVisible(1));
     43   ASSERT_FALSE(action.GetIsVisible(100));
     44   action.SetIsVisible(100, true);
     45   ASSERT_FALSE(action.GetIsVisible(1));
     46   ASSERT_TRUE(action.GetIsVisible(100));
     47 
     48   action.ClearAllValuesForTab(100);
     49   ASSERT_FALSE(action.GetIsVisible(1));
     50   ASSERT_FALSE(action.GetIsVisible(100));
     51 
     52   ExtensionAction browser_action(
     53       std::string(), ActionInfo::TYPE_BROWSER, ActionInfo());
     54   ASSERT_TRUE(browser_action.GetIsVisible(1));
     55 }
     56 
     57 TEST(ExtensionActionTest, Icon) {
     58   ActionInfo action_info;
     59   action_info.default_icon.Add(16, "icon16.png");
     60   ExtensionAction page_action(
     61       std::string(), ActionInfo::TYPE_PAGE, action_info);
     62   ASSERT_TRUE(page_action.default_icon());
     63   EXPECT_EQ("icon16.png",
     64             page_action.default_icon()->Get(
     65                 16, ExtensionIconSet::MATCH_EXACTLY));
     66   EXPECT_EQ("",
     67             page_action.default_icon()->Get(
     68                 17, ExtensionIconSet::MATCH_BIGGER));
     69 }
     70 
     71 TEST(ExtensionActionTest, Badge) {
     72   ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, ActionInfo());
     73   ASSERT_EQ("", action.GetBadgeText(1));
     74   action.SetBadgeText(ExtensionAction::kDefaultTabId, "foo");
     75   ASSERT_EQ("foo", action.GetBadgeText(1));
     76   ASSERT_EQ("foo", action.GetBadgeText(100));
     77   action.SetBadgeText(100, "bar");
     78   ASSERT_EQ("foo", action.GetBadgeText(1));
     79   ASSERT_EQ("bar", action.GetBadgeText(100));
     80   action.SetBadgeText(ExtensionAction::kDefaultTabId, "baz");
     81   ASSERT_EQ("baz", action.GetBadgeText(1));
     82   action.ClearAllValuesForTab(100);
     83   ASSERT_EQ("baz", action.GetBadgeText(100));
     84 }
     85 
     86 TEST(ExtensionActionTest, BadgeTextColor) {
     87   ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, ActionInfo());
     88   ASSERT_EQ(0x00000000u, action.GetBadgeTextColor(1));
     89   action.SetBadgeTextColor(ExtensionAction::kDefaultTabId, 0xFFFF0000u);
     90   ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(1));
     91   ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(100));
     92   action.SetBadgeTextColor(100, 0xFF00FF00);
     93   ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(1));
     94   ASSERT_EQ(0xFF00FF00u, action.GetBadgeTextColor(100));
     95   action.SetBadgeTextColor(ExtensionAction::kDefaultTabId, 0xFF0000FFu);
     96   ASSERT_EQ(0xFF0000FFu, action.GetBadgeTextColor(1));
     97   action.ClearAllValuesForTab(100);
     98   ASSERT_EQ(0xFF0000FFu, action.GetBadgeTextColor(100));
     99 }
    100 
    101 TEST(ExtensionActionTest, BadgeBackgroundColor) {
    102   ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, ActionInfo());
    103   ASSERT_EQ(0x00000000u, action.GetBadgeBackgroundColor(1));
    104   action.SetBadgeBackgroundColor(ExtensionAction::kDefaultTabId,
    105                                  0xFFFF0000u);
    106   ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(1));
    107   ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(100));
    108   action.SetBadgeBackgroundColor(100, 0xFF00FF00);
    109   ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(1));
    110   ASSERT_EQ(0xFF00FF00u, action.GetBadgeBackgroundColor(100));
    111   action.SetBadgeBackgroundColor(ExtensionAction::kDefaultTabId,
    112                                  0xFF0000FFu);
    113   ASSERT_EQ(0xFF0000FFu, action.GetBadgeBackgroundColor(1));
    114   action.ClearAllValuesForTab(100);
    115   ASSERT_EQ(0xFF0000FFu, action.GetBadgeBackgroundColor(100));
    116 }
    117 
    118 TEST(ExtensionActionTest, PopupUrl) {
    119   GURL url_unset;
    120   GURL url_foo("http://www.example.com/foo.html");
    121   GURL url_bar("http://www.example.com/bar.html");
    122   GURL url_baz("http://www.example.com/baz.html");
    123 
    124   ActionInfo action_info;
    125   action_info.default_popup_url = url_foo;
    126   ExtensionAction action(std::string(), ActionInfo::TYPE_PAGE, action_info);
    127 
    128   ASSERT_EQ(url_foo, action.GetPopupUrl(1));
    129   ASSERT_EQ(url_foo, action.GetPopupUrl(100));
    130   ASSERT_TRUE(action.HasPopup(1));
    131   ASSERT_TRUE(action.HasPopup(100));
    132 
    133   action.SetPopupUrl(ExtensionAction::kDefaultTabId, url_unset);
    134   ASSERT_EQ(url_unset, action.GetPopupUrl(1));
    135   ASSERT_EQ(url_unset, action.GetPopupUrl(100));
    136   ASSERT_FALSE(action.HasPopup(1));
    137   ASSERT_FALSE(action.HasPopup(100));
    138 
    139   action.SetPopupUrl(100, url_bar);
    140   ASSERT_EQ(url_unset, action.GetPopupUrl(1));
    141   ASSERT_EQ(url_bar, action.GetPopupUrl(100));
    142 
    143   action.SetPopupUrl(ExtensionAction::kDefaultTabId, url_baz);
    144   ASSERT_EQ(url_baz, action.GetPopupUrl(1));
    145   ASSERT_EQ(url_bar, action.GetPopupUrl(100));
    146 
    147   action.ClearAllValuesForTab(100);
    148   ASSERT_EQ(url_baz, action.GetPopupUrl(1));
    149   ASSERT_EQ(url_baz, action.GetPopupUrl(100));
    150 }
    151 
    152 }  // namespace
    153