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"; |