Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(424)

Side by Side Diff: chrome/common/extensions/manifest_tests/extension_manifests_scriptbadge_unittest.cc

Issue 11588004: Move ScriptBadge, ActionInfo out of Extension; preparation for BrowserAction (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/common/extensions/api/extension_action/action_info.h"
6 #include "chrome/common/extensions/api/extension_action/script_badge_handler.h"
5 #include "chrome/common/extensions/extension_builder.h" 7 #include "chrome/common/extensions/extension_builder.h"
6 #include "chrome/common/extensions/extension_constants.h" 8 #include "chrome/common/extensions/extension_constants.h"
7 #include "chrome/common/extensions/extension_icon_set.h" 9 #include "chrome/common/extensions/extension_icon_set.h"
8 #include "chrome/common/extensions/extension_manifest_constants.h" 10 #include "chrome/common/extensions/extension_manifest_constants.h"
9 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h" 11 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h"
12 #include "chrome/test/base/testing_profile.h"
10 #include "testing/gmock/include/gmock/gmock.h" 13 #include "testing/gmock/include/gmock/gmock.h"
11 #include "testing/gtest/include/gtest/gtest.h" 14 #include "testing/gtest/include/gtest/gtest.h"
12 15
13 namespace errors = extension_manifest_errors; 16 namespace errors = extension_manifest_errors;
14 using extensions::DictionaryBuilder;
15 using extensions::Extension;
16 using extensions::ExtensionBuilder;
17 17
18 namespace { 18 namespace extensions {
19 19
20 std::vector<Extension::InstallWarning> StripMissingFlagWarning( 20 std::vector<Extension::InstallWarning> StripMissingFlagWarning(
21 const std::vector<Extension::InstallWarning>& install_warnings) { 21 const std::vector<Extension::InstallWarning>& install_warnings) {
22 std::vector<Extension::InstallWarning> result; 22 std::vector<Extension::InstallWarning> result;
23 for (size_t i = 0; i < install_warnings.size(); ++i) { 23 for (size_t i = 0; i < install_warnings.size(); ++i) {
24 if (install_warnings[i].message != errors::kScriptBadgeRequiresFlag) 24 if (install_warnings[i].message != errors::kScriptBadgeRequiresFlag)
25 result.push_back(install_warnings[i]); 25 result.push_back(install_warnings[i]);
26 } 26 }
27 return result; 27 return result;
28 } 28 }
29 29
30 TEST_F(ExtensionManifestTest, ScriptBadgeBasic) { 30 TEST_F(ExtensionManifestTest, ScriptBadgeBasic) {
31 // We need to make a profile so that the ProfileKeyedServices (some of which
32 // are used in manifest-parsing) are initialized.
Yoyo Zhou 2012/12/18 02:01:41 It would be preferable to just register the manife
Devlin 2012/12/18 20:42:07 File has been moved and ScriptBadgeManifestTest::S
Yoyo Zhou 2012/12/19 01:38:50 I think it's okay to make unit tests explicitly re
33 scoped_ptr<TestingProfile> profile(new TestingProfile());
34
31 scoped_refptr<Extension> extension( 35 scoped_refptr<Extension> extension(
32 ExtensionBuilder() 36 ExtensionBuilder()
33 .SetManifest(DictionaryBuilder() 37 .SetManifest(DictionaryBuilder()
34 .Set("manifest_version", 2) 38 .Set("manifest_version", 2)
35 .Set("name", "my extension") 39 .Set("name", "my extension")
36 .Set("version", "1.0.0.0") 40 .Set("version", "1.0.0.0")
37 .Set("description", 41 .Set("description",
38 "Check that a simple script_badge section parses") 42 "Check that a simple script_badge section parses")
39 .Set("icons", DictionaryBuilder() 43 .Set("icons", DictionaryBuilder()
40 .Set("16", "icon16.png") 44 .Set("16", "icon16.png")
41 .Set("32", "icon32.png") 45 .Set("32", "icon32.png")
42 .Set("19", "icon19.png") 46 .Set("19", "icon19.png")
43 .Set("48", "icon48.png")) 47 .Set("48", "icon48.png"))
44 .Set("script_badge", DictionaryBuilder() 48 .Set("script_badge", DictionaryBuilder()
45 .Set("default_popup", "popup.html"))) 49 .Set("default_popup", "popup.html")))
46 .Build()); 50 .Build());
47 ASSERT_TRUE(extension.get()); 51 ASSERT_TRUE(extension.get());
48 ASSERT_TRUE(extension->script_badge_info()); 52 const ActionInfo* script_badge_info =
53 ScriptBadgeInfo::GetScriptBadge(extension);
54 ASSERT_TRUE(script_badge_info);
49 EXPECT_THAT(StripMissingFlagWarning(extension->install_warnings()), 55 EXPECT_THAT(StripMissingFlagWarning(extension->install_warnings()),
50 testing::ElementsAre(/*empty*/)); 56 testing::ElementsAre(/*empty*/));
51 57
52 const ExtensionIconSet& default_icon = 58 const ExtensionIconSet& default_icon =
53 extension->script_badge_info()->default_icon; 59 script_badge_info->default_icon;
54 // Should have a default icon set. 60 // Should have a default icon set.
55 ASSERT_FALSE(default_icon.empty()); 61 ASSERT_FALSE(default_icon.empty());
56 62
57 // Verify that correct icon paths are registered in default_icon. 63 // Verify that correct icon paths are registered in default_icon.
58 EXPECT_EQ(2u, default_icon.map().size()); 64 EXPECT_EQ(2u, default_icon.map().size());
59 EXPECT_EQ("icon16.png", 65 EXPECT_EQ("icon16.png",
60 default_icon.Get(extension_misc::EXTENSION_ICON_BITTY, 66 default_icon.Get(extension_misc::EXTENSION_ICON_BITTY,
61 ExtensionIconSet::MATCH_EXACTLY)); 67 ExtensionIconSet::MATCH_EXACTLY));
62 EXPECT_EQ("icon32.png", 68 EXPECT_EQ("icon32.png",
63 default_icon.Get(2 * extension_misc::EXTENSION_ICON_BITTY, 69 default_icon.Get(2 * extension_misc::EXTENSION_ICON_BITTY,
64 ExtensionIconSet::MATCH_EXACTLY)); 70 ExtensionIconSet::MATCH_EXACTLY));
65 71
66 EXPECT_EQ("my extension", extension->script_badge_info()->default_title); 72 EXPECT_EQ("my extension", script_badge_info->default_title);
67 EXPECT_FALSE(extension->script_badge_info()->default_popup_url.is_empty()); 73 EXPECT_FALSE(script_badge_info->default_popup_url.is_empty());
68 } 74 }
69 75
70 TEST_F(ExtensionManifestTest, ScriptBadgeExplicitTitleAndIconsIgnored) { 76 TEST_F(ExtensionManifestTest, ScriptBadgeExplicitTitleAndIconsIgnored) {
77 // We need to make a profile so that the ProfileKeyedServices (some of which
78 // are used in manifest-parsing) are initialized.
79 scoped_ptr<TestingProfile> profile(new TestingProfile());
80
71 scoped_refptr<Extension> extension( 81 scoped_refptr<Extension> extension(
72 ExtensionBuilder() 82 ExtensionBuilder()
73 .SetManifest(DictionaryBuilder() 83 .SetManifest(DictionaryBuilder()
74 .Set("manifest_version", 2) 84 .Set("manifest_version", 2)
75 .Set("name", "my extension") 85 .Set("name", "my extension")
76 .Set("version", "1.0.0.0") 86 .Set("version", "1.0.0.0")
77 .Set("description", 87 .Set("description",
78 "Check that a simple script_badge section parses") 88 "Check that a simple script_badge section parses")
79 .Set("icons", DictionaryBuilder() 89 .Set("icons", DictionaryBuilder()
80 .Set("16", "icon16.png")) 90 .Set("16", "icon16.png"))
81 .Set("script_badge", DictionaryBuilder() 91 .Set("script_badge", DictionaryBuilder()
82 .Set("default_title", "Other Extension") 92 .Set("default_title", "Other Extension")
83 .Set("default_icon", "malicious.png"))) 93 .Set("default_icon", "malicious.png")))
84 .Build()); 94 .Build());
85 ASSERT_TRUE(extension.get()); 95 ASSERT_TRUE(extension.get());
86 ASSERT_TRUE(extension->script_badge_info()); 96 const ActionInfo* script_badge_info =
97 ScriptBadgeInfo::GetScriptBadge(extension);
98 ASSERT_TRUE(script_badge_info);
87 99
88 EXPECT_THAT(StripMissingFlagWarning(extension->install_warnings()), 100 EXPECT_THAT(StripMissingFlagWarning(extension->install_warnings()),
89 testing::ElementsAre( 101 testing::ElementsAre(
90 Extension::InstallWarning( 102 Extension::InstallWarning(
91 Extension::InstallWarning::FORMAT_TEXT, 103 Extension::InstallWarning::FORMAT_TEXT,
92 errors::kScriptBadgeTitleIgnored), 104 errors::kScriptBadgeTitleIgnored),
93 Extension::InstallWarning( 105 Extension::InstallWarning(
94 Extension::InstallWarning::FORMAT_TEXT, 106 Extension::InstallWarning::FORMAT_TEXT,
95 errors::kScriptBadgeIconIgnored))); 107 errors::kScriptBadgeIconIgnored)));
96 108
97 const ExtensionIconSet& default_icon = 109 const ExtensionIconSet& default_icon =
98 extension->script_badge_info()->default_icon; 110 script_badge_info->default_icon;
99 ASSERT_FALSE(default_icon.empty()); 111 ASSERT_FALSE(default_icon.empty());
100 112
101 EXPECT_EQ(1u, default_icon.map().size()); 113 EXPECT_EQ(1u, default_icon.map().size());
102 EXPECT_EQ("icon16.png", 114 EXPECT_EQ("icon16.png",
103 default_icon.Get(extension_misc::EXTENSION_ICON_BITTY, 115 default_icon.Get(extension_misc::EXTENSION_ICON_BITTY,
104 ExtensionIconSet::MATCH_EXACTLY)); 116 ExtensionIconSet::MATCH_EXACTLY));
105 117
106 EXPECT_EQ("my extension", extension->script_badge_info()->default_title); 118 EXPECT_EQ("my extension", script_badge_info->default_title);
107 } 119 }
108 120
109 TEST_F(ExtensionManifestTest, ScriptBadgeIconFallsBackToPuzzlePiece) { 121 TEST_F(ExtensionManifestTest, ScriptBadgeIconFallsBackToPuzzlePiece) {
122 // We need to make a profile so that the ProfileKeyedServices (some of which
123 // are used in manifest-parsing) are initialized.
124 scoped_ptr<TestingProfile> profile(new TestingProfile());
125
110 scoped_refptr<Extension> extension( 126 scoped_refptr<Extension> extension(
111 ExtensionBuilder() 127 ExtensionBuilder()
112 .SetManifest(DictionaryBuilder() 128 .SetManifest(DictionaryBuilder()
113 .Set("manifest_version", 2) 129 .Set("manifest_version", 2)
114 .Set("name", "my extension") 130 .Set("name", "my extension")
115 .Set("version", "1.0.0.0") 131 .Set("version", "1.0.0.0")
116 .Set("description", 132 .Set("description",
117 "Check that a simple script_badge section parses") 133 "Check that a simple script_badge section parses")
118 .Set("icons", DictionaryBuilder() 134 .Set("icons", DictionaryBuilder()
119 .Set("128", "icon128.png"))) 135 .Set("128", "icon128.png")))
120 .Build()); 136 .Build());
121 ASSERT_TRUE(extension.get()); 137 ASSERT_TRUE(extension.get());
122 ASSERT_TRUE(extension->script_badge_info()); 138 const ActionInfo* script_badge_info =
139 ScriptBadgeInfo::GetScriptBadge(extension);
140 ASSERT_TRUE(script_badge_info);
123 EXPECT_THAT(extension->install_warnings(), 141 EXPECT_THAT(extension->install_warnings(),
124 testing::ElementsAre(/*empty*/)); 142 testing::ElementsAre(/*empty*/));
125 143
126 const ExtensionIconSet& default_icon = 144 const ExtensionIconSet& default_icon =
127 extension->script_badge_info()->default_icon; 145 script_badge_info->default_icon;
128 ASSERT_FALSE(default_icon.empty()) << "Should fall back to the 128px icon."; 146 ASSERT_FALSE(default_icon.empty()) << "Should fall back to the 128px icon.";
129 EXPECT_EQ(2u, default_icon.map().size()); 147 EXPECT_EQ(2u, default_icon.map().size());
130 EXPECT_EQ("icon128.png", 148 EXPECT_EQ("icon128.png",
131 default_icon.Get(extension_misc::EXTENSION_ICON_BITTY, 149 default_icon.Get(extension_misc::EXTENSION_ICON_BITTY,
132 ExtensionIconSet::MATCH_EXACTLY)); 150 ExtensionIconSet::MATCH_EXACTLY));
133 EXPECT_EQ("icon128.png", 151 EXPECT_EQ("icon128.png",
134 default_icon.Get(2 * extension_misc::EXTENSION_ICON_BITTY, 152 default_icon.Get(2 * extension_misc::EXTENSION_ICON_BITTY,
135 ExtensionIconSet::MATCH_EXACTLY)); 153 ExtensionIconSet::MATCH_EXACTLY));
136 } 154 }
137 155
138 } // namespace 156 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698