Chromium Code Reviews| Index: chrome/browser/extensions/updater/extension_updater_unittest.cc |
| diff --git a/chrome/browser/extensions/updater/extension_updater_unittest.cc b/chrome/browser/extensions/updater/extension_updater_unittest.cc |
| index 5d873b19ccd0e34810dd2aec59d9984d937c6498..4607aaf060e1bf0e1f506722343d6ce16f6e1552 100644 |
| --- a/chrome/browser/extensions/updater/extension_updater_unittest.cc |
| +++ b/chrome/browser/extensions/updater/extension_updater_unittest.cc |
| @@ -70,6 +70,7 @@ using base::Time; |
| using base::TimeDelta; |
| using content::BrowserThread; |
| using testing::DoAll; |
| +using testing::Invoke; |
| using testing::InvokeWithoutArgs; |
| using testing::Mock; |
| using testing::Return; |
| @@ -151,6 +152,27 @@ class MockExtensionDownloaderDelegate : public ExtensionDownloaderDelegate { |
| quit_closure_.Run(); |
| } |
| + void DelegateTo(ExtensionDownloaderDelegate* delegate) { |
| + ON_CALL(*this, OnExtensionDownloadFailed(_, _, _, _)) |
| + .WillByDefault(Invoke(delegate, |
| + &ExtensionDownloaderDelegate::OnExtensionDownloadFailed)); |
| + ON_CALL(*this, OnExtensionDownloadFinished(_, _, _, _, _, _, _)) |
| + .WillByDefault(Invoke(delegate, |
| + &ExtensionDownloaderDelegate::OnExtensionDownloadFinished)); |
| + ON_CALL(*this, GetPingDataForExtension(_, _)) |
| + .WillByDefault(Invoke(delegate, |
| + &ExtensionDownloaderDelegate::GetPingDataForExtension)); |
| + ON_CALL(*this, GetUpdateUrlData(_)) |
| + .WillByDefault(Invoke(delegate, |
| + &ExtensionDownloaderDelegate::GetUpdateUrlData)); |
| + ON_CALL(*this, IsExtensionPending(_)) |
| + .WillByDefault(Invoke(delegate, |
| + &ExtensionDownloaderDelegate::IsExtensionPending)); |
| + ON_CALL(*this, GetExtensionExistingVersion(_, _)) |
| + .WillByDefault(Invoke(delegate, |
| + &ExtensionDownloaderDelegate::GetExtensionExistingVersion)); |
|
asargent_no_longer_on_chrome
2014/02/01 00:55:05
ZOMG gtest
|
| + } |
| + |
| private: |
| base::Closure quit_closure_; |
| }; |
| @@ -966,7 +988,7 @@ class ExtensionUpdaterTest : public testing::Test { |
| Mock::VerifyAndClearExpectations(&delegate); |
| } |
| - void TestSingleExtensionDownloading(bool pending, bool retry) { |
| + void TestSingleExtensionDownloading(bool pending, bool retry, bool fail) { |
| net::TestURLFetcherFactory factory; |
| net::TestURLFetcher* fetcher = NULL; |
| scoped_ptr<ServiceForDownloadTests> service( |
| @@ -977,9 +999,11 @@ class ExtensionUpdaterTest : public testing::Test { |
| kUpdateFrequencySecs, |
| NULL); |
| updater.Start(); |
| + MockExtensionDownloaderDelegate delegate; |
| + delegate.DelegateTo(&updater); |
| ResetDownloader( |
| &updater, |
| - new ExtensionDownloader(&updater, service->request_context())); |
| + new ExtensionDownloader(&delegate, service->request_context())); |
| updater.downloader_->extensions_queue_.set_backoff_policy( |
| &kNoBackoffPolicy); |
| @@ -1032,19 +1056,31 @@ class ExtensionUpdaterTest : public testing::Test { |
| fetcher->set_url(test_url); |
| fetcher->set_status(net::URLRequestStatus()); |
| - fetcher->set_response_code(200); |
| - fetcher->SetResponseFilePath(extension_file_path); |
| + if (fail) { |
| + fetcher->set_response_code(404); |
| + EXPECT_CALL(delegate, OnExtensionDownloadFailed(id, _, _, requests)); |
| + } else { |
| + fetcher->set_response_code(200); |
| + fetcher->SetResponseFilePath(extension_file_path); |
| + EXPECT_CALL(delegate, OnExtensionDownloadFinished( |
| + id, _, _, _, version.GetString(), _, requests)); |
| + } |
| fetcher->delegate()->OnURLFetchComplete(fetcher); |
| RunUntilIdle(); |
| - // Expect that ExtensionUpdater asked the mock extensions service to install |
| - // a file with the test data for the right id. |
| - EXPECT_EQ(id, service->extension_id()); |
| - base::FilePath tmpfile_path = service->install_path(); |
| - EXPECT_FALSE(tmpfile_path.empty()); |
| - EXPECT_EQ(test_url, service->download_url()); |
| - EXPECT_EQ(extension_file_path, tmpfile_path); |
| + if (fail) { |
| + // Don't expect any extension to have been installed. |
| + EXPECT_TRUE(service->extension_id().empty()); |
| + } else { |
| + // Expect that ExtensionUpdater asked the mock extensions service to |
| + // install a file with the test data for the right id. |
| + EXPECT_EQ(id, service->extension_id()); |
| + base::FilePath tmpfile_path = service->install_path(); |
| + EXPECT_FALSE(tmpfile_path.empty()); |
| + EXPECT_EQ(test_url, service->download_url()); |
| + EXPECT_EQ(extension_file_path, tmpfile_path); |
| + } |
| } |
| // Two extensions are updated. If |updates_start_running| is true, the |
| @@ -1439,19 +1475,31 @@ TEST_F(ExtensionUpdaterTest, TestMultipleManifestDownloading) { |
| } |
| TEST_F(ExtensionUpdaterTest, TestSingleExtensionDownloading) { |
| - TestSingleExtensionDownloading(false, false); |
| + TestSingleExtensionDownloading(false, false, false); |
| } |
| TEST_F(ExtensionUpdaterTest, TestSingleExtensionDownloadingPending) { |
| - TestSingleExtensionDownloading(true, false); |
| + TestSingleExtensionDownloading(true, false, false); |
| } |
| TEST_F(ExtensionUpdaterTest, TestSingleExtensionDownloadingWithRetry) { |
| - TestSingleExtensionDownloading(false, true); |
| + TestSingleExtensionDownloading(false, true, false); |
| } |
| TEST_F(ExtensionUpdaterTest, TestSingleExtensionDownloadingPendingWithRetry) { |
| - TestSingleExtensionDownloading(true, true); |
| + TestSingleExtensionDownloading(true, true, false); |
| +} |
| + |
| +TEST_F(ExtensionUpdaterTest, TestSingleExtensionDownloadingFailure) { |
| + TestSingleExtensionDownloading(false, false, true); |
| +} |
| + |
| +TEST_F(ExtensionUpdaterTest, TestSingleExtensionDownloadingFailureWithRetry) { |
| + TestSingleExtensionDownloading(false, true, true); |
| +} |
| + |
| +TEST_F(ExtensionUpdaterTest, TestSingleExtensionDownloadingFailurePending) { |
| + TestSingleExtensionDownloading(true, false, true); |
| } |
| TEST_F(ExtensionUpdaterTest, TestMultipleExtensionDownloadingUpdatesFail) { |