| Index: chrome/browser/extensions/api/downloads/downloads_api_unittest.cc
|
| diff --git a/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc b/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc
|
| index 05c4b82834ab79e42b594754e5dca71082312dc5..552a7a174d8e9602df882ef8c11fa21e1872599b 100644
|
| --- a/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc
|
| +++ b/chrome/browser/extensions/api/downloads/downloads_api_unittest.cc
|
| @@ -815,9 +815,70 @@ const char HTML5FileWriter::kHTML5FileWritten[] = "html5_file_written";
|
| const char HTML5FileWriter::kURLRequestContextToreDown[] =
|
| "url_request_context_tore_down";
|
|
|
| +// While an object of this class exists, it will mock out download
|
| +// opening for all downloads created on the specified download manager.
|
| +class MockDownloadOpeningObserver : public DownloadManager::Observer {
|
| + public:
|
| + explicit MockDownloadOpeningObserver(DownloadManager* manager)
|
| + : download_manager_(manager) {
|
| + download_manager_->AddObserver(this);
|
| + }
|
| +
|
| + ~MockDownloadOpeningObserver() {
|
| + download_manager_->RemoveObserver(this);
|
| + }
|
| +
|
| + virtual void OnDownloadCreated(
|
| + DownloadManager* manager, DownloadItem* item) OVERRIDE {
|
| + item->MockDownloadOpenForTesting();
|
| + }
|
| +
|
| + private:
|
| + DownloadManager* download_manager_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MockDownloadOpeningObserver);
|
| +};
|
| +
|
| } // namespace
|
|
|
| IN_PROC_BROWSER_TEST_F(DownloadExtensionTest,
|
| + DownloadExtensionTest_Open) {
|
| + EXPECT_STREQ(download_extension_errors::kInvalidOperationError,
|
| + RunFunctionAndReturnError(
|
| + new DownloadsOpenFunction(),
|
| + "[-42]").c_str());
|
| +
|
| + MockDownloadOpeningObserver mock_open_observer(GetCurrentManager());
|
| + DownloadItem* download_item = CreateSlowTestDownload();
|
| + ASSERT_TRUE(download_item);
|
| + EXPECT_FALSE(download_item->GetOpened());
|
| + EXPECT_FALSE(download_item->GetOpenWhenComplete());
|
| + ASSERT_TRUE(WaitFor(events::kOnDownloadCreated,
|
| + base::StringPrintf("[{\"danger\": \"safe\","
|
| + " \"incognito\": false,"
|
| + " \"mime\": \"application/octet-stream\","
|
| + " \"paused\": false,"
|
| + " \"url\": \"%s\"}]",
|
| + download_item->GetURL().spec().c_str())));
|
| + EXPECT_STREQ(download_extension_errors::kInvalidOperationError,
|
| + RunFunctionAndReturnError(
|
| + new DownloadsOpenFunction(),
|
| + DownloadItemIdAsArgList(download_item)).c_str());
|
| +
|
| + FinishPendingSlowDownloads();
|
| + EXPECT_FALSE(download_item->GetOpened());
|
| + EXPECT_TRUE(RunFunction(new DownloadsOpenFunction(),
|
| + DownloadItemIdAsArgList(download_item)));
|
| + EXPECT_TRUE(download_item->GetOpened());
|
| + ASSERT_TRUE(WaitFor(events::kOnDownloadChanged,
|
| + base::StringPrintf("[{\"id\": %d,"
|
| + " \"opened\": {"
|
| + " \"previous\": false,"
|
| + " \"current\": true}}]",
|
| + download_item->GetId())));
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(DownloadExtensionTest,
|
| DownloadExtensionTest_PauseResumeCancel) {
|
| DownloadItem* download_item = CreateSlowTestDownload();
|
| ASSERT_TRUE(download_item);
|
|
|