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

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

Issue 540673002: Enable forced extension updates on NaCl arch mismatch. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: kill stale comment Created 6 years, 3 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
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 <list> 5 #include <list>
6 #include <map> 6 #include <map>
7 #include <set> 7 #include <set>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 const GURL&, 146 const GURL&,
147 const std::string&, 147 const std::string&,
148 const PingResult&, 148 const PingResult&,
149 const std::set<int>&)); 149 const std::set<int>&));
150 MOCK_METHOD2(GetPingDataForExtension, 150 MOCK_METHOD2(GetPingDataForExtension,
151 bool(const std::string&, ManifestFetchData::PingData*)); 151 bool(const std::string&, ManifestFetchData::PingData*));
152 MOCK_METHOD1(GetUpdateUrlData, std::string(const std::string&)); 152 MOCK_METHOD1(GetUpdateUrlData, std::string(const std::string&));
153 MOCK_METHOD1(IsExtensionPending, bool(const std::string&)); 153 MOCK_METHOD1(IsExtensionPending, bool(const std::string&));
154 MOCK_METHOD2(GetExtensionExistingVersion, 154 MOCK_METHOD2(GetExtensionExistingVersion,
155 bool(const std::string&, std::string*)); 155 bool(const std::string&, std::string*));
156 virtual bool ShouldForceUpdate(const std::string&, std::string*) {
157 return false;
158 }
156 159
157 void Wait() { 160 void Wait() {
158 scoped_refptr<content::MessageLoopRunner> runner = 161 scoped_refptr<content::MessageLoopRunner> runner =
159 new content::MessageLoopRunner; 162 new content::MessageLoopRunner;
160 quit_closure_ = runner->QuitClosure(); 163 quit_closure_ = runner->QuitClosure();
161 runner->Run(); 164 runner->Run();
162 quit_closure_.Reset(); 165 quit_closure_.Reset();
163 } 166 }
164 167
165 void Quit() { 168 void Quit() {
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
606 609
607 void RunUntilIdle() { 610 void RunUntilIdle() {
608 prefs_->pref_service()->CommitPendingWrite(); 611 prefs_->pref_service()->CommitPendingWrite();
609 base::RunLoop().RunUntilIdle(); 612 base::RunLoop().RunUntilIdle();
610 } 613 }
611 614
612 void SimulateTimerFired(ExtensionUpdater* updater) { 615 void SimulateTimerFired(ExtensionUpdater* updater) {
613 EXPECT_TRUE(updater->timer_.IsRunning()); 616 EXPECT_TRUE(updater->timer_.IsRunning());
614 updater->timer_.Stop(); 617 updater->timer_.Stop();
615 updater->TimerFired(); 618 updater->TimerFired();
619 content::RunAllBlockingPoolTasksUntilIdle();
616 } 620 }
617 621
618 // Adds a Result with the given data to results. 622 // Adds a Result with the given data to results.
619 void AddParseResult(const std::string& id, 623 void AddParseResult(const std::string& id,
620 const std::string& version, 624 const std::string& version,
621 const std::string& url, 625 const std::string& url,
622 UpdateManifest::Results* results) { 626 UpdateManifest::Results* results) {
623 UpdateManifest::Result result; 627 UpdateManifest::Result result;
624 result.extension_id = id; 628 result.extension_id = id;
625 result.version = version; 629 result.version = version;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
696 } 700 }
697 701
698 void TestUpdateUrlDataEmpty() { 702 void TestUpdateUrlDataEmpty() {
699 const std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; 703 const std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
700 const std::string version = "1.0"; 704 const std::string version = "1.0";
701 705
702 // Make sure that an empty update URL data string does not cause a ap= 706 // Make sure that an empty update URL data string does not cause a ap=
703 // option to appear in the x= parameter. 707 // option to appear in the x= parameter.
704 ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0); 708 ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0);
705 fetch_data.AddExtension( 709 fetch_data.AddExtension(
706 id, version, &kNeverPingedData, std::string(), std::string()); 710 id, version, &kNeverPingedData, std::string(), std::string(), false);
707 711
708 std::map<std::string, std::string> params; 712 std::map<std::string, std::string> params;
709 VerifyQueryAndExtractParameters(fetch_data.full_url().query(), &params); 713 VerifyQueryAndExtractParameters(fetch_data.full_url().query(), &params);
710 EXPECT_EQ(id, params["id"]); 714 EXPECT_EQ(id, params["id"]);
711 EXPECT_EQ(version, params["v"]); 715 EXPECT_EQ(version, params["v"]);
712 EXPECT_EQ(0U, params.count("ap")); 716 EXPECT_EQ(0U, params.count("ap"));
713 } 717 }
714 718
715 void TestUpdateUrlDataSimple() { 719 void TestUpdateUrlDataSimple() {
716 const std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; 720 const std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
717 const std::string version = "1.0"; 721 const std::string version = "1.0";
718 722
719 // Make sure that an update URL data string causes an appropriate ap= 723 // Make sure that an update URL data string causes an appropriate ap=
720 // option to appear in the x= parameter. 724 // option to appear in the x= parameter.
721 ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0); 725 ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0);
722 fetch_data.AddExtension( 726 fetch_data.AddExtension(
723 id, version, &kNeverPingedData, "bar", std::string()); 727 id, version, &kNeverPingedData, "bar", std::string(), false);
724 std::map<std::string, std::string> params; 728 std::map<std::string, std::string> params;
725 VerifyQueryAndExtractParameters(fetch_data.full_url().query(), &params); 729 VerifyQueryAndExtractParameters(fetch_data.full_url().query(), &params);
726 EXPECT_EQ(id, params["id"]); 730 EXPECT_EQ(id, params["id"]);
727 EXPECT_EQ(version, params["v"]); 731 EXPECT_EQ(version, params["v"]);
728 EXPECT_EQ("bar", params["ap"]); 732 EXPECT_EQ("bar", params["ap"]);
729 } 733 }
730 734
731 void TestUpdateUrlDataCompound() { 735 void TestUpdateUrlDataCompound() {
732 const std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; 736 const std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
733 const std::string version = "1.0"; 737 const std::string version = "1.0";
734 738
735 // Make sure that an update URL data string causes an appropriate ap= 739 // Make sure that an update URL data string causes an appropriate ap=
736 // option to appear in the x= parameter. 740 // option to appear in the x= parameter.
737 ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0); 741 ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0);
738 fetch_data.AddExtension( 742 fetch_data.AddExtension(
739 id, version, &kNeverPingedData, "a=1&b=2&c", std::string()); 743 id, version, &kNeverPingedData, "a=1&b=2&c", std::string(), false);
740 std::map<std::string, std::string> params; 744 std::map<std::string, std::string> params;
741 VerifyQueryAndExtractParameters(fetch_data.full_url().query(), &params); 745 VerifyQueryAndExtractParameters(fetch_data.full_url().query(), &params);
742 EXPECT_EQ(id, params["id"]); 746 EXPECT_EQ(id, params["id"]);
743 EXPECT_EQ(version, params["v"]); 747 EXPECT_EQ(version, params["v"]);
744 EXPECT_EQ("a%3D1%26b%3D2%26c", params["ap"]); 748 EXPECT_EQ("a%3D1%26b%3D2%26c", params["ap"]);
745 } 749 }
746 750
747 void TestUpdateUrlDataFromGallery(const std::string& gallery_url) { 751 void TestUpdateUrlDataFromGallery(const std::string& gallery_url) {
748 net::TestURLFetcherFactory factory; 752 net::TestURLFetcherFactory factory;
749 753
(...skipping 23 matching lines...) Expand all
773 } 777 }
774 778
775 void TestInstallSource() { 779 void TestInstallSource() {
776 const std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; 780 const std::string id = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
777 const std::string version = "1.0"; 781 const std::string version = "1.0";
778 const std::string install_source = "instally"; 782 const std::string install_source = "instally";
779 783
780 // Make sure that an installsource= appears in the x= parameter. 784 // Make sure that an installsource= appears in the x= parameter.
781 ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0); 785 ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0);
782 fetch_data.AddExtension(id, version, &kNeverPingedData, 786 fetch_data.AddExtension(id, version, &kNeverPingedData,
783 kEmptyUpdateUrlData, install_source); 787 kEmptyUpdateUrlData, install_source, false);
784 std::map<std::string, std::string> params; 788 std::map<std::string, std::string> params;
785 VerifyQueryAndExtractParameters(fetch_data.full_url().query(), &params); 789 VerifyQueryAndExtractParameters(fetch_data.full_url().query(), &params);
786 EXPECT_EQ(id, params["id"]); 790 EXPECT_EQ(id, params["id"]);
787 EXPECT_EQ(version, params["v"]); 791 EXPECT_EQ(version, params["v"]);
788 EXPECT_EQ(install_source, params["installsource"]); 792 EXPECT_EQ(install_source, params["installsource"]);
789 } 793 }
790 794
791 void TestDetermineUpdates() { 795 void TestDetermineUpdates() {
792 TestingProfile profile; 796 TestingProfile profile;
793 MockExtensionDownloaderDelegate delegate; 797 MockExtensionDownloaderDelegate delegate;
794 ExtensionDownloader downloader(&delegate, profile.GetRequestContext()); 798 ExtensionDownloader downloader(&delegate, profile.GetRequestContext());
795 799
796 // Check passing an empty list of parse results to DetermineUpdates 800 // Check passing an empty list of parse results to DetermineUpdates
797 ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0); 801 ManifestFetchData fetch_data(GURL("http://localhost/foo"), 0);
798 UpdateManifest::Results updates; 802 UpdateManifest::Results updates;
799 std::vector<int> updateable; 803 std::vector<int> updateable;
800 downloader.DetermineUpdates(fetch_data, updates, &updateable); 804 downloader.DetermineUpdates(fetch_data, updates, &updateable);
801 EXPECT_TRUE(updateable.empty()); 805 EXPECT_TRUE(updateable.empty());
802 806
803 // Create two updates - expect that DetermineUpdates will return the first 807 // Create two updates - expect that DetermineUpdates will return the first
804 // one (v1.0 installed, v1.1 available) but not the second one (both 808 // one (v1.0 installed, v1.1 available) but not the second one (both
805 // installed and available at v2.0). 809 // installed and available at v2.0).
806 const std::string id1 = crx_file::id_util::GenerateId("1"); 810 const std::string id1 = crx_file::id_util::GenerateId("1");
807 const std::string id2 = crx_file::id_util::GenerateId("2"); 811 const std::string id2 = crx_file::id_util::GenerateId("2");
808 fetch_data.AddExtension( 812 fetch_data.AddExtension(
809 id1, "1.0.0.0", &kNeverPingedData, kEmptyUpdateUrlData, std::string()); 813 id1, "1.0.0.0", &kNeverPingedData, kEmptyUpdateUrlData, std::string(),
814 false);
810 AddParseResult(id1, "1.1", "http://localhost/e1_1.1.crx", &updates); 815 AddParseResult(id1, "1.1", "http://localhost/e1_1.1.crx", &updates);
811 fetch_data.AddExtension( 816 fetch_data.AddExtension(
812 id2, "2.0.0.0", &kNeverPingedData, kEmptyUpdateUrlData, std::string()); 817 id2, "2.0.0.0", &kNeverPingedData, kEmptyUpdateUrlData, std::string(),
818 false);
813 AddParseResult(id2, "2.0.0.0", "http://localhost/e2_2.0.crx", &updates); 819 AddParseResult(id2, "2.0.0.0", "http://localhost/e2_2.0.crx", &updates);
814 820
815 EXPECT_CALL(delegate, IsExtensionPending(_)).WillRepeatedly(Return(false)); 821 EXPECT_CALL(delegate, IsExtensionPending(_)).WillRepeatedly(Return(false));
816 EXPECT_CALL(delegate, GetExtensionExistingVersion(id1, _)) 822 EXPECT_CALL(delegate, GetExtensionExistingVersion(id1, _))
817 .WillOnce(DoAll(SetArgPointee<1>("1.0.0.0"), 823 .WillOnce(DoAll(SetArgPointee<1>("1.0.0.0"),
818 Return(true))); 824 Return(true)));
819 EXPECT_CALL(delegate, GetExtensionExistingVersion(id2, _)) 825 EXPECT_CALL(delegate, GetExtensionExistingVersion(id2, _))
820 .WillOnce(DoAll(SetArgPointee<1>("2.0.0.0"), 826 .WillOnce(DoAll(SetArgPointee<1>("2.0.0.0"),
821 Return(true))); 827 Return(true)));
822 828
(...skipping 20 matching lines...) Expand all
843 pending_extension_manager->GetPendingIdsForUpdateCheck( 849 pending_extension_manager->GetPendingIdsForUpdateCheck(
844 &ids_for_update_check); 850 &ids_for_update_check);
845 851
846 std::list<std::string>::const_iterator it; 852 std::list<std::string>::const_iterator it;
847 for (it = ids_for_update_check.begin(); 853 for (it = ids_for_update_check.begin();
848 it != ids_for_update_check.end(); ++it) { 854 it != ids_for_update_check.end(); ++it) {
849 fetch_data.AddExtension(*it, 855 fetch_data.AddExtension(*it,
850 "1.0.0.0", 856 "1.0.0.0",
851 &kNeverPingedData, 857 &kNeverPingedData,
852 kEmptyUpdateUrlData, 858 kEmptyUpdateUrlData,
853 std::string()); 859 std::string(),
860 false);
854 AddParseResult(*it, "1.1", "http://localhost/e1_1.1.crx", &updates); 861 AddParseResult(*it, "1.1", "http://localhost/e1_1.1.crx", &updates);
855 } 862 }
856 863
857 // The delegate will tell the downloader that all the extensions are 864 // The delegate will tell the downloader that all the extensions are
858 // pending. 865 // pending.
859 EXPECT_CALL(delegate, IsExtensionPending(_)).WillRepeatedly(Return(true)); 866 EXPECT_CALL(delegate, IsExtensionPending(_)).WillRepeatedly(Return(true));
860 867
861 std::vector<int> updateable; 868 std::vector<int> updateable;
862 downloader.DetermineUpdates(fetch_data, updates, &updateable); 869 downloader.DetermineUpdates(fetch_data, updates, &updateable);
863 // All the apps should be updateable. 870 // All the apps should be updateable.
(...skipping 13 matching lines...) Expand all
877 downloader.manifests_queue_.set_backoff_policy(&kNoBackoffPolicy); 884 downloader.manifests_queue_.set_backoff_policy(&kNoBackoffPolicy);
878 885
879 GURL kUpdateUrl("http://localhost/manifest1"); 886 GURL kUpdateUrl("http://localhost/manifest1");
880 887
881 scoped_ptr<ManifestFetchData> fetch1(new ManifestFetchData(kUpdateUrl, 0)); 888 scoped_ptr<ManifestFetchData> fetch1(new ManifestFetchData(kUpdateUrl, 0));
882 scoped_ptr<ManifestFetchData> fetch2(new ManifestFetchData(kUpdateUrl, 0)); 889 scoped_ptr<ManifestFetchData> fetch2(new ManifestFetchData(kUpdateUrl, 0));
883 scoped_ptr<ManifestFetchData> fetch3(new ManifestFetchData(kUpdateUrl, 0)); 890 scoped_ptr<ManifestFetchData> fetch3(new ManifestFetchData(kUpdateUrl, 0));
884 scoped_ptr<ManifestFetchData> fetch4(new ManifestFetchData(kUpdateUrl, 0)); 891 scoped_ptr<ManifestFetchData> fetch4(new ManifestFetchData(kUpdateUrl, 0));
885 ManifestFetchData::PingData zeroDays(0, 0, true); 892 ManifestFetchData::PingData zeroDays(0, 0, true);
886 fetch1->AddExtension( 893 fetch1->AddExtension(
887 "1111", "1.0", &zeroDays, kEmptyUpdateUrlData, std::string()); 894 "1111", "1.0", &zeroDays, kEmptyUpdateUrlData, std::string(), false);
888 fetch2->AddExtension( 895 fetch2->AddExtension(
889 "2222", "2.0", &zeroDays, kEmptyUpdateUrlData, std::string()); 896 "2222", "2.0", &zeroDays, kEmptyUpdateUrlData, std::string(), false);
890 fetch3->AddExtension( 897 fetch3->AddExtension(
891 "3333", "3.0", &zeroDays, kEmptyUpdateUrlData, std::string()); 898 "3333", "3.0", &zeroDays, kEmptyUpdateUrlData, std::string(), false);
892 fetch4->AddExtension( 899 fetch4->AddExtension(
893 "4444", "4.0", &zeroDays, kEmptyUpdateUrlData, std::string()); 900 "4444", "4.0", &zeroDays, kEmptyUpdateUrlData, std::string(), false);
894 901
895 // This will start the first fetcher and queue the others. The next in queue 902 // This will start the first fetcher and queue the others. The next in queue
896 // is started as each fetcher receives its response. Note that the fetchers 903 // is started as each fetcher receives its response. Note that the fetchers
897 // don't necessarily run in the order that they are started from here. 904 // don't necessarily run in the order that they are started from here.
898 GURL fetch1_url = fetch1->full_url(); 905 GURL fetch1_url = fetch1->full_url();
899 GURL fetch2_url = fetch2->full_url(); 906 GURL fetch2_url = fetch2->full_url();
900 GURL fetch3_url = fetch3->full_url(); 907 GURL fetch3_url = fetch3->full_url();
901 GURL fetch4_url = fetch4->full_url(); 908 GURL fetch4_url = fetch4->full_url();
902 downloader.StartUpdateCheck(fetch1.Pass()); 909 downloader.StartUpdateCheck(fetch1.Pass());
903 downloader.StartUpdateCheck(fetch2.Pass()); 910 downloader.StartUpdateCheck(fetch2.Pass());
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
1014 MockService service(prefs_.get()); 1021 MockService service(prefs_.get());
1015 MockExtensionDownloaderDelegate delegate; 1022 MockExtensionDownloaderDelegate delegate;
1016 ExtensionDownloader downloader(&delegate, service.request_context()); 1023 ExtensionDownloader downloader(&delegate, service.request_context());
1017 downloader.manifests_queue_.set_backoff_policy(&kNoBackoffPolicy); 1024 downloader.manifests_queue_.set_backoff_policy(&kNoBackoffPolicy);
1018 1025
1019 GURL kUpdateUrl("http://localhost/manifest1"); 1026 GURL kUpdateUrl("http://localhost/manifest1");
1020 1027
1021 scoped_ptr<ManifestFetchData> fetch(new ManifestFetchData(kUpdateUrl, 0)); 1028 scoped_ptr<ManifestFetchData> fetch(new ManifestFetchData(kUpdateUrl, 0));
1022 ManifestFetchData::PingData zeroDays(0, 0, true); 1029 ManifestFetchData::PingData zeroDays(0, 0, true);
1023 fetch->AddExtension( 1030 fetch->AddExtension(
1024 "1111", "1.0", &zeroDays, kEmptyUpdateUrlData, std::string()); 1031 "1111", "1.0", &zeroDays, kEmptyUpdateUrlData, std::string(), false);
1025 1032
1026 // This will start the first fetcher. 1033 // This will start the first fetcher.
1027 downloader.StartUpdateCheck(fetch.Pass()); 1034 downloader.StartUpdateCheck(fetch.Pass());
1028 RunUntilIdle(); 1035 RunUntilIdle();
1029 1036
1030 // ExtensionDownloader should retry kMaxRetries times and then fail. 1037 // ExtensionDownloader should retry kMaxRetries times and then fail.
1031 EXPECT_CALL(delegate, OnExtensionDownloadFailed( 1038 EXPECT_CALL(delegate, OnExtensionDownloadFailed(
1032 "1111", ExtensionDownloaderDelegate::MANIFEST_FETCH_FAILED, _, _)); 1039 "1111", ExtensionDownloaderDelegate::MANIFEST_FETCH_FAILED, _, _));
1033 for (int i = 0; i <= ExtensionDownloader::kMaxRetries; ++i) { 1040 for (int i = 0; i <= ExtensionDownloader::kMaxRetries; ++i) {
1034 // All fetches will fail. 1041 // All fetches will fail.
1035 fetcher = factory.GetFetcherByID(ExtensionDownloader::kManifestFetcherId); 1042 fetcher = factory.GetFetcherByID(ExtensionDownloader::kManifestFetcherId);
1036 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL); 1043 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL);
1037 EXPECT_TRUE(fetcher->GetLoadFlags() == kExpectedLoadFlags); 1044 EXPECT_TRUE(fetcher->GetLoadFlags() == kExpectedLoadFlags);
1038 fetcher->set_url(kUpdateUrl); 1045 fetcher->set_url(kUpdateUrl);
1039 fetcher->set_status(net::URLRequestStatus()); 1046 fetcher->set_status(net::URLRequestStatus());
1040 // Code 5xx causes ExtensionDownloader to retry. 1047 // Code 5xx causes ExtensionDownloader to retry.
1041 fetcher->set_response_code(500); 1048 fetcher->set_response_code(500);
1042 fetcher->delegate()->OnURLFetchComplete(fetcher); 1049 fetcher->delegate()->OnURLFetchComplete(fetcher);
1043 RunUntilIdle(); 1050 RunUntilIdle();
1044 } 1051 }
1045 Mock::VerifyAndClearExpectations(&delegate); 1052 Mock::VerifyAndClearExpectations(&delegate);
1046 1053
1047 1054
1048 // For response codes that are not in the 5xx range ExtensionDownloader 1055 // For response codes that are not in the 5xx range ExtensionDownloader
1049 // should not retry. 1056 // should not retry.
1050 fetch.reset(new ManifestFetchData(kUpdateUrl, 0)); 1057 fetch.reset(new ManifestFetchData(kUpdateUrl, 0));
1051 fetch->AddExtension( 1058 fetch->AddExtension(
1052 "1111", "1.0", &zeroDays, kEmptyUpdateUrlData, std::string()); 1059 "1111", "1.0", &zeroDays, kEmptyUpdateUrlData, std::string(), false);
1053 1060
1054 // This will start the first fetcher. 1061 // This will start the first fetcher.
1055 downloader.StartUpdateCheck(fetch.Pass()); 1062 downloader.StartUpdateCheck(fetch.Pass());
1056 RunUntilIdle(); 1063 RunUntilIdle();
1057 1064
1058 EXPECT_CALL(delegate, OnExtensionDownloadFailed( 1065 EXPECT_CALL(delegate, OnExtensionDownloadFailed(
1059 "1111", ExtensionDownloaderDelegate::MANIFEST_FETCH_FAILED, _, _)); 1066 "1111", ExtensionDownloaderDelegate::MANIFEST_FETCH_FAILED, _, _));
1060 // The first fetch will fail, and require retrying. 1067 // The first fetch will fail, and require retrying.
1061 fetcher = factory.GetFetcherByID(ExtensionDownloader::kManifestFetcherId); 1068 fetcher = factory.GetFetcherByID(ExtensionDownloader::kManifestFetcherId);
1062 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL); 1069 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL);
(...skipping 534 matching lines...) Expand 10 before | Expand all | Expand 10 after
1597 ExtensionUpdater updater(&service, 1604 ExtensionUpdater updater(&service,
1598 service.extension_prefs(), 1605 service.extension_prefs(),
1599 service.pref_service(), 1606 service.pref_service(),
1600 service.profile(), 1607 service.profile(),
1601 kUpdateFrequencySecs, 1608 kUpdateFrequencySecs,
1602 NULL, 1609 NULL,
1603 service.GetDownloaderFactory()); 1610 service.GetDownloaderFactory());
1604 ExtensionUpdater::CheckParams params; 1611 ExtensionUpdater::CheckParams params;
1605 updater.Start(); 1612 updater.Start();
1606 updater.CheckNow(params); 1613 updater.CheckNow(params);
1614 content::RunAllBlockingPoolTasksUntilIdle();
1607 1615
1608 // Make the updater do manifest fetching, and note the urls it tries to 1616 // Make the updater do manifest fetching, and note the urls it tries to
1609 // fetch. 1617 // fetch.
1610 std::vector<GURL> fetched_urls; 1618 std::vector<GURL> fetched_urls;
1611 net::TestURLFetcher* fetcher = 1619 net::TestURLFetcher* fetcher =
1612 factory.GetFetcherByID(ExtensionDownloader::kManifestFetcherId); 1620 factory.GetFetcherByID(ExtensionDownloader::kManifestFetcherId);
1613 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL); 1621 EXPECT_TRUE(fetcher != NULL && fetcher->delegate() != NULL);
1614 fetched_urls.push_back(fetcher->GetOriginalURL()); 1622 fetched_urls.push_back(fetcher->GetOriginalURL());
1615 1623
1616 fetcher->set_url(fetched_urls[0]); 1624 fetcher->set_url(fetched_urls[0]);
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after
1700 service.GetDownloaderFactory()); 1708 service.GetDownloaderFactory());
1701 updater.Start(); 1709 updater.Start();
1702 updater.EnsureDownloaderCreated(); 1710 updater.EnsureDownloaderCreated();
1703 1711
1704 ManifestFetchData fetch_data(update_url, 0); 1712 ManifestFetchData fetch_data(update_url, 0);
1705 const Extension* extension = tmp[0].get(); 1713 const Extension* extension = tmp[0].get();
1706 fetch_data.AddExtension(extension->id(), 1714 fetch_data.AddExtension(extension->id(),
1707 extension->VersionString(), 1715 extension->VersionString(),
1708 &kNeverPingedData, 1716 &kNeverPingedData,
1709 kEmptyUpdateUrlData, 1717 kEmptyUpdateUrlData,
1710 std::string()); 1718 std::string(),
1719 false);
1711 UpdateManifest::Results results; 1720 UpdateManifest::Results results;
1712 results.daystart_elapsed_seconds = 750; 1721 results.daystart_elapsed_seconds = 750;
1713 1722
1714 updater.downloader_->HandleManifestResults(fetch_data, &results); 1723 updater.downloader_->HandleManifestResults(fetch_data, &results);
1715 Time last_ping_day = 1724 Time last_ping_day =
1716 service.extension_prefs()->LastPingDay(extension->id()); 1725 service.extension_prefs()->LastPingDay(extension->id());
1717 EXPECT_FALSE(last_ping_day.is_null()); 1726 EXPECT_FALSE(last_ping_day.is_null());
1718 int64 seconds_diff = (Time::Now() - last_ping_day).InSeconds(); 1727 int64 seconds_diff = (Time::Now() - last_ping_day).InSeconds();
1719 EXPECT_LT(seconds_diff - results.daystart_elapsed_seconds, 5); 1728 EXPECT_LT(seconds_diff - results.daystart_elapsed_seconds, 5);
1720 } 1729 }
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
1898 // These expectations fail if the delegate's methods are invoked for the 1907 // These expectations fail if the delegate's methods are invoked for the
1899 // first extension, which has a non-matching id. 1908 // first extension, which has a non-matching id.
1900 EXPECT_CALL(delegate, 1909 EXPECT_CALL(delegate,
1901 GetUpdateUrlData(updateable_id)).WillOnce(Return("")); 1910 GetUpdateUrlData(updateable_id)).WillOnce(Return(""));
1902 EXPECT_CALL(delegate, GetPingDataForExtension(updateable_id, _)); 1911 EXPECT_CALL(delegate, GetPingDataForExtension(updateable_id, _));
1903 1912
1904 service.set_extensions(extensions, ExtensionList()); 1913 service.set_extensions(extensions, ExtensionList());
1905 ExtensionUpdater::CheckParams params; 1914 ExtensionUpdater::CheckParams params;
1906 updater.Start(); 1915 updater.Start();
1907 updater.CheckNow(params); 1916 updater.CheckNow(params);
1917 content::RunAllBlockingPoolTasksUntilIdle();
1908 } 1918 }
1909 1919
1910 TEST_F(ExtensionUpdaterTest, TestUpdatingDisabledExtensions) { 1920 TEST_F(ExtensionUpdaterTest, TestUpdatingDisabledExtensions) {
1911 net::TestURLFetcherFactory factory; 1921 net::TestURLFetcherFactory factory;
1912 ServiceForManifestTests service(prefs_.get()); 1922 ServiceForManifestTests service(prefs_.get());
1913 ExtensionUpdater updater(&service, 1923 ExtensionUpdater updater(&service,
1914 service.extension_prefs(), 1924 service.extension_prefs(),
1915 service.pref_service(), 1925 service.pref_service(),
1916 service.profile(), 1926 service.profile(),
1917 kUpdateFrequencySecs, 1927 kUpdateFrequencySecs,
(...skipping 18 matching lines...) Expand all
1936 EXPECT_CALL(delegate, GetUpdateUrlData(enabled_id)).WillOnce(Return("")); 1946 EXPECT_CALL(delegate, GetUpdateUrlData(enabled_id)).WillOnce(Return(""));
1937 EXPECT_CALL(delegate, GetPingDataForExtension(enabled_id, _)); 1947 EXPECT_CALL(delegate, GetPingDataForExtension(enabled_id, _));
1938 EXPECT_CALL(delegate, 1948 EXPECT_CALL(delegate,
1939 GetUpdateUrlData(disabled_id)).WillOnce(Return("")); 1949 GetUpdateUrlData(disabled_id)).WillOnce(Return(""));
1940 EXPECT_CALL(delegate, GetPingDataForExtension(disabled_id, _)); 1950 EXPECT_CALL(delegate, GetPingDataForExtension(disabled_id, _));
1941 1951
1942 service.set_extensions(enabled_extensions, disabled_extensions); 1952 service.set_extensions(enabled_extensions, disabled_extensions);
1943 ExtensionUpdater::CheckParams params; 1953 ExtensionUpdater::CheckParams params;
1944 updater.Start(); 1954 updater.Start();
1945 updater.CheckNow(params); 1955 updater.CheckNow(params);
1956 content::RunAllBlockingPoolTasksUntilIdle();
1946 } 1957 }
1947 1958
1948 TEST_F(ExtensionUpdaterTest, TestManifestFetchesBuilderAddExtension) { 1959 TEST_F(ExtensionUpdaterTest, TestManifestFetchesBuilderAddExtension) {
1949 net::TestURLFetcherFactory factory; 1960 net::TestURLFetcherFactory factory;
1950 MockService service(prefs_.get()); 1961 MockService service(prefs_.get());
1951 MockExtensionDownloaderDelegate delegate; 1962 MockExtensionDownloaderDelegate delegate;
1952 scoped_ptr<ExtensionDownloader> downloader( 1963 scoped_ptr<ExtensionDownloader> downloader(
1953 new ExtensionDownloader(&delegate, service.request_context())); 1964 new ExtensionDownloader(&delegate, service.request_context()));
1954 EXPECT_EQ(0u, ManifestFetchersCount(downloader.get())); 1965 EXPECT_EQ(0u, ManifestFetchersCount(downloader.get()));
1955 1966
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
2042 // -prodversionmin (shouldn't update if browser version too old) 2053 // -prodversionmin (shouldn't update if browser version too old)
2043 // -manifests & updates arriving out of order / interleaved 2054 // -manifests & updates arriving out of order / interleaved
2044 // -malformed update url (empty, file://, has query, has a # fragment, etc.) 2055 // -malformed update url (empty, file://, has query, has a # fragment, etc.)
2045 // -An extension gets uninstalled while updates are in progress (so it doesn't 2056 // -An extension gets uninstalled while updates are in progress (so it doesn't
2046 // "come back from the dead") 2057 // "come back from the dead")
2047 // -An extension gets manually updated to v3 while we're downloading v2 (ie 2058 // -An extension gets manually updated to v3 while we're downloading v2 (ie
2048 // you don't get downgraded accidentally) 2059 // you don't get downgraded accidentally)
2049 // -An update manifest mentions multiple updates 2060 // -An update manifest mentions multiple updates
2050 2061
2051 } // namespace extensions 2062 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698