blob: 47a32d70a48376dc1acb117898588102da3c0d63 [file] [log] [blame]
[email protected]92c6f9b92009-10-24 04:35:081#include "base/file_path.h"
2#include "base/file_util.h"
3#include "base/path_service.h"
4#include "chrome/common/chrome_paths.h"
5#include "chrome/common/extensions/extension_action2.h"
6#include "testing/gtest/include/gtest/gtest.h"
7#include "third_party/skia/include/core/SkBitmap.h"
8#include "webkit/glue/image_decoder.h"
9
10static SkBitmap LoadIcon(const std::string& filename) {
11 FilePath path;
12 PathService::Get(chrome::DIR_TEST_DATA, &path);
13 path = path.AppendASCII("extensions").AppendASCII(filename);
14
15 std::string file_contents;
16 file_util::ReadFileToString(path, &file_contents);
17 const unsigned char* data =
18 reinterpret_cast<const unsigned char*>(file_contents.data());
19
20 SkBitmap bitmap;
21 webkit_glue::ImageDecoder decoder;
22 bitmap = decoder.Decode(data, file_contents.length());
23
24 return bitmap;
25}
26
27static bool BitmapsAreEqual(const SkBitmap& bitmap1, const SkBitmap& bitmap2) {
28 void* addr1 = NULL;
29 void* addr2 = NULL;
30
31 bitmap1.lockPixels();
32 addr1 = bitmap1.getAddr32(0, 0);
33 bitmap1.unlockPixels();
34
35 bitmap2.lockPixels();
36 addr2 = bitmap2.getAddr32(0, 0);
37 bitmap2.unlockPixels();
38
39 return 0 == memcmp(addr1, addr2, bitmap1.getSize());
40}
41
42TEST(ExtensionAction2Test, TabSpecificState) {
43 ExtensionAction2 action;
44
45 // title
46 ASSERT_EQ("", action.GetTitle(1));
47 action.SetTitle(ExtensionAction2::kDefaultTabId, "foo");
48 ASSERT_EQ("foo", action.GetTitle(1));
49 ASSERT_EQ("foo", action.GetTitle(100));
50 action.SetTitle(100, "bar");
51 ASSERT_EQ("foo", action.GetTitle(1));
52 ASSERT_EQ("bar", action.GetTitle(100));
53 action.SetTitle(ExtensionAction2::kDefaultTabId, "baz");
54 ASSERT_EQ("baz", action.GetTitle(1));
55 action.ClearAllValuesForTab(100);
56 ASSERT_EQ("baz", action.GetTitle(100));
57
58 // icon
59 SkBitmap icon1 = LoadIcon("icon1.png");
60 SkBitmap icon2 = LoadIcon("icon2.png");
61 ASSERT_TRUE(action.GetIcon(1).isNull());
62 action.SetIcon(ExtensionAction2::kDefaultTabId, icon1);
63 ASSERT_TRUE(BitmapsAreEqual(icon1, action.GetIcon(100)));
64 action.SetIcon(100, icon2);
65 ASSERT_TRUE(BitmapsAreEqual(icon1, action.GetIcon(1)));
66 ASSERT_TRUE(BitmapsAreEqual(icon2, action.GetIcon(100)));
67
[email protected]56ce6e52009-10-27 00:10:5268 // icon index
69 ASSERT_EQ(-1, action.GetIconIndex(1));
70 action.icon_paths()->push_back("foo.png");
71 action.icon_paths()->push_back("bar.png");
72 action.SetIconIndex(ExtensionAction2::kDefaultTabId, 1);
73 ASSERT_EQ(1, action.GetIconIndex(1));
74 ASSERT_EQ(1, action.GetIconIndex(100));
75 action.SetIconIndex(100, 0);
76 ASSERT_EQ(0, action.GetIconIndex(100));
77 ASSERT_EQ(1, action.GetIconIndex(1));
78 action.ClearAllValuesForTab(100);
79 ASSERT_EQ(1, action.GetIconIndex(100));
80 ASSERT_EQ(1, action.GetIconIndex(1));
81
82 // visibility
83 ASSERT_EQ(false, action.GetIsVisible(1));
84 action.SetIsVisible(ExtensionAction2::kDefaultTabId, true);
85 ASSERT_EQ(true, action.GetIsVisible(1));
86 ASSERT_EQ(true, action.GetIsVisible(100));
87 action.SetIsVisible(ExtensionAction2::kDefaultTabId, false);
88 ASSERT_EQ(false, action.GetIsVisible(1));
89 ASSERT_EQ(false, action.GetIsVisible(100));
90 action.SetIsVisible(100, true);
91 ASSERT_EQ(false, action.GetIsVisible(1));
92 ASSERT_EQ(true, action.GetIsVisible(100));
93 action.ClearAllValuesForTab(100);
94 ASSERT_EQ(false, action.GetIsVisible(1));
95 ASSERT_EQ(false, action.GetIsVisible(100));
96
[email protected]92c6f9b92009-10-24 04:35:0897 // badge text
98 ASSERT_EQ("", action.GetBadgeText(1));
99 action.SetBadgeText(ExtensionAction2::kDefaultTabId, "foo");
100 ASSERT_EQ("foo", action.GetBadgeText(1));
101 ASSERT_EQ("foo", action.GetBadgeText(100));
102 action.SetBadgeText(100, "bar");
103 ASSERT_EQ("foo", action.GetBadgeText(1));
104 ASSERT_EQ("bar", action.GetBadgeText(100));
105 action.SetBadgeText(ExtensionAction2::kDefaultTabId, "baz");
106 ASSERT_EQ("baz", action.GetBadgeText(1));
107 action.ClearAllValuesForTab(100);
108 ASSERT_EQ("baz", action.GetBadgeText(100));
109
110 // badge text color
111 ASSERT_EQ(0x00000000u, action.GetBadgeTextColor(1));
[email protected]56ce6e52009-10-27 00:10:52112 action.SetBadgeTextColor(ExtensionAction2::kDefaultTabId, 0xFFFF0000u);
[email protected]92c6f9b92009-10-24 04:35:08113 ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(1));
114 ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(100));
115 action.SetBadgeTextColor(100, 0xFF00FF00);
116 ASSERT_EQ(0xFFFF0000u, action.GetBadgeTextColor(1));
117 ASSERT_EQ(0xFF00FF00u, action.GetBadgeTextColor(100));
[email protected]56ce6e52009-10-27 00:10:52118 action.SetBadgeTextColor(ExtensionAction2::kDefaultTabId, 0xFF0000FFu);
[email protected]92c6f9b92009-10-24 04:35:08119 ASSERT_EQ(0xFF0000FFu, action.GetBadgeTextColor(1));
120 action.ClearAllValuesForTab(100);
121 ASSERT_EQ(0xFF0000FFu, action.GetBadgeTextColor(100));
122
123 // badge background color
124 ASSERT_EQ(0x00000000u, action.GetBadgeBackgroundColor(1));
[email protected]56ce6e52009-10-27 00:10:52125 action.SetBadgeBackgroundColor(ExtensionAction2::kDefaultTabId,
126 0xFFFF0000u);
[email protected]92c6f9b92009-10-24 04:35:08127 ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(1));
128 ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(100));
129 action.SetBadgeBackgroundColor(100, 0xFF00FF00);
130 ASSERT_EQ(0xFFFF0000u, action.GetBadgeBackgroundColor(1));
131 ASSERT_EQ(0xFF00FF00u, action.GetBadgeBackgroundColor(100));
[email protected]56ce6e52009-10-27 00:10:52132 action.SetBadgeBackgroundColor(ExtensionAction2::kDefaultTabId,
133 0xFF0000FFu);
[email protected]92c6f9b92009-10-24 04:35:08134 ASSERT_EQ(0xFF0000FFu, action.GetBadgeBackgroundColor(1));
135 action.ClearAllValuesForTab(100);
136 ASSERT_EQ(0xFF0000FFu, action.GetBadgeBackgroundColor(100));
137}