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

Side by Side Diff: chrome/browser/extensions/extension_updater_unittest.cc

Issue 6627060: ImportantFileWriter: check return value of PostTask... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <map> 5 #include <map>
6 6
7 #include "base/file_util.h" 7 #include "base/file_util.h"
8 #include "base/scoped_ptr.h" 8 #include "base/scoped_ptr.h"
9 #include "base/stl_util-inl.h" 9 #include "base/stl_util-inl.h"
10 #include "base/string_number_conversions.h" 10 #include "base/string_number_conversions.h"
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 const std::string& url, 308 const std::string& url,
309 UpdateManifest::Results* results) { 309 UpdateManifest::Results* results) {
310 UpdateManifest::Result result; 310 UpdateManifest::Result result;
311 result.extension_id = id; 311 result.extension_id = id;
312 result.version = version; 312 result.version = version;
313 result.crx_url = GURL(url); 313 result.crx_url = GURL(url);
314 results->list.push_back(result); 314 results->list.push_back(result);
315 } 315 }
316 316
317 static void TestExtensionUpdateCheckRequests(bool pending) { 317 static void TestExtensionUpdateCheckRequests(bool pending) {
318 MessageLoop message_loop;
319 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
320 BrowserThread io_thread(BrowserThread::IO);
321 io_thread.Start();
322
318 // Create an extension with an update_url. 323 // Create an extension with an update_url.
319 ServiceForManifestTests service; 324 ServiceForManifestTests service;
320 std::string update_url("http://foo.com/bar"); 325 std::string update_url("http://foo.com/bar");
321 ExtensionList extensions; 326 ExtensionList extensions;
322 PendingExtensionMap pending_extensions; 327 PendingExtensionMap pending_extensions;
323 if (pending) { 328 if (pending) {
324 CreateTestPendingExtensions(1, GURL(update_url), &pending_extensions); 329 CreateTestPendingExtensions(1, GURL(update_url), &pending_extensions);
325 service.set_pending_extensions(pending_extensions); 330 service.set_pending_extensions(pending_extensions);
326 } else { 331 } else {
327 service.CreateTestExtensions(1, 1, &extensions, &update_url, 332 service.CreateTestExtensions(1, 1, &extensions, &update_url,
328 Extension::INTERNAL); 333 Extension::INTERNAL);
329 service.set_extensions(extensions); 334 service.set_extensions(extensions);
330 } 335 }
331 336
332 // Setup and start the updater. 337 // Set up and start the updater.
333 MessageLoop message_loop;
334 BrowserThread io_thread(BrowserThread::IO);
335 io_thread.Start();
336
337 TestURLFetcherFactory factory; 338 TestURLFetcherFactory factory;
338 URLFetcher::set_factory(&factory); 339 URLFetcher::set_factory(&factory);
339 scoped_refptr<ExtensionUpdater> updater( 340 scoped_refptr<ExtensionUpdater> updater(
340 new ExtensionUpdater(&service, service.pref_service(), 60*60*24)); 341 new ExtensionUpdater(&service, service.pref_service(), 60*60*24));
341 updater->Start(); 342 updater->Start();
342 343
343 // Tell the update that it's time to do update checks. 344 // Tell the update that it's time to do update checks.
344 SimulateTimerFired(updater.get()); 345 SimulateTimerFired(updater.get());
345 346
346 // Get the url our mock fetcher was asked to fetch. 347 // Get the url our mock fetcher was asked to fetch.
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 // Make sure that extensions that update from the gallery ignore any 487 // Make sure that extensions that update from the gallery ignore any
487 // update URL data. 488 // update URL data.
488 const std::string& update_url = fetch->full_url().spec(); 489 const std::string& update_url = fetch->full_url().spec();
489 std::string::size_type x = update_url.find("x="); 490 std::string::size_type x = update_url.find("x=");
490 EXPECT_NE(std::string::npos, x); 491 EXPECT_NE(std::string::npos, x);
491 std::string::size_type ap = update_url.find("ap%3D", x); 492 std::string::size_type ap = update_url.find("ap%3D", x);
492 EXPECT_EQ(std::string::npos, ap); 493 EXPECT_EQ(std::string::npos, ap);
493 } 494 }
494 495
495 static void TestDetermineUpdates() { 496 static void TestDetermineUpdates() {
497 MessageLoop message_loop;
498 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
499
496 // Create a set of test extensions 500 // Create a set of test extensions
497 ServiceForManifestTests service; 501 ServiceForManifestTests service;
498 ExtensionList tmp; 502 ExtensionList tmp;
499 service.CreateTestExtensions(1, 3, &tmp, NULL, Extension::INTERNAL); 503 service.CreateTestExtensions(1, 3, &tmp, NULL, Extension::INTERNAL);
500 service.set_extensions(tmp); 504 service.set_extensions(tmp);
501 505
502 MessageLoop message_loop;
503 scoped_refptr<ExtensionUpdater> updater( 506 scoped_refptr<ExtensionUpdater> updater(
504 new ExtensionUpdater(&service, service.pref_service(), 507 new ExtensionUpdater(&service, service.pref_service(),
505 kUpdateFrequencySecs)); 508 kUpdateFrequencySecs));
506 updater->Start(); 509 updater->Start();
507 510
508 // Check passing an empty list of parse results to DetermineUpdates 511 // Check passing an empty list of parse results to DetermineUpdates
509 ManifestFetchData fetch_data(GURL("http://localhost/foo")); 512 ManifestFetchData fetch_data(GURL("http://localhost/foo"));
510 UpdateManifest::Results updates; 513 UpdateManifest::Results updates;
511 std::vector<int> updateable = updater->DetermineUpdates(fetch_data, 514 std::vector<int> updateable = updater->DetermineUpdates(fetch_data,
512 updates); 515 updates);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
568 MessageLoop ui_loop; 571 MessageLoop ui_loop;
569 BrowserThread ui_thread(BrowserThread::UI, &ui_loop); 572 BrowserThread ui_thread(BrowserThread::UI, &ui_loop);
570 BrowserThread file_thread(BrowserThread::FILE); 573 BrowserThread file_thread(BrowserThread::FILE);
571 file_thread.Start(); 574 file_thread.Start();
572 BrowserThread io_thread(BrowserThread::IO); 575 BrowserThread io_thread(BrowserThread::IO);
573 io_thread.Start(); 576 io_thread.Start();
574 577
575 TestURLFetcherFactory factory; 578 TestURLFetcherFactory factory;
576 TestURLFetcher* fetcher = NULL; 579 TestURLFetcher* fetcher = NULL;
577 URLFetcher::set_factory(&factory); 580 URLFetcher::set_factory(&factory);
578 ServiceForDownloadTests service; 581 scoped_ptr<ServiceForDownloadTests> service(new ServiceForDownloadTests);
579 scoped_refptr<ExtensionUpdater> updater( 582 scoped_refptr<ExtensionUpdater> updater(
580 new ExtensionUpdater(&service, service.pref_service(), 583 new ExtensionUpdater(service.get(), service->pref_service(),
581 kUpdateFrequencySecs)); 584 kUpdateFrequencySecs));
582 updater->Start(); 585 updater->Start();
583 586
584 GURL url1("http://localhost/manifest1"); 587 GURL url1("http://localhost/manifest1");
585 GURL url2("http://localhost/manifest2"); 588 GURL url2("http://localhost/manifest2");
586 589
587 // Request 2 update checks - the first should begin immediately and the 590 // Request 2 update checks - the first should begin immediately and the
588 // second one should be queued up. 591 // second one should be queued up.
589 ManifestFetchData* fetch1 = new ManifestFetchData(url1); 592 ManifestFetchData* fetch1 = new ManifestFetchData(url1);
590 ManifestFetchData* fetch2 = new ManifestFetchData(url2); 593 ManifestFetchData* fetch2 = new ManifestFetchData(url2);
(...skipping 29 matching lines...) Expand all
620 fetcher->delegate()->OnURLFetchComplete( 623 fetcher->delegate()->OnURLFetchComplete(
621 fetcher, url2, net::URLRequestStatus(), 200, ResponseCookies(), 624 fetcher, url2, net::URLRequestStatus(), 200, ResponseCookies(),
622 kValidXml); 625 kValidXml);
623 626
624 // This should run the manifest parsing, then we want to make sure that our 627 // This should run the manifest parsing, then we want to make sure that our
625 // service was called with GetExtensionById with the matching id from 628 // service was called with GetExtensionById with the matching id from
626 // kValidXml. 629 // kValidXml.
627 file_thread.Stop(); 630 file_thread.Stop();
628 io_thread.Stop(); 631 io_thread.Stop();
629 ui_loop.RunAllPending(); 632 ui_loop.RunAllPending();
630 EXPECT_EQ("12345", service.last_inquired_extension_id()); 633 EXPECT_EQ("12345", service->last_inquired_extension_id());
631 xmlCleanupGlobals(); 634 xmlCleanupGlobals();
635
636 // The FILE thread is needed for |service|'s cleanup,
637 // because of ImportantFileWriter.
638 file_thread.Start();
639 service.reset();
632 } 640 }
633 641
634 static void TestSingleExtensionDownloading(bool pending) { 642 static void TestSingleExtensionDownloading(bool pending) {
635 MessageLoop ui_loop; 643 MessageLoop ui_loop;
636 BrowserThread ui_thread(BrowserThread::UI, &ui_loop); 644 BrowserThread ui_thread(BrowserThread::UI, &ui_loop);
637 BrowserThread file_thread(BrowserThread::FILE); 645 BrowserThread file_thread(BrowserThread::FILE);
638 file_thread.Start(); 646 file_thread.Start();
639 BrowserThread io_thread(BrowserThread::IO); 647 BrowserThread io_thread(BrowserThread::IO);
640 io_thread.Start(); 648 io_thread.Start();
641 649
642 TestURLFetcherFactory factory; 650 TestURLFetcherFactory factory;
643 TestURLFetcher* fetcher = NULL; 651 TestURLFetcher* fetcher = NULL;
644 URLFetcher::set_factory(&factory); 652 URLFetcher::set_factory(&factory);
645 ServiceForDownloadTests service; 653 scoped_ptr<ServiceForDownloadTests> service(new ServiceForDownloadTests);
646 scoped_refptr<ExtensionUpdater> updater( 654 scoped_refptr<ExtensionUpdater> updater(
647 new ExtensionUpdater(&service, service.pref_service(), 655 new ExtensionUpdater(service.get(), service->pref_service(),
648 kUpdateFrequencySecs)); 656 kUpdateFrequencySecs));
649 updater->Start(); 657 updater->Start();
650 658
651 GURL test_url("http://localhost/extension.crx"); 659 GURL test_url("http://localhost/extension.crx");
652 660
653 std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; 661 std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
654 std::string hash = ""; 662 std::string hash = "";
655 scoped_ptr<Version> version(Version::GetVersionFromString("0.0.1")); 663 scoped_ptr<Version> version(Version::GetVersionFromString("0.0.1"));
656 ASSERT_TRUE(version.get()); 664 ASSERT_TRUE(version.get());
657 updater->FetchUpdatedExtension(id, test_url, hash, version->GetString()); 665 updater->FetchUpdatedExtension(id, test_url, hash, version->GetString());
658 666
659 if (pending) { 667 if (pending) {
660 const bool kIsFromSync = true; 668 const bool kIsFromSync = true;
661 const bool kInstallSilently = true; 669 const bool kInstallSilently = true;
662 const Extension::State kInitialState = Extension::ENABLED; 670 const Extension::State kInitialState = Extension::ENABLED;
663 const bool kInitialIncognitoEnabled = false; 671 const bool kInitialIncognitoEnabled = false;
664 PendingExtensionMap pending_extensions; 672 PendingExtensionMap pending_extensions;
665 pending_extensions[id] = 673 pending_extensions[id] =
666 PendingExtensionInfo(test_url, &ShouldAlwaysInstall, kIsFromSync, 674 PendingExtensionInfo(test_url, &ShouldAlwaysInstall, kIsFromSync,
667 kInstallSilently, kInitialState, 675 kInstallSilently, kInitialState,
668 kInitialIncognitoEnabled, Extension::INTERNAL); 676 kInitialIncognitoEnabled, Extension::INTERNAL);
669 service.set_pending_extensions(pending_extensions); 677 service->set_pending_extensions(pending_extensions);
670 } 678 }
671 679
672 // Call back the ExtensionUpdater with a 200 response and some test data 680 // Call back the ExtensionUpdater with a 200 response and some test data
673 std::string extension_data("whatever"); 681 std::string extension_data("whatever");
674 fetcher = factory.GetFetcherByID(ExtensionUpdater::kExtensionFetcherId); 682 fetcher = factory.GetFetcherByID(ExtensionUpdater::kExtensionFetcherId);
675 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL); 683 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL);
676 EXPECT_TRUE(fetcher->load_flags() == expected_load_flags); 684 EXPECT_TRUE(fetcher->load_flags() == expected_load_flags);
677 fetcher->delegate()->OnURLFetchComplete( 685 fetcher->delegate()->OnURLFetchComplete(
678 fetcher, test_url, net::URLRequestStatus(), 200, ResponseCookies(), 686 fetcher, test_url, net::URLRequestStatus(), 200, ResponseCookies(),
679 extension_data); 687 extension_data);
680 688
681 file_thread.Stop(); 689 file_thread.Stop();
682 ui_loop.RunAllPending(); 690 ui_loop.RunAllPending();
683 691
684 // Expect that ExtensionUpdater asked the mock extensions service to install 692 // Expect that ExtensionUpdater asked the mock extensions service to install
685 // a file with the test data for the right id. 693 // a file with the test data for the right id.
686 EXPECT_EQ(id, service.extension_id()); 694 EXPECT_EQ(id, service->extension_id());
687 FilePath tmpfile_path = service.install_path(); 695 FilePath tmpfile_path = service->install_path();
688 EXPECT_FALSE(tmpfile_path.empty()); 696 EXPECT_FALSE(tmpfile_path.empty());
689 EXPECT_EQ(test_url, service.download_url()); 697 EXPECT_EQ(test_url, service->download_url());
690 std::string file_contents; 698 std::string file_contents;
691 EXPECT_TRUE(file_util::ReadFileToString(tmpfile_path, &file_contents)); 699 EXPECT_TRUE(file_util::ReadFileToString(tmpfile_path, &file_contents));
692 EXPECT_TRUE(extension_data == file_contents); 700 EXPECT_TRUE(extension_data == file_contents);
693 701
702 // The FILE thread is needed for |service|'s cleanup,
703 // because of ImportantFileWriter.
704 file_thread.Start();
705 service.reset();
706
694 file_util::Delete(tmpfile_path, false); 707 file_util::Delete(tmpfile_path, false);
695 URLFetcher::set_factory(NULL); 708 URLFetcher::set_factory(NULL);
696 } 709 }
697 710
698 static void TestBlacklistDownloading() { 711 static void TestBlacklistDownloading() {
699 MessageLoop message_loop; 712 MessageLoop message_loop;
700 BrowserThread ui_thread(BrowserThread::UI, &message_loop); 713 BrowserThread ui_thread(BrowserThread::UI, &message_loop);
714 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
701 BrowserThread io_thread(BrowserThread::IO); 715 BrowserThread io_thread(BrowserThread::IO);
702 io_thread.Start(); 716 io_thread.Start();
703 717
704 TestURLFetcherFactory factory; 718 TestURLFetcherFactory factory;
705 TestURLFetcher* fetcher = NULL; 719 TestURLFetcher* fetcher = NULL;
706 URLFetcher::set_factory(&factory); 720 URLFetcher::set_factory(&factory);
707 ServiceForBlacklistTests service; 721 ServiceForBlacklistTests service;
708 scoped_refptr<ExtensionUpdater> updater( 722 scoped_refptr<ExtensionUpdater> updater(
709 new ExtensionUpdater(&service, service.pref_service(), 723 new ExtensionUpdater(&service, service.pref_service(),
710 kUpdateFrequencySecs)); 724 kUpdateFrequencySecs));
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
813 827
814 // Test requests to both a Google server and a non-google server. This allows 828 // Test requests to both a Google server and a non-google server. This allows
815 // us to test various combinations of installed (ie roll call) and active 829 // us to test various combinations of installed (ie roll call) and active
816 // (ie app launch) ping scenarios. The invariant is that each type of ping 830 // (ie app launch) ping scenarios. The invariant is that each type of ping
817 // value should be present at most once per day, and can be calculated based 831 // value should be present at most once per day, and can be calculated based
818 // on the delta between now and the last ping time (or in the case of active 832 // on the delta between now and the last ping time (or in the case of active
819 // pings, that delta plus whether the app has been active). 833 // pings, that delta plus whether the app has been active).
820 static void TestGalleryRequests(int rollcall_ping_days, 834 static void TestGalleryRequests(int rollcall_ping_days,
821 int active_ping_days, 835 int active_ping_days,
822 bool active_bit) { 836 bool active_bit) {
837 MessageLoop message_loop;
838 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
839
823 TestURLFetcherFactory factory; 840 TestURLFetcherFactory factory;
824 URLFetcher::set_factory(&factory); 841 URLFetcher::set_factory(&factory);
825 842
826 // Set up 2 mock extensions, one with a google.com update url and one 843 // Set up 2 mock extensions, one with a google.com update url and one
827 // without. 844 // without.
828 ServiceForManifestTests service; 845 ServiceForManifestTests service;
829 ExtensionList tmp; 846 ExtensionList tmp;
830 GURL url1("http://clients2.google.com/service/update2/crx"); 847 GURL url1("http://clients2.google.com/service/update2/crx");
831 GURL url2("http://www.somewebsite.com"); 848 GURL url2("http://www.somewebsite.com");
832 service.CreateTestExtensions(1, 1, &tmp, &url1.possibly_invalid_spec(), 849 service.CreateTestExtensions(1, 1, &tmp, &url1.possibly_invalid_spec(),
(...skipping 20 matching lines...) Expand all
853 prefs->SetLastActivePingDay(id, now - TimeDelta::FromSeconds(15)); 870 prefs->SetLastActivePingDay(id, now - TimeDelta::FromSeconds(15));
854 } else if (active_ping_days > 0) { 871 } else if (active_ping_days > 0) {
855 Time last_active_ping_day = now - 872 Time last_active_ping_day = now -
856 TimeDelta::FromDays(active_ping_days) - 873 TimeDelta::FromDays(active_ping_days) -
857 TimeDelta::FromSeconds(15); 874 TimeDelta::FromSeconds(15);
858 prefs->SetLastActivePingDay(id, last_active_ping_day); 875 prefs->SetLastActivePingDay(id, last_active_ping_day);
859 } 876 }
860 if (active_bit) 877 if (active_bit)
861 prefs->SetActiveBit(id, true); 878 prefs->SetActiveBit(id, true);
862 879
863 MessageLoop message_loop;
864 scoped_refptr<ExtensionUpdater> updater( 880 scoped_refptr<ExtensionUpdater> updater(
865 new ExtensionUpdater(&service, service.pref_service(), 881 new ExtensionUpdater(&service, service.pref_service(),
866 kUpdateFrequencySecs)); 882 kUpdateFrequencySecs));
867 updater->Start(); 883 updater->Start();
868 updater->set_blacklist_checks_enabled(false); 884 updater->set_blacklist_checks_enabled(false);
869 885
870 // Make the updater do manifest fetching, and note the urls it tries to 886 // Make the updater do manifest fetching, and note the urls it tries to
871 // fetch. 887 // fetch.
872 std::vector<GURL> fetched_urls; 888 std::vector<GURL> fetched_urls;
873 updater->CheckNow(); 889 updater->CheckNow();
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
965 TEST(ExtensionUpdaterTest, TestExtensionUpdateCheckRequestsPending) { 981 TEST(ExtensionUpdaterTest, TestExtensionUpdateCheckRequestsPending) {
966 ExtensionUpdaterTest::TestExtensionUpdateCheckRequests(true); 982 ExtensionUpdaterTest::TestExtensionUpdateCheckRequests(true);
967 } 983 }
968 984
969 // This test is disabled on Mac, see http://crbug.com/26035. 985 // This test is disabled on Mac, see http://crbug.com/26035.
970 TEST(ExtensionUpdaterTest, TestBlacklistUpdateCheckRequests) { 986 TEST(ExtensionUpdaterTest, TestBlacklistUpdateCheckRequests) {
971 ExtensionUpdaterTest::TestBlacklistUpdateCheckRequests(); 987 ExtensionUpdaterTest::TestBlacklistUpdateCheckRequests();
972 } 988 }
973 989
974 TEST(ExtensionUpdaterTest, TestUpdateUrlData) { 990 TEST(ExtensionUpdaterTest, TestUpdateUrlData) {
991 MessageLoop message_loop;
992 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
993
975 ExtensionUpdaterTest::TestUpdateUrlDataEmpty(); 994 ExtensionUpdaterTest::TestUpdateUrlDataEmpty();
976 ExtensionUpdaterTest::TestUpdateUrlDataSimple(); 995 ExtensionUpdaterTest::TestUpdateUrlDataSimple();
977 ExtensionUpdaterTest::TestUpdateUrlDataCompound(); 996 ExtensionUpdaterTest::TestUpdateUrlDataCompound();
978 ExtensionUpdaterTest::TestUpdateUrlDataFromGallery( 997 ExtensionUpdaterTest::TestUpdateUrlDataFromGallery(
979 Extension::GalleryUpdateUrl(false).spec()); 998 Extension::GalleryUpdateUrl(false).spec());
980 ExtensionUpdaterTest::TestUpdateUrlDataFromGallery( 999 ExtensionUpdaterTest::TestUpdateUrlDataFromGallery(
981 Extension::GalleryUpdateUrl(true).spec()); 1000 Extension::GalleryUpdateUrl(true).spec());
982 } 1001 }
983 1002
984 TEST(ExtensionUpdaterTest, TestDetermineUpdates) { 1003 TEST(ExtensionUpdaterTest, TestDetermineUpdates) {
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
1037 } 1056 }
1038 } 1057 }
1039 } 1058 }
1040 } 1059 }
1041 1060
1042 TEST(ExtensionUpdaterTest, TestHandleManifestResults) { 1061 TEST(ExtensionUpdaterTest, TestHandleManifestResults) {
1043 ExtensionUpdaterTest::TestHandleManifestResults(); 1062 ExtensionUpdaterTest::TestHandleManifestResults();
1044 } 1063 }
1045 1064
1046 TEST(ExtensionUpdaterTest, TestManifestFetchesBuilderAddExtension) { 1065 TEST(ExtensionUpdaterTest, TestManifestFetchesBuilderAddExtension) {
1066 MessageLoop message_loop;
1067 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
1068
1047 MockService service; 1069 MockService service;
1048 ManifestFetchesBuilder builder(&service); 1070 ManifestFetchesBuilder builder(&service);
1049 1071
1050 // Non-internal non-external extensions should be rejected. 1072 // Non-internal non-external extensions should be rejected.
1051 { 1073 {
1052 ExtensionList extensions; 1074 ExtensionList extensions;
1053 service.CreateTestExtensions(1, 1, &extensions, NULL, Extension::INVALID); 1075 service.CreateTestExtensions(1, 1, &extensions, NULL, Extension::INVALID);
1054 ASSERT_FALSE(extensions.empty()); 1076 ASSERT_FALSE(extensions.empty());
1055 builder.AddExtension(*extensions[0]); 1077 builder.AddExtension(*extensions[0]);
1056 EXPECT_TRUE(builder.GetFetches().empty()); 1078 EXPECT_TRUE(builder.GetFetches().empty());
(...skipping 27 matching lines...) Expand all
1084 std::vector<ManifestFetchData*> fetches = builder.GetFetches(); 1106 std::vector<ManifestFetchData*> fetches = builder.GetFetches();
1085 ASSERT_EQ(1u, fetches.size()); 1107 ASSERT_EQ(1u, fetches.size());
1086 scoped_ptr<ManifestFetchData> fetch(fetches[0]); 1108 scoped_ptr<ManifestFetchData> fetch(fetches[0]);
1087 fetches.clear(); 1109 fetches.clear();
1088 EXPECT_FALSE(fetch->base_url().is_empty()); 1110 EXPECT_FALSE(fetch->base_url().is_empty());
1089 EXPECT_FALSE(fetch->full_url().is_empty()); 1111 EXPECT_FALSE(fetch->full_url().is_empty());
1090 } 1112 }
1091 1113
1092 TEST(ExtensionUpdaterTest, TestStartUpdateCheckMemory) { 1114 TEST(ExtensionUpdaterTest, TestStartUpdateCheckMemory) {
1093 MessageLoop message_loop; 1115 MessageLoop message_loop;
1116 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
1117
1094 ServiceForManifestTests service; 1118 ServiceForManifestTests service;
1095 TestURLFetcherFactory factory; 1119 TestURLFetcherFactory factory;
1096 URLFetcher::set_factory(&factory); 1120 URLFetcher::set_factory(&factory);
1097 scoped_refptr<ExtensionUpdater> updater( 1121 scoped_refptr<ExtensionUpdater> updater(
1098 new ExtensionUpdater(&service, service.pref_service(), 1122 new ExtensionUpdater(&service, service.pref_service(),
1099 kUpdateFrequencySecs)); 1123 kUpdateFrequencySecs));
1100 updater->Start(); 1124 updater->Start();
1101 updater->StartUpdateCheck(new ManifestFetchData(GURL())); 1125 updater->StartUpdateCheck(new ManifestFetchData(GURL()));
1102 // This should delete the newly-created ManifestFetchData. 1126 // This should delete the newly-created ManifestFetchData.
1103 updater->StartUpdateCheck(new ManifestFetchData(GURL())); 1127 updater->StartUpdateCheck(new ManifestFetchData(GURL()));
1104 // This should add into |manifests_pending_|. 1128 // This should add into |manifests_pending_|.
1105 updater->StartUpdateCheck(new ManifestFetchData( 1129 updater->StartUpdateCheck(new ManifestFetchData(
1106 GURL("http://www.google.com"))); 1130 GURL("http://www.google.com")));
1107 // This should clear out |manifests_pending_|. 1131 // This should clear out |manifests_pending_|.
1108 updater->Stop(); 1132 updater->Stop();
1109 } 1133 }
1110 1134
1111 TEST(ExtensionUpdaterTest, TestAfterStopBehavior) { 1135 TEST(ExtensionUpdaterTest, TestAfterStopBehavior) {
1112 MessageLoop message_loop; 1136 MessageLoop message_loop;
1137 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
1138
1113 ServiceForManifestTests service; 1139 ServiceForManifestTests service;
1114 scoped_refptr<ExtensionUpdater> updater( 1140 scoped_refptr<ExtensionUpdater> updater(
1115 new ExtensionUpdater(&service, service.pref_service(), 1141 new ExtensionUpdater(&service, service.pref_service(),
1116 kUpdateFrequencySecs)); 1142 kUpdateFrequencySecs));
1117 updater->Start(); 1143 updater->Start();
1118 updater->Stop(); 1144 updater->Stop();
1119 // All the below functions should do nothing. 1145 // All the below functions should do nothing.
1120 updater->OnCRXFileWritten("", FilePath(), GURL()); 1146 updater->OnCRXFileWritten("", FilePath(), GURL());
1121 GURL dummy_gurl; 1147 GURL dummy_gurl;
1122 ManifestFetchData dummy_manifest_fetch_data(dummy_gurl); 1148 ManifestFetchData dummy_manifest_fetch_data(dummy_gurl);
1123 updater->HandleManifestResults(dummy_manifest_fetch_data, 1149 updater->HandleManifestResults(dummy_manifest_fetch_data,
1124 UpdateManifest::Results()); 1150 UpdateManifest::Results());
1125 } 1151 }
1126 1152
1127 // TODO(asargent) - (http://crbug.com/12780) add tests for: 1153 // TODO(asargent) - (http://crbug.com/12780) add tests for:
1128 // -prodversionmin (shouldn't update if browser version too old) 1154 // -prodversionmin (shouldn't update if browser version too old)
1129 // -manifests & updates arriving out of order / interleaved 1155 // -manifests & updates arriving out of order / interleaved
1130 // -malformed update url (empty, file://, has query, has a # fragment, etc.) 1156 // -malformed update url (empty, file://, has query, has a # fragment, etc.)
1131 // -An extension gets uninstalled while updates are in progress (so it doesn't 1157 // -An extension gets uninstalled while updates are in progress (so it doesn't
1132 // "come back from the dead") 1158 // "come back from the dead")
1133 // -An extension gets manually updated to v3 while we're downloading v2 (ie 1159 // -An extension gets manually updated to v3 while we're downloading v2 (ie
1134 // you don't get downgraded accidentally) 1160 // you don't get downgraded accidentally)
1135 // -An update manifest mentions multiple updates 1161 // -An update manifest mentions multiple updates
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_prefs_unittest.cc ('k') | chrome/browser/extensions/test_extension_prefs.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698