Chromium Code Reviews| 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, |