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

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 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
305 const std::string& url, 305 const std::string& url,
306 UpdateManifest::Results* results) { 306 UpdateManifest::Results* results) {
307 UpdateManifest::Result result; 307 UpdateManifest::Result result;
308 result.extension_id = id; 308 result.extension_id = id;
309 result.version = version; 309 result.version = version;
310 result.crx_url = GURL(url); 310 result.crx_url = GURL(url);
311 results->list.push_back(result); 311 results->list.push_back(result);
312 } 312 }
313 313
314 static void TestExtensionUpdateCheckRequests(bool pending) { 314 static void TestExtensionUpdateCheckRequests(bool pending) {
315 MessageLoop message_loop;
316 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
317 BrowserThread io_thread(BrowserThread::IO);
318 io_thread.Start();
319
315 // Create an extension with an update_url. 320 // Create an extension with an update_url.
316 ServiceForManifestTests service; 321 ServiceForManifestTests service;
317 std::string update_url("http://foo.com/bar"); 322 std::string update_url("http://foo.com/bar");
318 ExtensionList extensions; 323 ExtensionList extensions;
319 PendingExtensionMap pending_extensions; 324 PendingExtensionMap pending_extensions;
320 if (pending) { 325 if (pending) {
321 CreateTestPendingExtensions(1, GURL(update_url), &pending_extensions); 326 CreateTestPendingExtensions(1, GURL(update_url), &pending_extensions);
322 service.set_pending_extensions(pending_extensions); 327 service.set_pending_extensions(pending_extensions);
323 } else { 328 } else {
324 service.CreateTestExtensions(1, 1, &extensions, &update_url, 329 service.CreateTestExtensions(1, 1, &extensions, &update_url,
325 Extension::INTERNAL); 330 Extension::INTERNAL);
326 service.set_extensions(extensions); 331 service.set_extensions(extensions);
327 } 332 }
328 333
329 // Setup and start the updater. 334 // Set up and start the updater.
330 MessageLoop message_loop;
331 BrowserThread io_thread(BrowserThread::IO);
332 io_thread.Start();
333
334 TestURLFetcherFactory factory; 335 TestURLFetcherFactory factory;
335 URLFetcher::set_factory(&factory); 336 URLFetcher::set_factory(&factory);
336 scoped_refptr<ExtensionUpdater> updater( 337 scoped_refptr<ExtensionUpdater> updater(
337 new ExtensionUpdater(&service, service.pref_service(), 60*60*24)); 338 new ExtensionUpdater(&service, service.pref_service(), 60*60*24));
338 updater->Start(); 339 updater->Start();
339 340
340 // Tell the update that it's time to do update checks. 341 // Tell the update that it's time to do update checks.
341 SimulateTimerFired(updater.get()); 342 SimulateTimerFired(updater.get());
342 343
343 // Get the url our mock fetcher was asked to fetch. 344 // Get the url our mock fetcher was asked to fetch.
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after
483 // Make sure that extensions that update from the gallery ignore any 484 // Make sure that extensions that update from the gallery ignore any
484 // update URL data. 485 // update URL data.
485 const std::string& update_url = fetch->full_url().spec(); 486 const std::string& update_url = fetch->full_url().spec();
486 std::string::size_type x = update_url.find("x="); 487 std::string::size_type x = update_url.find("x=");
487 EXPECT_NE(std::string::npos, x); 488 EXPECT_NE(std::string::npos, x);
488 std::string::size_type ap = update_url.find("ap%3D", x); 489 std::string::size_type ap = update_url.find("ap%3D", x);
489 EXPECT_EQ(std::string::npos, ap); 490 EXPECT_EQ(std::string::npos, ap);
490 } 491 }
491 492
492 static void TestDetermineUpdates() { 493 static void TestDetermineUpdates() {
494 MessageLoop message_loop;
495 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
496
493 // Create a set of test extensions 497 // Create a set of test extensions
494 ServiceForManifestTests service; 498 ServiceForManifestTests service;
495 ExtensionList tmp; 499 ExtensionList tmp;
496 service.CreateTestExtensions(1, 3, &tmp, NULL, Extension::INTERNAL); 500 service.CreateTestExtensions(1, 3, &tmp, NULL, Extension::INTERNAL);
497 service.set_extensions(tmp); 501 service.set_extensions(tmp);
498 502
499 MessageLoop message_loop;
500 scoped_refptr<ExtensionUpdater> updater( 503 scoped_refptr<ExtensionUpdater> updater(
501 new ExtensionUpdater(&service, service.pref_service(), 504 new ExtensionUpdater(&service, service.pref_service(),
502 kUpdateFrequencySecs)); 505 kUpdateFrequencySecs));
503 updater->Start(); 506 updater->Start();
504 507
505 // Check passing an empty list of parse results to DetermineUpdates 508 // Check passing an empty list of parse results to DetermineUpdates
506 ManifestFetchData fetch_data(GURL("http://localhost/foo")); 509 ManifestFetchData fetch_data(GURL("http://localhost/foo"));
507 UpdateManifest::Results updates; 510 UpdateManifest::Results updates;
508 std::vector<int> updateable = updater->DetermineUpdates(fetch_data, 511 std::vector<int> updateable = updater->DetermineUpdates(fetch_data,
509 updates); 512 updates);
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
565 MessageLoop ui_loop; 568 MessageLoop ui_loop;
566 BrowserThread ui_thread(BrowserThread::UI, &ui_loop); 569 BrowserThread ui_thread(BrowserThread::UI, &ui_loop);
567 BrowserThread file_thread(BrowserThread::FILE); 570 BrowserThread file_thread(BrowserThread::FILE);
568 file_thread.Start(); 571 file_thread.Start();
569 BrowserThread io_thread(BrowserThread::IO); 572 BrowserThread io_thread(BrowserThread::IO);
570 io_thread.Start(); 573 io_thread.Start();
571 574
572 TestURLFetcherFactory factory; 575 TestURLFetcherFactory factory;
573 TestURLFetcher* fetcher = NULL; 576 TestURLFetcher* fetcher = NULL;
574 URLFetcher::set_factory(&factory); 577 URLFetcher::set_factory(&factory);
575 ServiceForDownloadTests service; 578 scoped_ptr<ServiceForDownloadTests> service(new ServiceForDownloadTests);
576 scoped_refptr<ExtensionUpdater> updater( 579 scoped_refptr<ExtensionUpdater> updater(
577 new ExtensionUpdater(&service, service.pref_service(), 580 new ExtensionUpdater(service.get(), service->pref_service(),
578 kUpdateFrequencySecs)); 581 kUpdateFrequencySecs));
579 updater->Start(); 582 updater->Start();
580 583
581 GURL url1("http://localhost/manifest1"); 584 GURL url1("http://localhost/manifest1");
582 GURL url2("http://localhost/manifest2"); 585 GURL url2("http://localhost/manifest2");
583 586
584 // Request 2 update checks - the first should begin immediately and the 587 // Request 2 update checks - the first should begin immediately and the
585 // second one should be queued up. 588 // second one should be queued up.
586 ManifestFetchData* fetch1 = new ManifestFetchData(url1); 589 ManifestFetchData* fetch1 = new ManifestFetchData(url1);
587 ManifestFetchData* fetch2 = new ManifestFetchData(url2); 590 ManifestFetchData* fetch2 = new ManifestFetchData(url2);
(...skipping 28 matching lines...) Expand all
616 fetcher->delegate()->OnURLFetchComplete( 619 fetcher->delegate()->OnURLFetchComplete(
617 fetcher, url2, net::URLRequestStatus(), 200, ResponseCookies(), 620 fetcher, url2, net::URLRequestStatus(), 200, ResponseCookies(),
618 kValidXml); 621 kValidXml);
619 622
620 // This should run the manifest parsing, then we want to make sure that our 623 // This should run the manifest parsing, then we want to make sure that our
621 // service was called with GetExtensionById with the matching id from 624 // service was called with GetExtensionById with the matching id from
622 // kValidXml. 625 // kValidXml.
623 file_thread.Stop(); 626 file_thread.Stop();
624 io_thread.Stop(); 627 io_thread.Stop();
625 ui_loop.RunAllPending(); 628 ui_loop.RunAllPending();
626 EXPECT_EQ("12345", service.last_inquired_extension_id()); 629 EXPECT_EQ("12345", service->last_inquired_extension_id());
627 xmlCleanupGlobals(); 630 xmlCleanupGlobals();
631
632 // The FILE thread is needed for |service|'s cleanup,
633 // because of ImportantFileWriter.
634 file_thread.Start();
635 service.reset();
628 } 636 }
629 637
630 static void TestSingleExtensionDownloading(bool pending) { 638 static void TestSingleExtensionDownloading(bool pending) {
631 MessageLoop ui_loop; 639 MessageLoop ui_loop;
632 BrowserThread ui_thread(BrowserThread::UI, &ui_loop); 640 BrowserThread ui_thread(BrowserThread::UI, &ui_loop);
633 BrowserThread file_thread(BrowserThread::FILE); 641 BrowserThread file_thread(BrowserThread::FILE);
634 file_thread.Start(); 642 file_thread.Start();
635 BrowserThread io_thread(BrowserThread::IO); 643 BrowserThread io_thread(BrowserThread::IO);
636 io_thread.Start(); 644 io_thread.Start();
637 645
638 TestURLFetcherFactory factory; 646 TestURLFetcherFactory factory;
639 TestURLFetcher* fetcher = NULL; 647 TestURLFetcher* fetcher = NULL;
640 URLFetcher::set_factory(&factory); 648 URLFetcher::set_factory(&factory);
641 ServiceForDownloadTests service; 649 scoped_ptr<ServiceForDownloadTests> service(new ServiceForDownloadTests);
642 scoped_refptr<ExtensionUpdater> updater( 650 scoped_refptr<ExtensionUpdater> updater(
643 new ExtensionUpdater(&service, service.pref_service(), 651 new ExtensionUpdater(service.get(), service->pref_service(),
644 kUpdateFrequencySecs)); 652 kUpdateFrequencySecs));
645 updater->Start(); 653 updater->Start();
646 654
647 GURL test_url("http://localhost/extension.crx"); 655 GURL test_url("http://localhost/extension.crx");
648 656
649 std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; 657 std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
650 std::string hash = ""; 658 std::string hash = "";
651 scoped_ptr<Version> version(Version::GetVersionFromString("0.0.1")); 659 scoped_ptr<Version> version(Version::GetVersionFromString("0.0.1"));
652 ASSERT_TRUE(version.get()); 660 ASSERT_TRUE(version.get());
653 updater->FetchUpdatedExtension(id, test_url, hash, version->GetString()); 661 updater->FetchUpdatedExtension(id, test_url, hash, version->GetString());
654 662
655 if (pending) { 663 if (pending) {
656 const bool kIsFromSync = true; 664 const bool kIsFromSync = true;
657 const bool kInstallSilently = true; 665 const bool kInstallSilently = true;
658 const Extension::State kInitialState = Extension::ENABLED; 666 const Extension::State kInitialState = Extension::ENABLED;
659 const bool kInitialIncognitoEnabled = false; 667 const bool kInitialIncognitoEnabled = false;
660 PendingExtensionMap pending_extensions; 668 PendingExtensionMap pending_extensions;
661 pending_extensions[id] = 669 pending_extensions[id] =
662 PendingExtensionInfo(test_url, &ShouldAlwaysInstall, kIsFromSync, 670 PendingExtensionInfo(test_url, &ShouldAlwaysInstall, kIsFromSync,
663 kInstallSilently, kInitialState, 671 kInstallSilently, kInitialState,
664 kInitialIncognitoEnabled, Extension::INTERNAL); 672 kInitialIncognitoEnabled, Extension::INTERNAL);
665 service.set_pending_extensions(pending_extensions); 673 service->set_pending_extensions(pending_extensions);
666 } 674 }
667 675
668 // Call back the ExtensionUpdater with a 200 response and some test data 676 // Call back the ExtensionUpdater with a 200 response and some test data
669 std::string extension_data("whatever"); 677 std::string extension_data("whatever");
670 fetcher = factory.GetFetcherByID(ExtensionUpdater::kExtensionFetcherId); 678 fetcher = factory.GetFetcherByID(ExtensionUpdater::kExtensionFetcherId);
671 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL); 679 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL);
672 EXPECT_TRUE(fetcher->load_flags() == expected_load_flags); 680 EXPECT_TRUE(fetcher->load_flags() == expected_load_flags);
673 fetcher->delegate()->OnURLFetchComplete( 681 fetcher->delegate()->OnURLFetchComplete(
674 fetcher, test_url, net::URLRequestStatus(), 200, ResponseCookies(), 682 fetcher, test_url, net::URLRequestStatus(), 200, ResponseCookies(),
675 extension_data); 683 extension_data);
676 684
677 file_thread.Stop(); 685 file_thread.Stop();
678 ui_loop.RunAllPending(); 686 ui_loop.RunAllPending();
679 687
680 // Expect that ExtensionUpdater asked the mock extensions service to install 688 // Expect that ExtensionUpdater asked the mock extensions service to install
681 // a file with the test data for the right id. 689 // a file with the test data for the right id.
682 EXPECT_EQ(id, service.extension_id()); 690 EXPECT_EQ(id, service->extension_id());
683 FilePath tmpfile_path = service.install_path(); 691 FilePath tmpfile_path = service->install_path();
684 EXPECT_FALSE(tmpfile_path.empty()); 692 EXPECT_FALSE(tmpfile_path.empty());
685 EXPECT_EQ(test_url, service.download_url()); 693 EXPECT_EQ(test_url, service->download_url());
686 std::string file_contents; 694 std::string file_contents;
687 EXPECT_TRUE(file_util::ReadFileToString(tmpfile_path, &file_contents)); 695 EXPECT_TRUE(file_util::ReadFileToString(tmpfile_path, &file_contents));
688 EXPECT_TRUE(extension_data == file_contents); 696 EXPECT_TRUE(extension_data == file_contents);
689 697
698 // The FILE thread is needed for |service|'s cleanup,
699 // because of ImportantFileWriter.
700 file_thread.Start();
701 service.reset();
702
690 file_util::Delete(tmpfile_path, false); 703 file_util::Delete(tmpfile_path, false);
691 URLFetcher::set_factory(NULL); 704 URLFetcher::set_factory(NULL);
692 } 705 }
693 706
694 static void TestBlacklistDownloading() { 707 static void TestBlacklistDownloading() {
695 MessageLoop message_loop; 708 MessageLoop message_loop;
696 BrowserThread ui_thread(BrowserThread::UI, &message_loop); 709 BrowserThread ui_thread(BrowserThread::UI, &message_loop);
710 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
697 BrowserThread io_thread(BrowserThread::IO); 711 BrowserThread io_thread(BrowserThread::IO);
698 io_thread.Start(); 712 io_thread.Start();
699 713
700 TestURLFetcherFactory factory; 714 TestURLFetcherFactory factory;
701 TestURLFetcher* fetcher = NULL; 715 TestURLFetcher* fetcher = NULL;
702 URLFetcher::set_factory(&factory); 716 URLFetcher::set_factory(&factory);
703 ServiceForBlacklistTests service; 717 ServiceForBlacklistTests service;
704 scoped_refptr<ExtensionUpdater> updater( 718 scoped_refptr<ExtensionUpdater> updater(
705 new ExtensionUpdater(&service, service.pref_service(), 719 new ExtensionUpdater(&service, service.pref_service(),
706 kUpdateFrequencySecs)); 720 kUpdateFrequencySecs));
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
801 815
802 // Make sure the correct crx contents were passed for the update call. 816 // Make sure the correct crx contents were passed for the update call.
803 std::string file_contents; 817 std::string file_contents;
804 EXPECT_TRUE(file_util::ReadFileToString(service.install_path(), 818 EXPECT_TRUE(file_util::ReadFileToString(service.install_path(),
805 &file_contents)); 819 &file_contents));
806 EXPECT_TRUE(extension_data2 == file_contents); 820 EXPECT_TRUE(extension_data2 == file_contents);
807 file_util::Delete(service.install_path(), false); 821 file_util::Delete(service.install_path(), false);
808 } 822 }
809 823
810 static void TestGalleryRequests(int ping_days) { 824 static void TestGalleryRequests(int ping_days) {
825 MessageLoop message_loop;
826 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
827
811 TestURLFetcherFactory factory; 828 TestURLFetcherFactory factory;
812 URLFetcher::set_factory(&factory); 829 URLFetcher::set_factory(&factory);
813 830
814 // Set up 2 mock extensions, one with a google.com update url and one 831 // Set up 2 mock extensions, one with a google.com update url and one
815 // without. 832 // without.
816 ServiceForManifestTests service; 833 ServiceForManifestTests service;
817 ExtensionList tmp; 834 ExtensionList tmp;
818 GURL url1("http://clients2.google.com/service/update2/crx"); 835 GURL url1("http://clients2.google.com/service/update2/crx");
819 GURL url2("http://www.somewebsite.com"); 836 GURL url2("http://www.somewebsite.com");
820 service.CreateTestExtensions(1, 1, &tmp, &url1.possibly_invalid_spec(), 837 service.CreateTestExtensions(1, 1, &tmp, &url1.possibly_invalid_spec(),
821 Extension::INTERNAL); 838 Extension::INTERNAL);
822 service.CreateTestExtensions(2, 1, &tmp, &url2.possibly_invalid_spec(), 839 service.CreateTestExtensions(2, 1, &tmp, &url2.possibly_invalid_spec(),
823 Extension::INTERNAL); 840 Extension::INTERNAL);
824 EXPECT_EQ(2u, tmp.size()); 841 EXPECT_EQ(2u, tmp.size());
825 service.set_extensions(tmp); 842 service.set_extensions(tmp);
826 843
827 Time now = Time::Now(); 844 Time now = Time::Now();
828 if (ping_days == 0) { 845 if (ping_days == 0) {
829 service.extension_prefs()->SetLastPingDay( 846 service.extension_prefs()->SetLastPingDay(
830 tmp[0]->id(), now - TimeDelta::FromSeconds(15)); 847 tmp[0]->id(), now - TimeDelta::FromSeconds(15));
831 } else if (ping_days > 0) { 848 } else if (ping_days > 0) {
832 Time last_ping_day = 849 Time last_ping_day =
833 now - TimeDelta::FromDays(ping_days) - TimeDelta::FromSeconds(15); 850 now - TimeDelta::FromDays(ping_days) - TimeDelta::FromSeconds(15);
834 service.extension_prefs()->SetLastPingDay(tmp[0]->id(), last_ping_day); 851 service.extension_prefs()->SetLastPingDay(tmp[0]->id(), last_ping_day);
835 } 852 }
836 853
837 MessageLoop message_loop;
838 scoped_refptr<ExtensionUpdater> updater( 854 scoped_refptr<ExtensionUpdater> updater(
839 new ExtensionUpdater(&service, service.pref_service(), 855 new ExtensionUpdater(&service, service.pref_service(),
840 kUpdateFrequencySecs)); 856 kUpdateFrequencySecs));
841 updater->Start(); 857 updater->Start();
842 updater->set_blacklist_checks_enabled(false); 858 updater->set_blacklist_checks_enabled(false);
843 859
844 // Make the updater do manifest fetching, and note the urls it tries to 860 // Make the updater do manifest fetching, and note the urls it tries to
845 // fetch. 861 // fetch.
846 std::vector<GURL> fetched_urls; 862 std::vector<GURL> fetched_urls;
847 updater->CheckNow(); 863 updater->CheckNow();
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
929 TEST(ExtensionUpdaterTest, TestExtensionUpdateCheckRequestsPending) { 945 TEST(ExtensionUpdaterTest, TestExtensionUpdateCheckRequestsPending) {
930 ExtensionUpdaterTest::TestExtensionUpdateCheckRequests(true); 946 ExtensionUpdaterTest::TestExtensionUpdateCheckRequests(true);
931 } 947 }
932 948
933 // This test is disabled on Mac, see http://crbug.com/26035. 949 // This test is disabled on Mac, see http://crbug.com/26035.
934 TEST(ExtensionUpdaterTest, TestBlacklistUpdateCheckRequests) { 950 TEST(ExtensionUpdaterTest, TestBlacklistUpdateCheckRequests) {
935 ExtensionUpdaterTest::TestBlacklistUpdateCheckRequests(); 951 ExtensionUpdaterTest::TestBlacklistUpdateCheckRequests();
936 } 952 }
937 953
938 TEST(ExtensionUpdaterTest, TestUpdateUrlData) { 954 TEST(ExtensionUpdaterTest, TestUpdateUrlData) {
955 MessageLoop message_loop;
956 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
957
939 ExtensionUpdaterTest::TestUpdateUrlDataEmpty(); 958 ExtensionUpdaterTest::TestUpdateUrlDataEmpty();
940 ExtensionUpdaterTest::TestUpdateUrlDataSimple(); 959 ExtensionUpdaterTest::TestUpdateUrlDataSimple();
941 ExtensionUpdaterTest::TestUpdateUrlDataCompound(); 960 ExtensionUpdaterTest::TestUpdateUrlDataCompound();
942 ExtensionUpdaterTest::TestUpdateUrlDataFromGallery( 961 ExtensionUpdaterTest::TestUpdateUrlDataFromGallery(
943 Extension::GalleryUpdateUrl(false).spec()); 962 Extension::GalleryUpdateUrl(false).spec());
944 ExtensionUpdaterTest::TestUpdateUrlDataFromGallery( 963 ExtensionUpdaterTest::TestUpdateUrlDataFromGallery(
945 Extension::GalleryUpdateUrl(true).spec()); 964 Extension::GalleryUpdateUrl(true).spec());
946 } 965 }
947 966
948 TEST(ExtensionUpdaterTest, TestDetermineUpdates) { 967 TEST(ExtensionUpdaterTest, TestDetermineUpdates) {
(...skipping 30 matching lines...) Expand all
979 ExtensionUpdaterTest::TestGalleryRequests(0); 998 ExtensionUpdaterTest::TestGalleryRequests(0);
980 ExtensionUpdaterTest::TestGalleryRequests(1); 999 ExtensionUpdaterTest::TestGalleryRequests(1);
981 ExtensionUpdaterTest::TestGalleryRequests(5); 1000 ExtensionUpdaterTest::TestGalleryRequests(5);
982 } 1001 }
983 1002
984 TEST(ExtensionUpdaterTest, TestHandleManifestResults) { 1003 TEST(ExtensionUpdaterTest, TestHandleManifestResults) {
985 ExtensionUpdaterTest::TestHandleManifestResults(); 1004 ExtensionUpdaterTest::TestHandleManifestResults();
986 } 1005 }
987 1006
988 TEST(ExtensionUpdaterTest, TestManifestFetchesBuilderAddExtension) { 1007 TEST(ExtensionUpdaterTest, TestManifestFetchesBuilderAddExtension) {
1008 MessageLoop message_loop;
1009 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
1010
989 MockService service; 1011 MockService service;
990 ManifestFetchesBuilder builder(&service); 1012 ManifestFetchesBuilder builder(&service);
991 1013
992 // Non-internal non-external extensions should be rejected. 1014 // Non-internal non-external extensions should be rejected.
993 { 1015 {
994 ExtensionList extensions; 1016 ExtensionList extensions;
995 service.CreateTestExtensions(1, 1, &extensions, NULL, Extension::INVALID); 1017 service.CreateTestExtensions(1, 1, &extensions, NULL, Extension::INVALID);
996 ASSERT_FALSE(extensions.empty()); 1018 ASSERT_FALSE(extensions.empty());
997 builder.AddExtension(*extensions[0]); 1019 builder.AddExtension(*extensions[0]);
998 EXPECT_TRUE(builder.GetFetches().empty()); 1020 EXPECT_TRUE(builder.GetFetches().empty());
(...skipping 27 matching lines...) Expand all
1026 std::vector<ManifestFetchData*> fetches = builder.GetFetches(); 1048 std::vector<ManifestFetchData*> fetches = builder.GetFetches();
1027 ASSERT_EQ(1u, fetches.size()); 1049 ASSERT_EQ(1u, fetches.size());
1028 scoped_ptr<ManifestFetchData> fetch(fetches[0]); 1050 scoped_ptr<ManifestFetchData> fetch(fetches[0]);
1029 fetches.clear(); 1051 fetches.clear();
1030 EXPECT_FALSE(fetch->base_url().is_empty()); 1052 EXPECT_FALSE(fetch->base_url().is_empty());
1031 EXPECT_FALSE(fetch->full_url().is_empty()); 1053 EXPECT_FALSE(fetch->full_url().is_empty());
1032 } 1054 }
1033 1055
1034 TEST(ExtensionUpdaterTest, TestStartUpdateCheckMemory) { 1056 TEST(ExtensionUpdaterTest, TestStartUpdateCheckMemory) {
1035 MessageLoop message_loop; 1057 MessageLoop message_loop;
1058 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
1059
1036 ServiceForManifestTests service; 1060 ServiceForManifestTests service;
1037 TestURLFetcherFactory factory; 1061 TestURLFetcherFactory factory;
1038 URLFetcher::set_factory(&factory); 1062 URLFetcher::set_factory(&factory);
1039 scoped_refptr<ExtensionUpdater> updater( 1063 scoped_refptr<ExtensionUpdater> updater(
1040 new ExtensionUpdater(&service, service.pref_service(), 1064 new ExtensionUpdater(&service, service.pref_service(),
1041 kUpdateFrequencySecs)); 1065 kUpdateFrequencySecs));
1042 updater->Start(); 1066 updater->Start();
1043 updater->StartUpdateCheck(new ManifestFetchData(GURL())); 1067 updater->StartUpdateCheck(new ManifestFetchData(GURL()));
1044 // This should delete the newly-created ManifestFetchData. 1068 // This should delete the newly-created ManifestFetchData.
1045 updater->StartUpdateCheck(new ManifestFetchData(GURL())); 1069 updater->StartUpdateCheck(new ManifestFetchData(GURL()));
1046 // This should add into |manifests_pending_|. 1070 // This should add into |manifests_pending_|.
1047 updater->StartUpdateCheck(new ManifestFetchData( 1071 updater->StartUpdateCheck(new ManifestFetchData(
1048 GURL("http://www.google.com"))); 1072 GURL("http://www.google.com")));
1049 // This should clear out |manifests_pending_|. 1073 // This should clear out |manifests_pending_|.
1050 updater->Stop(); 1074 updater->Stop();
1051 } 1075 }
1052 1076
1053 TEST(ExtensionUpdaterTest, TestAfterStopBehavior) { 1077 TEST(ExtensionUpdaterTest, TestAfterStopBehavior) {
1054 MessageLoop message_loop; 1078 MessageLoop message_loop;
1079 BrowserThread file_thread(BrowserThread::FILE, &message_loop);
1080
1055 ServiceForManifestTests service; 1081 ServiceForManifestTests service;
1056 scoped_refptr<ExtensionUpdater> updater( 1082 scoped_refptr<ExtensionUpdater> updater(
1057 new ExtensionUpdater(&service, service.pref_service(), 1083 new ExtensionUpdater(&service, service.pref_service(),
1058 kUpdateFrequencySecs)); 1084 kUpdateFrequencySecs));
1059 updater->Start(); 1085 updater->Start();
1060 updater->Stop(); 1086 updater->Stop();
1061 // All the below functions should do nothing. 1087 // All the below functions should do nothing.
1062 updater->OnCRXFileWritten("", FilePath(), GURL()); 1088 updater->OnCRXFileWritten("", FilePath(), GURL());
1063 GURL dummy_gurl; 1089 GURL dummy_gurl;
1064 ManifestFetchData dummy_manifest_fetch_data(dummy_gurl); 1090 ManifestFetchData dummy_manifest_fetch_data(dummy_gurl);
1065 updater->HandleManifestResults(dummy_manifest_fetch_data, 1091 updater->HandleManifestResults(dummy_manifest_fetch_data,
1066 UpdateManifest::Results()); 1092 UpdateManifest::Results());
1067 } 1093 }
1068 1094
1069 // TODO(asargent) - (http://crbug.com/12780) add tests for: 1095 // TODO(asargent) - (http://crbug.com/12780) add tests for:
1070 // -prodversionmin (shouldn't update if browser version too old) 1096 // -prodversionmin (shouldn't update if browser version too old)
1071 // -manifests & updates arriving out of order / interleaved 1097 // -manifests & updates arriving out of order / interleaved
1072 // -malformed update url (empty, file://, has query, has a # fragment, etc.) 1098 // -malformed update url (empty, file://, has query, has a # fragment, etc.)
1073 // -An extension gets uninstalled while updates are in progress (so it doesn't 1099 // -An extension gets uninstalled while updates are in progress (so it doesn't
1074 // "come back from the dead") 1100 // "come back from the dead")
1075 // -An extension gets manually updated to v3 while we're downloading v2 (ie 1101 // -An extension gets manually updated to v3 while we're downloading v2 (ie
1076 // you don't get downgraded accidentally) 1102 // you don't get downgraded accidentally)
1077 // -An update manifest mentions multiple updates 1103 // -An update manifest mentions multiple updates
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698