Index: net/base/sdch_manager_unittest.cc |
diff --git a/net/base/sdch_manager_unittest.cc b/net/base/sdch_manager_unittest.cc |
index ba3248e3de8601c3b5701b4ac21c4376a55fb4df..9bb0e7ef05be4e7331fdf5a556c9c0bf3186acdb 100644 |
--- a/net/base/sdch_manager_unittest.cc |
+++ b/net/base/sdch_manager_unittest.cc |
@@ -29,10 +29,18 @@ static const char kTestVcdiffDictionary[] = "DictionaryFor" |
class MockSdchObserver : public SdchObserver { |
public: |
MockSdchObserver() |
- : dictionary_used_notifications_(0), |
+ : dictionary_added_notifications_(0), |
+ dictionary_removed_notifications_(0), |
+ dictionary_used_notifications_(0), |
get_dictionary_notifications_(0), |
clear_dictionaries_notifications_(0) {} |
+ int dictionary_added_notifications() const { |
+ return dictionary_added_notifications_; |
+ } |
+ int dictionary_removed_notifications() const { |
+ return dictionary_removed_notifications_; |
+ } |
std::string last_server_hash() const { return last_server_hash_; } |
int dictionary_used_notifications() const { |
return dictionary_used_notifications_; |
@@ -50,24 +58,34 @@ class MockSdchObserver : public SdchObserver { |
} |
// SdchObserver implementation |
- void OnDictionaryUsed(SdchManager* manager, |
- const std::string& server_hash) override { |
+ void OnDictionaryAdded(const GURL& dictionary_url, |
+ const std::string& server_hash) override { |
+ last_server_hash_ = server_hash; |
+ last_dictionary_url_ = dictionary_url; |
+ ++dictionary_added_notifications_; |
+ } |
+ void OnDictionaryRemoved(const std::string& server_hash) override { |
+ last_server_hash_ = server_hash; |
+ ++dictionary_removed_notifications_; |
+ } |
+ void OnDictionaryUsed(const std::string& server_hash) override { |
last_server_hash_ = server_hash; |
++dictionary_used_notifications_; |
} |
- void OnGetDictionary(SdchManager* manager, |
- const GURL& request_url, |
+ void OnGetDictionary(const GURL& request_url, |
const GURL& dictionary_url) override { |
++get_dictionary_notifications_; |
last_dictionary_request_url_ = request_url; |
last_dictionary_url_ = dictionary_url; |
} |
- void OnClearDictionaries(SdchManager* manager) override { |
+ void OnClearDictionaries() override { |
++clear_dictionaries_notifications_; |
} |
private: |
+ int dictionary_added_notifications_; |
+ int dictionary_removed_notifications_; |
int dictionary_used_notifications_; |
int get_dictionary_notifications_; |
int clear_dictionaries_notifications_; |
@@ -628,19 +646,37 @@ TEST_F(SdchManagerTest, SdchDictionaryUsed) { |
std::string server_hash; |
SdchManager::GenerateHash(dictionary_text, &client_hash, &server_hash); |
EXPECT_TRUE(AddSdchDictionary(dictionary_text, target_gurl)); |
- EXPECT_EQ("xyzzy", observer.last_server_hash()); |
EXPECT_EQ(1, observer.dictionary_used_notifications()); |
EXPECT_TRUE(sdch_manager()->GetDictionarySet(target_gurl)); |
- EXPECT_EQ("xyzzy", observer.last_server_hash()); |
EXPECT_EQ(1, observer.dictionary_used_notifications()); |
sdch_manager()->RemoveObserver(&observer); |
EXPECT_EQ(1, observer.dictionary_used_notifications()); |
- EXPECT_EQ("xyzzy", observer.last_server_hash()); |
sdch_manager()->OnDictionaryUsed("plugh"); |
EXPECT_EQ(1, observer.dictionary_used_notifications()); |
- EXPECT_EQ("xyzzy", observer.last_server_hash()); |
+} |
+ |
+TEST_F(SdchManagerTest, AddRemoveNotifications) { |
+ MockSdchObserver observer; |
+ sdch_manager()->AddObserver(&observer); |
+ |
+ std::string dictionary_domain("x.y.z.google.com"); |
+ GURL target_gurl("http://" + dictionary_domain); |
+ std::string dictionary_text(NewSdchDictionary(dictionary_domain)); |
+ std::string client_hash; |
+ std::string server_hash; |
+ SdchManager::GenerateHash(dictionary_text, &client_hash, &server_hash); |
+ EXPECT_TRUE(AddSdchDictionary(dictionary_text, target_gurl)); |
+ EXPECT_EQ(1, observer.dictionary_added_notifications()); |
+ EXPECT_EQ(target_gurl, observer.last_dictionary_url()); |
+ EXPECT_EQ(server_hash, observer.last_server_hash()); |
+ |
+ EXPECT_EQ(SDCH_OK, sdch_manager()->RemoveSdchDictionary(server_hash)); |
+ EXPECT_EQ(1, observer.dictionary_removed_notifications()); |
+ EXPECT_EQ(server_hash, observer.last_server_hash()); |
+ |
+ sdch_manager()->RemoveObserver(&observer); |
} |
} // namespace net |