Index: content/public/test/download_test_observer.cc |
diff --git a/content/public/test/download_test_observer.cc b/content/public/test/download_test_observer.cc |
index 85caf410ade5d3706840c7ca8ac9ebf8c7d99b43..97e647f67c0aa782aaf6851bc550494313b4dcff 100644 |
--- a/content/public/test/download_test_observer.cc |
+++ b/content/public/test/download_test_observer.cc |
@@ -44,6 +44,45 @@ void DenyDangerousDownload(scoped_refptr<DownloadManager> download_manager, |
} // namespace |
+DownloadUpdatedObserver::DownloadUpdatedObserver( |
+ DownloadItem* item, DownloadUpdatedObserver::EventFilter filter) |
+ : item_(item), filter_(filter), waiting_(false), event_seen_(false) { |
sky
2012/09/13 21:15:55
each param on its own line.
Randy Smith (Not in Mondays)
2012/09/13 21:33:15
Done.
|
+ item->AddObserver(this); |
+} |
+ |
+DownloadUpdatedObserver::~DownloadUpdatedObserver() { |
+ if (item_) |
+ item_->RemoveObserver(this); |
+} |
+ |
+bool DownloadUpdatedObserver::WaitForEvent() { |
+ if (item_ && filter_.Run(item_)) |
+ event_seen_ = true; |
+ if (event_seen_) |
+ return true; |
+ |
+ waiting_ = true; |
+ RunMessageLoop(); |
+ waiting_ = false; |
+ return event_seen_; |
+} |
+ |
+void DownloadUpdatedObserver::OnDownloadUpdated(DownloadItem* item) { |
+ DCHECK_EQ(item_, item); |
+ if (filter_.Run(item_)) |
+ event_seen_ = true; |
+ if (waiting_ && event_seen_) |
+ MessageLoopForUI::current()->Quit(); |
+} |
+ |
+void DownloadUpdatedObserver::OnDownloadDestroyed(DownloadItem* item) { |
+ DCHECK_EQ(item_, item); |
+ item_->RemoveObserver(this); |
+ item_ = NULL; |
+ if (waiting_) |
+ MessageLoopForUI::current()->Quit(); |
+} |
+ |
DownloadTestObserver::DownloadTestObserver( |
DownloadManager* download_manager, |
size_t wait_count, |