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

Side by Side Diff: chrome/common/extensions/api/extension_action/page_action_manifest_unittest.cc

Issue 12253022: Manifest handler for all keys background-related. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 9 months 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 | Annotate | Revision Log
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" 5 #include "chrome/common/extensions/api/extension_action/action_info.h"
6 #include "chrome/common/extensions/api/extension_action/page_action_handler.h" 6 #include "chrome/common/extensions/api/extension_action/page_action_handler.h"
7 #include "chrome/common/extensions/extension.h" 7 #include "chrome/common/extensions/extension.h"
8 #include "chrome/common/extensions/extension_manifest_constants.h" 8 #include "chrome/common/extensions/extension_manifest_constants.h"
9 #include "chrome/common/extensions/manifest_handler.h"
10 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h" 9 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h"
11 #include "extensions/common/error_utils.h" 10 #include "extensions/common/error_utils.h"
12 #include "testing/gtest/include/gtest/gtest.h" 11 #include "testing/gtest/include/gtest/gtest.h"
13 12
14 namespace errors = extension_manifest_errors; 13 namespace errors = extension_manifest_errors;
15 namespace keys = extension_manifest_keys; 14 namespace keys = extension_manifest_keys;
16 15
17 namespace extensions { 16 namespace extensions {
18 17
19 class PageActionManifestTest : public ExtensionManifestTest { 18 class PageActionManifestTest : public ExtensionManifestTest {
20 protected: 19 protected:
21 virtual void SetUp() OVERRIDE { 20 virtual void SetUp() OVERRIDE {
22 ExtensionManifestTest::SetUp(); 21 ExtensionManifestTest::SetUp();
23 linked_ptr<PageActionHandler> page_action_handler(new PageActionHandler); 22 (new PageActionHandler)->Register();
24 ManifestHandler::Register(keys::kPageAction, page_action_handler);
25 ManifestHandler::Register(keys::kPageActions, page_action_handler);
26 } 23 }
27 24
28 virtual const char* test_data_dir() OVERRIDE { 25 virtual const char* test_data_dir() OVERRIDE {
29 return "page_action"; 26 return "page_action";
30 } 27 }
31 28
32 scoped_ptr<ActionInfo> LoadAction(const std::string& manifest_filename); 29 scoped_ptr<ActionInfo> LoadAction(const std::string& manifest_filename);
33 }; 30 };
34 31
35 scoped_ptr<ActionInfo> PageActionManifestTest::LoadAction( 32 scoped_ptr<ActionInfo> PageActionManifestTest::LoadAction(
(...skipping 24 matching lines...) Expand all
60 57
61 LoadAndExpectError("page_action_manifest_version_2b.json", 58 LoadAndExpectError("page_action_manifest_version_2b.json",
62 errors::kInvalidPageActionPopup); 59 errors::kInvalidPageActionPopup);
63 } 60 }
64 61
65 TEST_F(PageActionManifestTest, LoadPageActionHelper) { 62 TEST_F(PageActionManifestTest, LoadPageActionHelper) {
66 scoped_ptr<ActionInfo> action; 63 scoped_ptr<ActionInfo> action;
67 64
68 // First try with an empty dictionary. 65 // First try with an empty dictionary.
69 action = LoadAction("page_action_empty.json"); 66 action = LoadAction("page_action_empty.json");
70 ASSERT_TRUE(action != NULL); 67 ASSERT_TRUE(action);
71 68
72 // Now setup some values to use in the action. 69 // Now setup some values to use in the action.
73 const std::string id("MyExtensionActionId"); 70 const std::string id("MyExtensionActionId");
74 const std::string name("MyExtensionActionName"); 71 const std::string name("MyExtensionActionName");
75 std::string img1("image1.png"); 72 std::string img1("image1.png");
76 73
77 action = LoadAction("page_action.json"); 74 action = LoadAction("page_action.json");
78 ASSERT_TRUE(NULL != action.get()); 75 ASSERT_TRUE(action);
79 ASSERT_EQ(id, action->id); 76 ASSERT_EQ(id, action->id);
80 77
81 // No title, so fall back to name. 78 // No title, so fall back to name.
82 ASSERT_EQ(name, action->default_title); 79 ASSERT_EQ(name, action->default_title);
83 ASSERT_EQ(img1, 80 ASSERT_EQ(img1,
84 action->default_icon.Get(extension_misc::EXTENSION_ICON_ACTION, 81 action->default_icon.Get(extension_misc::EXTENSION_ICON_ACTION,
85 ExtensionIconSet::MATCH_EXACTLY)); 82 ExtensionIconSet::MATCH_EXACTLY));
86 83
87 // Same test with explicitly set type. 84 // Same test with explicitly set type.
88 action = LoadAction("page_action_type.json"); 85 action = LoadAction("page_action_type.json");
89 ASSERT_TRUE(NULL != action.get()); 86 ASSERT_TRUE(action);
90 87
91 // Try an action without id key. 88 // Try an action without id key.
92 action = LoadAction("page_action_no_id.json"); 89 action = LoadAction("page_action_no_id.json");
93 ASSERT_TRUE(NULL != action.get()); 90 ASSERT_TRUE(action);
94 91
95 // Then try without the name key. It's optional, so no error. 92 // Then try without the name key. It's optional, so no error.
96 action = LoadAction("page_action_no_name.json"); 93 action = LoadAction("page_action_no_name.json");
97 ASSERT_TRUE(NULL != action.get()); 94 ASSERT_TRUE(action);
98 ASSERT_TRUE(action->default_title.empty()); 95 ASSERT_TRUE(action->default_title.empty());
99 96
100 // Then try without the icon paths key. 97 // Then try without the icon paths key.
101 action = LoadAction("page_action_no_icon.json"); 98 action = LoadAction("page_action_no_icon.json");
102 ASSERT_TRUE(NULL != action.get()); 99 ASSERT_TRUE(action);
103 100
104 // Now test that we can parse the new format for page actions. 101 // Now test that we can parse the new format for page actions.
105 const std::string kTitle("MyExtensionActionTitle"); 102 const std::string kTitle("MyExtensionActionTitle");
106 const std::string kIcon("image1.png"); 103 const std::string kIcon("image1.png");
107 const std::string kPopupHtmlFile("a_popup.html"); 104 const std::string kPopupHtmlFile("a_popup.html");
108 105
109 action = LoadAction("page_action_new_format.json"); 106 action = LoadAction("page_action_new_format.json");
110 ASSERT_TRUE(action.get()); 107 ASSERT_TRUE(action);
111 ASSERT_EQ(kTitle, action->default_title); 108 ASSERT_EQ(kTitle, action->default_title);
112 ASSERT_FALSE(action->default_icon.empty()); 109 ASSERT_FALSE(action->default_icon.empty());
113 110
114 // Invalid title should give an error even with a valid name. 111 // Invalid title should give an error even with a valid name.
115 LoadAndExpectError("page_action_invalid_title.json", 112 LoadAndExpectError("page_action_invalid_title.json",
116 errors::kInvalidPageActionDefaultTitle); 113 errors::kInvalidPageActionDefaultTitle);
117 114
118 // Invalid name should give an error only with no title. 115 // Invalid name should give an error only with no title.
119 action = LoadAction("page_action_invalid_name.json"); 116 action = LoadAction("page_action_invalid_name.json");
120 ASSERT_TRUE(NULL != action.get()); 117 ASSERT_TRUE(action);
121 ASSERT_EQ(kTitle, action->default_title); 118 ASSERT_EQ(kTitle, action->default_title);
122 119
123 LoadAndExpectError("page_action_invalid_name_no_title.json", 120 LoadAndExpectError("page_action_invalid_name_no_title.json",
124 errors::kInvalidPageActionName); 121 errors::kInvalidPageActionName);
125 122
126 // Test that keys "popup" and "default_popup" both work, but can not 123 // Test that keys "popup" and "default_popup" both work, but can not
127 // be used at the same time. 124 // be used at the same time.
128 // These tests require an extension_url, so we also load the manifest. 125 // These tests require an extension_url, so we also load the manifest.
129 126
130 // Only use "popup", expect success. 127 // Only use "popup", expect success.
131 scoped_refptr<Extension> extension = 128 scoped_refptr<Extension> extension =
132 LoadAndExpectSuccess("page_action_popup.json"); 129 LoadAndExpectSuccess("page_action_popup.json");
133 // TODO(yoz): this is dumb 130 const ActionInfo* extension_action = ActionInfo::GetPageActionInfo(extension);
134 action = LoadAction("page_action_popup.json"); 131 ASSERT_TRUE(extension_action);
135 ASSERT_TRUE(NULL != action.get());
136 ASSERT_STREQ( 132 ASSERT_STREQ(
137 extension->url().Resolve(kPopupHtmlFile).spec().c_str(), 133 extension->url().Resolve(kPopupHtmlFile).spec().c_str(),
138 action->default_popup_url.spec().c_str()); 134 extension_action->default_popup_url.spec().c_str());
139 135
140 // Use both "popup" and "default_popup", expect failure. 136 // Use both "popup" and "default_popup", expect failure.
141 LoadAndExpectError("page_action_popup_and_default_popup.json", 137 LoadAndExpectError("page_action_popup_and_default_popup.json",
142 ErrorUtils::FormatErrorMessage( 138 ErrorUtils::FormatErrorMessage(
143 errors::kInvalidPageActionOldAndNewKeys, 139 errors::kInvalidPageActionOldAndNewKeys,
144 keys::kPageActionDefaultPopup, 140 keys::kPageActionDefaultPopup,
145 keys::kPageActionPopup)); 141 keys::kPageActionPopup));
146 142
147 // Use only "default_popup", expect success. 143 // Use only "default_popup", expect success.
148 extension = LoadAndExpectSuccess("page_action_popup.json"); 144 extension = LoadAndExpectSuccess("page_action_popup.json");
149 action = LoadAction("page_action_default_popup.json"); 145 extension_action = ActionInfo::GetPageActionInfo(extension);
150 ASSERT_TRUE(NULL != action.get()); 146 ASSERT_TRUE(extension_action);
151 ASSERT_STREQ( 147 ASSERT_STREQ(
152 extension->url().Resolve(kPopupHtmlFile).spec().c_str(), 148 extension->url().Resolve(kPopupHtmlFile).spec().c_str(),
153 action->default_popup_url.spec().c_str()); 149 extension_action->default_popup_url.spec().c_str());
154 150
155 // Setting default_popup to "" is the same as having no popup. 151 // Setting default_popup to "" is the same as having no popup.
156 action = LoadAction("page_action_empty_default_popup.json"); 152 action = LoadAction("page_action_empty_default_popup.json");
157 ASSERT_TRUE(NULL != action.get()); 153 ASSERT_TRUE(action);
158 EXPECT_TRUE(action->default_popup_url.is_empty()); 154 EXPECT_TRUE(action->default_popup_url.is_empty());
159 ASSERT_STREQ( 155 ASSERT_STREQ(
160 "", 156 "",
161 action->default_popup_url.spec().c_str()); 157 action->default_popup_url.spec().c_str());
162 158
163 // Setting popup to "" is the same as having no popup. 159 // Setting popup to "" is the same as having no popup.
164 action = LoadAction("page_action_empty_popup.json"); 160 action = LoadAction("page_action_empty_popup.json");
165 161
166 ASSERT_TRUE(NULL != action.get()); 162 ASSERT_TRUE(action);
167 EXPECT_TRUE(action->default_popup_url.is_empty()); 163 EXPECT_TRUE(action->default_popup_url.is_empty());
168 ASSERT_STREQ( 164 ASSERT_STREQ(
169 "", 165 "",
170 action->default_popup_url.spec().c_str()); 166 action->default_popup_url.spec().c_str());
171 } 167 }
172 168
173 } // namespace extensions 169 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698