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

Side by Side Diff: chrome/common/extensions/extension_unittest.cc

Issue 10559054: Animate the script badges. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: rebase, fix thing i accidentally deleted in the last rebase Created 8 years, 5 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
« no previous file with comments | « chrome/common/extensions/extension_action.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/extension.h" 5 #include "chrome/common/extensions/extension.h"
6 6
7 #include "base/format_macros.h" 7 #include "base/format_macros.h"
8 #include "base/file_path.h" 8 #include "base/file_path.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/json/json_file_value_serializer.h" 10 #include "base/json/json_file_value_serializer.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 const std::string& test_file) { 89 const std::string& test_file) {
90 return LoadManifest(dir, test_file, Extension::NO_FLAGS); 90 return LoadManifest(dir, test_file, Extension::NO_FLAGS);
91 } 91 }
92 92
93 static scoped_refptr<Extension> LoadManifestStrict( 93 static scoped_refptr<Extension> LoadManifestStrict(
94 const std::string& dir, 94 const std::string& dir,
95 const std::string& test_file) { 95 const std::string& test_file) {
96 return LoadManifest(dir, test_file, Extension::NO_FLAGS); 96 return LoadManifest(dir, test_file, Extension::NO_FLAGS);
97 } 97 }
98 98
99 static ExtensionAction* LoadAction(const std::string& manifest) { 99 static scoped_ptr<ExtensionAction> LoadAction(const std::string& manifest) {
100 scoped_refptr<Extension> extension = LoadManifest("page_action", 100 scoped_refptr<Extension> extension = LoadManifest("page_action",
101 manifest); 101 manifest);
102 return new ExtensionAction(*(extension->page_action())); 102 return extension->page_action()->CopyForTest();
103 } 103 }
104 104
105 static void LoadActionAndExpectError(const std::string& manifest, 105 static void LoadActionAndExpectError(const std::string& manifest,
106 const std::string& expected_error) { 106 const std::string& expected_error) {
107 std::string error; 107 std::string error;
108 scoped_refptr<Extension> extension = LoadManifestUnchecked("page_action", 108 scoped_refptr<Extension> extension = LoadManifestUnchecked("page_action",
109 manifest, Extension::INTERNAL, Extension::NO_FLAGS, &error); 109 manifest, Extension::INTERNAL, Extension::NO_FLAGS, &error);
110 EXPECT_FALSE(extension); 110 EXPECT_FALSE(extension);
111 EXPECT_EQ(expected_error, error); 111 EXPECT_EQ(expected_error, error);
112 } 112 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
197 EXPECT_EQ(extension->path().AppendASCII("test.html").value(), 197 EXPECT_EQ(extension->path().AppendASCII("test.html").value(),
198 extension->GetResource("test.html").GetFilePath().value()); 198 extension->GetResource("test.html").GetFilePath().value());
199 EXPECT_EQ(extension->path().AppendASCII("test.js").value(), 199 EXPECT_EQ(extension->path().AppendASCII("test.js").value(),
200 extension->GetResource("test.js").GetFilePath().value()); 200 extension->GetResource("test.js").GetFilePath().value());
201 } 201 }
202 202
203 TEST(ExtensionTest, LoadPageActionHelper) { 203 TEST(ExtensionTest, LoadPageActionHelper) {
204 scoped_ptr<ExtensionAction> action; 204 scoped_ptr<ExtensionAction> action;
205 205
206 // First try with an empty dictionary. 206 // First try with an empty dictionary.
207 action.reset(LoadAction("page_action_empty.json")); 207 action = LoadAction("page_action_empty.json");
208 ASSERT_TRUE(action != NULL); 208 ASSERT_TRUE(action != NULL);
209 209
210 // Now setup some values to use in the action. 210 // Now setup some values to use in the action.
211 const std::string id("MyExtensionActionId"); 211 const std::string id("MyExtensionActionId");
212 const std::string name("MyExtensionActionName"); 212 const std::string name("MyExtensionActionName");
213 std::string img1("image1.png"); 213 std::string img1("image1.png");
214 std::string img2("image2.png"); 214 std::string img2("image2.png");
215 215
216 action.reset(LoadAction("page_action.json")); 216 action = LoadAction("page_action.json");
217 ASSERT_TRUE(NULL != action.get()); 217 ASSERT_TRUE(NULL != action.get());
218 ASSERT_EQ(id, action->id()); 218 ASSERT_EQ(id, action->id());
219 219
220 // No title, so fall back to name. 220 // No title, so fall back to name.
221 ASSERT_EQ(name, action->GetTitle(1)); 221 ASSERT_EQ(name, action->GetTitle(1));
222 ASSERT_EQ(2u, action->icon_paths()->size()); 222 ASSERT_EQ(2u, action->icon_paths()->size());
223 ASSERT_EQ(img1, (*action->icon_paths())[0]); 223 ASSERT_EQ(img1, (*action->icon_paths())[0]);
224 ASSERT_EQ(img2, (*action->icon_paths())[1]); 224 ASSERT_EQ(img2, (*action->icon_paths())[1]);
225 225
226 // Same test with explicitly set type. 226 // Same test with explicitly set type.
227 action.reset(LoadAction("page_action_type.json")); 227 action = LoadAction("page_action_type.json");
228 ASSERT_TRUE(NULL != action.get()); 228 ASSERT_TRUE(NULL != action.get());
229 229
230 // Try an action without id key. 230 // Try an action without id key.
231 action.reset(LoadAction("page_action_no_id.json")); 231 action = LoadAction("page_action_no_id.json");
232 ASSERT_TRUE(NULL != action.get()); 232 ASSERT_TRUE(NULL != action.get());
233 233
234 // Then try without the name key. It's optional, so no error. 234 // Then try without the name key. It's optional, so no error.
235 action.reset(LoadAction("page_action_no_name.json")); 235 action = LoadAction("page_action_no_name.json");
236 ASSERT_TRUE(NULL != action.get()); 236 ASSERT_TRUE(NULL != action.get());
237 ASSERT_TRUE(action->GetTitle(1).empty()); 237 ASSERT_TRUE(action->GetTitle(1).empty());
238 238
239 // Then try without the icon paths key. 239 // Then try without the icon paths key.
240 action.reset(LoadAction("page_action_no_icon.json")); 240 action = LoadAction("page_action_no_icon.json");
241 ASSERT_TRUE(NULL != action.get()); 241 ASSERT_TRUE(NULL != action.get());
242 242
243 // Now test that we can parse the new format for page actions. 243 // Now test that we can parse the new format for page actions.
244 const std::string kTitle("MyExtensionActionTitle"); 244 const std::string kTitle("MyExtensionActionTitle");
245 const std::string kIcon("image1.png"); 245 const std::string kIcon("image1.png");
246 const std::string kPopupHtmlFile("a_popup.html"); 246 const std::string kPopupHtmlFile("a_popup.html");
247 247
248 action.reset(LoadAction("page_action_new_format.json")); 248 action = LoadAction("page_action_new_format.json");
249 ASSERT_TRUE(action.get()); 249 ASSERT_TRUE(action.get());
250 ASSERT_EQ(kTitle, action->GetTitle(1)); 250 ASSERT_EQ(kTitle, action->GetTitle(1));
251 ASSERT_EQ(0u, action->icon_paths()->size()); 251 ASSERT_EQ(0u, action->icon_paths()->size());
252 252
253 // Invalid title should give an error even with a valid name. 253 // Invalid title should give an error even with a valid name.
254 LoadActionAndExpectError("page_action_invalid_title.json", 254 LoadActionAndExpectError("page_action_invalid_title.json",
255 errors::kInvalidPageActionDefaultTitle); 255 errors::kInvalidPageActionDefaultTitle);
256 256
257 // Invalid name should give an error only with no title. 257 // Invalid name should give an error only with no title.
258 action.reset(LoadAction("page_action_invalid_name.json")); 258 action = LoadAction("page_action_invalid_name.json");
259 ASSERT_TRUE(NULL != action.get()); 259 ASSERT_TRUE(NULL != action.get());
260 ASSERT_EQ(kTitle, action->GetTitle(1)); 260 ASSERT_EQ(kTitle, action->GetTitle(1));
261 261
262 LoadActionAndExpectError("page_action_invalid_name_no_title.json", 262 LoadActionAndExpectError("page_action_invalid_name_no_title.json",
263 errors::kInvalidPageActionName); 263 errors::kInvalidPageActionName);
264 264
265 // Test that keys "popup" and "default_popup" both work, but can not 265 // Test that keys "popup" and "default_popup" both work, but can not
266 // be used at the same time. 266 // be used at the same time.
267 // These tests require an extension_url, so we also load the manifest. 267 // These tests require an extension_url, so we also load the manifest.
268 268
269 // Only use "popup", expect success. 269 // Only use "popup", expect success.
270 scoped_refptr<Extension> extension = LoadManifest("page_action", 270 scoped_refptr<Extension> extension = LoadManifest("page_action",
271 "page_action_popup.json"); 271 "page_action_popup.json");
272 action.reset(LoadAction("page_action_popup.json")); 272 action = LoadAction("page_action_popup.json");
273 ASSERT_TRUE(NULL != action.get()); 273 ASSERT_TRUE(NULL != action.get());
274 ASSERT_STREQ( 274 ASSERT_STREQ(
275 extension->url().Resolve(kPopupHtmlFile).spec().c_str(), 275 extension->url().Resolve(kPopupHtmlFile).spec().c_str(),
276 action->GetPopupUrl(ExtensionAction::kDefaultTabId).spec().c_str()); 276 action->GetPopupUrl(ExtensionAction::kDefaultTabId).spec().c_str());
277 277
278 // Use both "popup" and "default_popup", expect failure. 278 // Use both "popup" and "default_popup", expect failure.
279 LoadActionAndExpectError("page_action_popup_and_default_popup.json", 279 LoadActionAndExpectError("page_action_popup_and_default_popup.json",
280 ExtensionErrorUtils::FormatErrorMessage( 280 ExtensionErrorUtils::FormatErrorMessage(
281 errors::kInvalidPageActionOldAndNewKeys, 281 errors::kInvalidPageActionOldAndNewKeys,
282 keys::kPageActionDefaultPopup, 282 keys::kPageActionDefaultPopup,
283 keys::kPageActionPopup)); 283 keys::kPageActionPopup));
284 284
285 // Use only "default_popup", expect success. 285 // Use only "default_popup", expect success.
286 extension = LoadManifest("page_action", "page_action_popup.json"); 286 extension = LoadManifest("page_action", "page_action_popup.json");
287 action.reset(LoadAction("page_action_default_popup.json")); 287 action = LoadAction("page_action_default_popup.json");
288 ASSERT_TRUE(NULL != action.get()); 288 ASSERT_TRUE(NULL != action.get());
289 ASSERT_STREQ( 289 ASSERT_STREQ(
290 extension->url().Resolve(kPopupHtmlFile).spec().c_str(), 290 extension->url().Resolve(kPopupHtmlFile).spec().c_str(),
291 action->GetPopupUrl(ExtensionAction::kDefaultTabId).spec().c_str()); 291 action->GetPopupUrl(ExtensionAction::kDefaultTabId).spec().c_str());
292 292
293 // Setting default_popup to "" is the same as having no popup. 293 // Setting default_popup to "" is the same as having no popup.
294 action.reset(LoadAction("page_action_empty_default_popup.json")); 294 action = LoadAction("page_action_empty_default_popup.json");
295 ASSERT_TRUE(NULL != action.get()); 295 ASSERT_TRUE(NULL != action.get());
296 EXPECT_FALSE(action->HasPopup(ExtensionAction::kDefaultTabId)); 296 EXPECT_FALSE(action->HasPopup(ExtensionAction::kDefaultTabId));
297 ASSERT_STREQ( 297 ASSERT_STREQ(
298 "", 298 "",
299 action->GetPopupUrl(ExtensionAction::kDefaultTabId).spec().c_str()); 299 action->GetPopupUrl(ExtensionAction::kDefaultTabId).spec().c_str());
300 300
301 // Setting popup to "" is the same as having no popup. 301 // Setting popup to "" is the same as having no popup.
302 action.reset(LoadAction("page_action_empty_popup.json")); 302 action = LoadAction("page_action_empty_popup.json");
303 303
304 ASSERT_TRUE(NULL != action.get()); 304 ASSERT_TRUE(NULL != action.get());
305 EXPECT_FALSE(action->HasPopup(ExtensionAction::kDefaultTabId)); 305 EXPECT_FALSE(action->HasPopup(ExtensionAction::kDefaultTabId));
306 ASSERT_STREQ( 306 ASSERT_STREQ(
307 "", 307 "",
308 action->GetPopupUrl(ExtensionAction::kDefaultTabId).spec().c_str()); 308 action->GetPopupUrl(ExtensionAction::kDefaultTabId).spec().c_str());
309 } 309 }
310 310
311 TEST(ExtensionTest, IdIsValid) { 311 TEST(ExtensionTest, IdIsValid) {
312 EXPECT_TRUE(Extension::IdIsValid("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa")); 312 EXPECT_TRUE(Extension::IdIsValid("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"));
(...skipping 766 matching lines...) Expand 10 before | Expand all | Expand 10 after
1079 } 1079 }
1080 1080
1081 TEST(ExtensionTest, GetSyncTypeExtensionWithTwoPlugins) { 1081 TEST(ExtensionTest, GetSyncTypeExtensionWithTwoPlugins) {
1082 scoped_refptr<Extension> extension( 1082 scoped_refptr<Extension> extension(
1083 MakeSyncTestExtension(EXTENSION, GURL(), GURL(), 1083 MakeSyncTestExtension(EXTENSION, GURL(), GURL(),
1084 Extension::INTERNAL, 2, FilePath())); 1084 Extension::INTERNAL, 2, FilePath()));
1085 if (extension) 1085 if (extension)
1086 EXPECT_EQ(extension->GetSyncType(), Extension::SYNC_TYPE_NONE); 1086 EXPECT_EQ(extension->GetSyncType(), Extension::SYNC_TYPE_NONE);
1087 } 1087 }
1088 #endif // !defined(OS_CHROMEOS) 1088 #endif // !defined(OS_CHROMEOS)
OLDNEW
« no previous file with comments | « chrome/common/extensions/extension_action.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698