Chromium Code Reviews| Index: chrome/browser/net/sdch_browsertest.cc |
| diff --git a/chrome/browser/net/sdch_browsertest.cc b/chrome/browser/net/sdch_browsertest.cc |
| index 16bf982558f2c09d5a4676fdb0bdf0f23ecd6c89..7a1cb7b69211d697e86a68cd7e59376138ae01aa 100644 |
| --- a/chrome/browser/net/sdch_browsertest.cc |
| +++ b/chrome/browser/net/sdch_browsertest.cc |
| @@ -261,9 +261,41 @@ class SdchResponseHandler { |
| base::WeakPtrFactory<SdchResponseHandler> weak_ptr_factory_; |
| }; |
| +class TestSdchObserver : public net::SdchObserver { |
| + public: |
| + TestSdchObserver() : manager_(nullptr), fetch_count_(0) {} |
| + ~TestSdchObserver() override { |
| + if (manager_) { |
| + manager_->RemoveObserver(this); |
| + } |
| + } |
| + |
| + void Observe(net::SdchManager* manager) { |
| + DCHECK(!manager_); |
| + manager_ = manager; |
| + manager_->AddObserver(this); |
| + } |
| + |
| + // SdchObserver |
| + void OnDictionaryAdded(const GURL& /* dictionary_url */, |
| + const std::string& /* server_hash */) override {} |
| + void OnDictionaryRemoved(const std::string& /* server_hash */) override {} |
| + void OnGetDictionary(const GURL& /* request_url */, |
| + const GURL& /* dictionary_url */) override { |
| + fetch_count_++; |
| + } |
| + void OnDictionaryUsed(const std::string& /* server_hash */) override {} |
| + void OnClearDictionaries() override {} |
| + |
| + int fetch_count() const { return fetch_count_; } |
| + |
| + private: |
| + net::SdchManager* manager_; |
| + int fetch_count_; |
|
mmenke
2015/05/14 19:20:24
nit: DISALLOW_COPY_AND_ASSIGN
Elly Fong-Jones
2015/05/14 19:29:28
This won't work, since this class is used as a val
|
| +}; |
| + |
| class SdchBrowserTest : public InProcessBrowserTest, |
| - public net::URLFetcherDelegate, |
| - public net::SdchObserver { |
| + public net::URLFetcherDelegate { |
| public: |
| static const char kTestHost[]; |
| @@ -548,9 +580,9 @@ class SdchBrowserTest : public InProcessBrowserTest, |
| net::SdchManager* manager( |
| context_getter->GetURLRequestContext()->sdch_manager()); |
| - DCHECK(fetch_counts_.end() != fetch_counts_.find(manager)); |
| + DCHECK(observers_.end() != observers_.find(manager)); |
| - *result = fetch_counts_[manager]; |
| + *result = observers_[manager].fetch_count(); |
| } |
| // InProcessBrowserTest |
| @@ -595,36 +627,16 @@ class SdchBrowserTest : public InProcessBrowserTest, |
| net::SdchManager* manager = |
| context_getter->GetURLRequestContext()->sdch_manager(); |
| - DCHECK(fetch_counts_.end() == fetch_counts_.find(manager)); |
| + DCHECK(observers_.end() == observers_.find(manager)); |
| - fetch_counts_[manager] = 0; |
| - manager->AddObserver(this); |
| + observers_[manager].Observe(manager); |
| } |
| void UnsubscribeFromAllSdchNotifications() { |
| DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| - |
| - for (auto it = fetch_counts_.begin(); it != fetch_counts_.end(); ++it) |
| - it->first->RemoveObserver(this); |
| - |
| - fetch_counts_.clear(); |
| - } |
| - |
| - // SdchObserver |
| - void OnDictionaryUsed(net::SdchManager* manager, |
| - const std::string& server_hash) override {} |
| - |
| - void OnGetDictionary(net::SdchManager* manager, |
| - const GURL& request_url, |
| - const GURL& dictionary_url) override { |
| - DCHECK_CURRENTLY_ON(content::BrowserThread::IO); |
| - DLOG(ERROR) << "Retrieving count of notifications from manager " << manager; |
| - DCHECK(fetch_counts_.end() != fetch_counts_.find(manager)); |
| - ++fetch_counts_[manager]; |
| + observers_.clear(); |
| } |
| - void OnClearDictionaries(net::SdchManager* manager) override {} |
| - |
| // URLFetcherDelegate |
| void OnURLFetchComplete(const net::URLFetcher* source) override { |
| url_fetch_complete_ = true; |
| @@ -644,7 +656,7 @@ class SdchBrowserTest : public InProcessBrowserTest, |
| Browser* incognito_browser_; |
| // IO Thread access only. |
| - std::map<net::SdchManager*, int> fetch_counts_; |
| + std::map<net::SdchManager*, TestSdchObserver> observers_; |
| }; |
| const char SdchBrowserTest::kTestHost[] = "our.test.host.com"; |