Index: chrome/browser/download/download_test_observer.cc |
diff --git a/chrome/browser/download/download_test_observer.cc b/chrome/browser/download/download_test_observer.cc |
index 6e82cc9eef1506c3cf4d84fc231a2523d2a05e71..8f879657939a2697c4f6efc10ed79bf7f6b8866c 100644 |
--- a/chrome/browser/download/download_test_observer.cc |
+++ b/chrome/browser/download/download_test_observer.cc |
@@ -346,3 +346,40 @@ void DownloadTestFlushObserver::PingIOThread(int cycle) { |
BrowserThread::UI, FROM_HERE, MessageLoop::QuitClosure()); |
} |
} |
+ |
+DownloadTestItemCreationObserver::~DownloadTestItemCreationObserver() { |
+} |
+ |
+DownloadTestItemCreationObserver::DownloadTestItemCreationObserver() |
+ : called_back_count_(0), |
+ waiting_(false) { |
+} |
+ |
+void DownloadTestItemCreationObserver::WaitForDownloadItemCreation() { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ |
+ if (called_back_count_ == 0) { |
+ waiting_ = true; |
+ ui_test_utils::RunMessageLoop(); |
+ waiting_ = false; |
+ } |
+} |
+ |
+void DownloadTestItemCreationObserver::DownloadItemCreationCallback( |
+ content::DownloadId download_id, net::Error error) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ |
+ creation_info_.download_id = download_id; |
+ creation_info_.error = error; |
+ ++called_back_count_; |
+ |
+ if (waiting_ && (called_back_count_ > 0)) |
+ MessageLoopForUI::current()->Quit(); |
+} |
+ |
+const content::DownloadManager::OnStartedCallback |
+ DownloadTestItemCreationObserver::callback() { |
+ return base::Bind( |
+ &DownloadTestItemCreationObserver::DownloadItemCreationCallback, this); |
+} |
+ |