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

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

Issue 15836003: Update chrome/ to use scoped_refptr<T>::get() rather than implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years, 6 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/extension_file_util.h" 5 #include "chrome/common/extensions/extension_file_util.h"
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/files/scoped_temp_dir.h" 8 #include "base/files/scoped_temp_dir.h"
9 #include "base/json/json_string_value_serializer.h" 9 #include "base/json/json_string_value_serializer.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir)); 107 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir));
108 install_dir = install_dir.AppendASCII("extensions") 108 install_dir = install_dir.AppendASCII("extensions")
109 .AppendASCII("good") 109 .AppendASCII("good")
110 .AppendASCII("Extensions") 110 .AppendASCII("Extensions")
111 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj") 111 .AppendASCII("behllobkkfkfnphdnhnkndlbkcpglgmj")
112 .AppendASCII("1.0.0.0"); 112 .AppendASCII("1.0.0.0");
113 113
114 std::string error; 114 std::string error;
115 scoped_refptr<Extension> extension(extension_file_util::LoadExtension( 115 scoped_refptr<Extension> extension(extension_file_util::LoadExtension(
116 install_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error)); 116 install_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error));
117 ASSERT_TRUE(extension != NULL); 117 ASSERT_TRUE(extension.get() != NULL);
118 EXPECT_EQ("The first extension that I made.", extension->description()); 118 EXPECT_EQ("The first extension that I made.", extension->description());
119 } 119 }
120 120
121 TEST_F(ExtensionFileUtilTest, LoadExtensionWithoutLocalesFolder) { 121 TEST_F(ExtensionFileUtilTest, LoadExtensionWithoutLocalesFolder) {
122 base::FilePath install_dir; 122 base::FilePath install_dir;
123 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir)); 123 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir));
124 install_dir = install_dir.AppendASCII("extensions") 124 install_dir = install_dir.AppendASCII("extensions")
125 .AppendASCII("good") 125 .AppendASCII("good")
126 .AppendASCII("Extensions") 126 .AppendASCII("Extensions")
127 .AppendASCII("bjafgdebaacbbbecmhlhpofkepfkgcpa") 127 .AppendASCII("bjafgdebaacbbbecmhlhpofkepfkgcpa")
128 .AppendASCII("1.0"); 128 .AppendASCII("1.0");
129 129
130 std::string error; 130 std::string error;
131 scoped_refptr<Extension> extension(extension_file_util::LoadExtension( 131 scoped_refptr<Extension> extension(extension_file_util::LoadExtension(
132 install_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error)); 132 install_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error));
133 ASSERT_FALSE(extension == NULL); 133 ASSERT_FALSE(extension.get() == NULL);
134 EXPECT_TRUE(error.empty()); 134 EXPECT_TRUE(error.empty());
135 } 135 }
136 136
137 TEST_F(ExtensionFileUtilTest, CheckIllegalFilenamesNoUnderscores) { 137 TEST_F(ExtensionFileUtilTest, CheckIllegalFilenamesNoUnderscores) {
138 base::ScopedTempDir temp; 138 base::ScopedTempDir temp;
139 ASSERT_TRUE(temp.CreateUniqueTempDir()); 139 ASSERT_TRUE(temp.CreateUniqueTempDir());
140 140
141 base::FilePath src_path = temp.path().AppendASCII("some_dir"); 141 base::FilePath src_path = temp.path().AppendASCII("some_dir");
142 ASSERT_TRUE(file_util::CreateDirectory(src_path)); 142 ASSERT_TRUE(file_util::CreateDirectory(src_path));
143 143
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir)); 187 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir));
188 install_dir = install_dir.AppendASCII("extensions") 188 install_dir = install_dir.AppendASCII("extensions")
189 .AppendASCII("bad") 189 .AppendASCII("bad")
190 .AppendASCII("Extensions") 190 .AppendASCII("Extensions")
191 .AppendASCII("dddddddddddddddddddddddddddddddd") 191 .AppendASCII("dddddddddddddddddddddddddddddddd")
192 .AppendASCII("1.0"); 192 .AppendASCII("1.0");
193 193
194 std::string error; 194 std::string error;
195 scoped_refptr<Extension> extension(extension_file_util::LoadExtension( 195 scoped_refptr<Extension> extension(extension_file_util::LoadExtension(
196 install_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error)); 196 install_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error));
197 ASSERT_TRUE(extension == NULL); 197 ASSERT_TRUE(extension.get() == NULL);
198 ASSERT_FALSE(error.empty()); 198 ASSERT_FALSE(error.empty());
199 ASSERT_STREQ("Manifest file is missing or unreadable.", error.c_str()); 199 ASSERT_STREQ("Manifest file is missing or unreadable.", error.c_str());
200 } 200 }
201 201
202 TEST_F(ExtensionFileUtilTest, LoadExtensionGivesHelpfullErrorOnBadManifest) { 202 TEST_F(ExtensionFileUtilTest, LoadExtensionGivesHelpfullErrorOnBadManifest) {
203 base::FilePath install_dir; 203 base::FilePath install_dir;
204 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir)); 204 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir));
205 install_dir = install_dir.AppendASCII("extensions") 205 install_dir = install_dir.AppendASCII("extensions")
206 .AppendASCII("bad") 206 .AppendASCII("bad")
207 .AppendASCII("Extensions") 207 .AppendASCII("Extensions")
208 .AppendASCII("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee") 208 .AppendASCII("eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee")
209 .AppendASCII("1.0"); 209 .AppendASCII("1.0");
210 210
211 std::string error; 211 std::string error;
212 scoped_refptr<Extension> extension(extension_file_util::LoadExtension( 212 scoped_refptr<Extension> extension(extension_file_util::LoadExtension(
213 install_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error)); 213 install_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error));
214 ASSERT_TRUE(extension == NULL); 214 ASSERT_TRUE(extension.get() == NULL);
215 ASSERT_FALSE(error.empty()); 215 ASSERT_FALSE(error.empty());
216 ASSERT_STREQ("Manifest is not valid JSON. " 216 ASSERT_STREQ("Manifest is not valid JSON. "
217 "Line: 2, column: 16, Syntax error.", error.c_str()); 217 "Line: 2, column: 16, Syntax error.", error.c_str());
218 } 218 }
219 219
220 TEST_F(ExtensionFileUtilTest, FailLoadingNonUTF8Scripts) { 220 TEST_F(ExtensionFileUtilTest, FailLoadingNonUTF8Scripts) {
221 base::FilePath install_dir; 221 base::FilePath install_dir;
222 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir)); 222 ASSERT_TRUE(PathService::Get(chrome::DIR_TEST_DATA, &install_dir));
223 install_dir = install_dir.AppendASCII("extensions") 223 install_dir = install_dir.AppendASCII("extensions")
224 .AppendASCII("bad") 224 .AppendASCII("bad")
225 .AppendASCII("bad_encoding"); 225 .AppendASCII("bad_encoding");
226 226
227 std::string error; 227 std::string error;
228 scoped_refptr<Extension> extension(extension_file_util::LoadExtension( 228 scoped_refptr<Extension> extension(extension_file_util::LoadExtension(
229 install_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error)); 229 install_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error));
230 ASSERT_TRUE(extension == NULL); 230 ASSERT_TRUE(extension.get() == NULL);
231 ASSERT_STREQ("Could not load file 'bad_encoding.js' for content script. " 231 ASSERT_STREQ("Could not load file 'bad_encoding.js' for content script. "
232 "It isn't UTF-8 encoded.", error.c_str()); 232 "It isn't UTF-8 encoded.",
233 error.c_str());
233 } 234 }
234 235
235 TEST_F(ExtensionFileUtilTest, ExtensionURLToRelativeFilePath) { 236 TEST_F(ExtensionFileUtilTest, ExtensionURLToRelativeFilePath) {
236 #define URL_PREFIX "chrome-extension://extension-id/" 237 #define URL_PREFIX "chrome-extension://extension-id/"
237 struct TestCase { 238 struct TestCase {
238 const char* url; 239 const char* url;
239 const char* expected_relative_path; 240 const char* expected_relative_path;
240 } test_cases[] = { 241 } test_cases[] = {
241 { URL_PREFIX "simple.html", 242 { URL_PREFIX "simple.html",
242 "simple.html" }, 243 "simple.html" },
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 base::StringPrintf( 386 base::StringPrintf(
386 "{ \"name\": \"Test\", \"version\": \"1.0\", " 387 "{ \"name\": \"Test\", \"version\": \"1.0\", "
387 " \"theme\": { \"images\": { \"theme_frame\": \"%s\" } }" 388 " \"theme\": { \"images\": { \"theme_frame\": \"%s\" } }"
388 "}", non_ascii_file.c_str()); 389 "}", non_ascii_file.c_str());
389 std::string error; 390 std::string error;
390 scoped_refptr<Extension> extension = LoadExtensionManifest( 391 scoped_refptr<Extension> extension = LoadExtensionManifest(
391 kManifest, temp.path(), Manifest::UNPACKED, 0, &error); 392 kManifest, temp.path(), Manifest::UNPACKED, 0, &error);
392 ASSERT_TRUE(extension.get()) << error; 393 ASSERT_TRUE(extension.get()) << error;
393 394
394 std::vector<extensions::InstallWarning> warnings; 395 std::vector<extensions::InstallWarning> warnings;
395 EXPECT_TRUE(extension_file_util::ValidateExtension(extension, 396 EXPECT_TRUE(extension_file_util::ValidateExtension(
396 &error, &warnings)) << 397 extension.get(), &error, &warnings)) << error;
397 error;
398 EXPECT_EQ(0U, warnings.size()); 398 EXPECT_EQ(0U, warnings.size());
399 } 399 }
400 400
401 TEST_F(ExtensionFileUtilTest, BackgroundScriptsMustExist) { 401 TEST_F(ExtensionFileUtilTest, BackgroundScriptsMustExist) {
402 base::ScopedTempDir temp; 402 base::ScopedTempDir temp;
403 ASSERT_TRUE(temp.CreateUniqueTempDir()); 403 ASSERT_TRUE(temp.CreateUniqueTempDir());
404 404
405 scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue()); 405 scoped_ptr<base::DictionaryValue> value(new base::DictionaryValue());
406 value->SetString("name", "test"); 406 value->SetString("name", "test");
407 value->SetString("version", "1"); 407 value->SetString("version", "1");
408 value->SetInteger("manifest_version", 1); 408 value->SetInteger("manifest_version", 1);
409 409
410 base::ListValue* scripts = new base::ListValue(); 410 base::ListValue* scripts = new base::ListValue();
411 scripts->Append(new base::StringValue("foo.js")); 411 scripts->Append(new base::StringValue("foo.js"));
412 value->Set("background.scripts", scripts); 412 value->Set("background.scripts", scripts);
413 413
414 std::string error; 414 std::string error;
415 std::vector<extensions::InstallWarning> warnings; 415 std::vector<extensions::InstallWarning> warnings;
416 scoped_refptr<Extension> extension = LoadExtensionManifest( 416 scoped_refptr<Extension> extension = LoadExtensionManifest(
417 value.get(), temp.path(), Manifest::UNPACKED, 0, &error); 417 value.get(), temp.path(), Manifest::UNPACKED, 0, &error);
418 ASSERT_TRUE(extension.get()) << error; 418 ASSERT_TRUE(extension.get()) << error;
419 419
420 EXPECT_FALSE(extension_file_util::ValidateExtension(extension, 420 EXPECT_FALSE(extension_file_util::ValidateExtension(
421 &error, &warnings)); 421 extension.get(), &error, &warnings));
422 EXPECT_EQ(l10n_util::GetStringFUTF8( 422 EXPECT_EQ(l10n_util::GetStringFUTF8(
423 IDS_EXTENSION_LOAD_BACKGROUND_SCRIPT_FAILED, ASCIIToUTF16("foo.js")), 423 IDS_EXTENSION_LOAD_BACKGROUND_SCRIPT_FAILED, ASCIIToUTF16("foo.js")),
424 error); 424 error);
425 EXPECT_EQ(0U, warnings.size()); 425 EXPECT_EQ(0U, warnings.size());
426 426
427 scripts->Clear(); 427 scripts->Clear();
428 scripts->Append(new base::StringValue("http://google.com/foo.js")); 428 scripts->Append(new base::StringValue("http://google.com/foo.js"));
429 429
430 extension = LoadExtensionManifest(value.get(), temp.path(), 430 extension = LoadExtensionManifest(value.get(), temp.path(),
431 Manifest::UNPACKED, 0, &error); 431 Manifest::UNPACKED, 0, &error);
432 ASSERT_TRUE(extension.get()) << error; 432 ASSERT_TRUE(extension.get()) << error;
433 433
434 warnings.clear(); 434 warnings.clear();
435 EXPECT_FALSE(extension_file_util::ValidateExtension(extension, 435 EXPECT_FALSE(extension_file_util::ValidateExtension(
436 &error, &warnings)); 436 extension.get(), &error, &warnings));
437 EXPECT_EQ(l10n_util::GetStringFUTF8( 437 EXPECT_EQ(l10n_util::GetStringFUTF8(
438 IDS_EXTENSION_LOAD_BACKGROUND_SCRIPT_FAILED, 438 IDS_EXTENSION_LOAD_BACKGROUND_SCRIPT_FAILED,
439 ASCIIToUTF16("http://google.com/foo.js")), 439 ASCIIToUTF16("http://google.com/foo.js")),
440 error); 440 error);
441 EXPECT_EQ(0U, warnings.size()); 441 EXPECT_EQ(0U, warnings.size());
442 } 442 }
443 443
444 // Private key, generated by Chrome specifically for this test, and 444 // Private key, generated by Chrome specifically for this test, and
445 // never used elsewhere. 445 // never used elsewhere.
446 const char private_key[] = 446 const char private_key[] =
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 536
537 // Try to install an extension with a zero-length icon file. 537 // Try to install an extension with a zero-length icon file.
538 base::FilePath ext_dir = install_dir.AppendASCII("extensions") 538 base::FilePath ext_dir = install_dir.AppendASCII("extensions")
539 .AppendASCII("bad") 539 .AppendASCII("bad")
540 .AppendASCII("Extensions") 540 .AppendASCII("Extensions")
541 .AppendASCII("ffffffffffffffffffffffffffffffff"); 541 .AppendASCII("ffffffffffffffffffffffffffffffff");
542 542
543 std::string error; 543 std::string error;
544 scoped_refptr<Extension> extension(extension_file_util::LoadExtension( 544 scoped_refptr<Extension> extension(extension_file_util::LoadExtension(
545 ext_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error)); 545 ext_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error));
546 EXPECT_TRUE(extension == NULL); 546 EXPECT_TRUE(extension.get() == NULL);
547 EXPECT_STREQ("Could not load extension icon 'icon.png'.", 547 EXPECT_STREQ("Could not load extension icon 'icon.png'.", error.c_str());
548 error.c_str());
549 548
550 // Try to install an extension with a zero-length browser action icon file. 549 // Try to install an extension with a zero-length browser action icon file.
551 ext_dir = install_dir.AppendASCII("extensions") 550 ext_dir = install_dir.AppendASCII("extensions")
552 .AppendASCII("bad") 551 .AppendASCII("bad")
553 .AppendASCII("Extensions") 552 .AppendASCII("Extensions")
554 .AppendASCII("gggggggggggggggggggggggggggggggg"); 553 .AppendASCII("gggggggggggggggggggggggggggggggg");
555 554
556 scoped_refptr<Extension> extension2(extension_file_util::LoadExtension( 555 scoped_refptr<Extension> extension2(extension_file_util::LoadExtension(
557 ext_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error)); 556 ext_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error));
558 EXPECT_TRUE(extension2 == NULL); 557 EXPECT_TRUE(extension2.get() == NULL);
559 EXPECT_STREQ("Could not load icon 'icon.png' for browser action.", 558 EXPECT_STREQ("Could not load icon 'icon.png' for browser action.",
560 error.c_str()); 559 error.c_str());
561 560
562 // Try to install an extension with a zero-length page action icon file. 561 // Try to install an extension with a zero-length page action icon file.
563 ext_dir = install_dir.AppendASCII("extensions") 562 ext_dir = install_dir.AppendASCII("extensions")
564 .AppendASCII("bad") 563 .AppendASCII("bad")
565 .AppendASCII("Extensions") 564 .AppendASCII("Extensions")
566 .AppendASCII("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh"); 565 .AppendASCII("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh");
567 566
568 scoped_refptr<Extension> extension3(extension_file_util::LoadExtension( 567 scoped_refptr<Extension> extension3(extension_file_util::LoadExtension(
569 ext_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error)); 568 ext_dir, Manifest::UNPACKED, Extension::NO_FLAGS, &error));
570 EXPECT_TRUE(extension3 == NULL); 569 EXPECT_TRUE(extension3.get() == NULL);
571 EXPECT_STREQ("Could not load icon 'icon.png' for page action.", 570 EXPECT_STREQ("Could not load icon 'icon.png' for page action.",
572 error.c_str()); 571 error.c_str());
573 } 572 }
574 573
575 // TODO(aa): More tests as motivation allows. Maybe steal some from 574 // TODO(aa): More tests as motivation allows. Maybe steal some from
576 // ExtensionService? Many of them could probably be tested here without the 575 // ExtensionService? Many of them could probably be tested here without the
577 // MessageLoop shenanigans. 576 // MessageLoop shenanigans.
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698