Chromium Code Reviews| Index: chrome/browser/geolocation/geolocation_content_settings_map_unittest.cc |
| diff --git a/chrome/browser/geolocation/geolocation_content_settings_map_unittest.cc b/chrome/browser/geolocation/geolocation_content_settings_map_unittest.cc |
| index c5514ce461204ce88fa81d57a930c9bfd9474497..6af705cbed8cbd5ab8e335163a32699f8559720c 100644 |
| --- a/chrome/browser/geolocation/geolocation_content_settings_map_unittest.cc |
| +++ b/chrome/browser/geolocation/geolocation_content_settings_map_unittest.cc |
| @@ -12,46 +12,51 @@ |
| #include "content/browser/browser_thread.h" |
| #include "content/common/notification_registrar.h" |
| #include "content/common/notification_service.h" |
| +#include "testing/gmock/include/gmock/gmock.h" |
| #include "testing/gtest/include/gtest/gtest.h" |
| +using ::testing::_; |
| namespace { |
| -class StubSettingsObserver : public NotificationObserver { |
| +class MockGeolocationSettingsObserver : public NotificationObserver { |
| public: |
| - StubSettingsObserver() : last_notifier(NULL), counter(0) { |
| - registrar_.Add(this, NotificationType::GEOLOCATION_SETTINGS_CHANGED, |
| - NotificationService::AllSources()); |
| - } |
| + MockGeolocationSettingsObserver(); |
| virtual void Observe(NotificationType type, |
| const NotificationSource& source, |
| - const NotificationDetails& details) { |
| - ++counter; |
| - Source<GeolocationContentSettingsMap> content_settings(source); |
| - Details<ContentSettingsDetails> settings_details(details); |
| - last_notifier = content_settings.ptr(); |
| - last_pattern = settings_details.ptr()->pattern(); |
| - last_update_all = settings_details.ptr()->update_all(); |
| - last_update_all_types = settings_details.ptr()->update_all_types(); |
| - last_type = settings_details.ptr()->type(); |
| - // This checks that calling a Get function from an observer doesn't |
| - // deadlock. |
| - last_notifier->GetContentSetting(GURL("http://random-hostname.com/"), |
| - GURL("http://foo.random-hostname.com/")); |
| - } |
| + const NotificationDetails& details); |
| - GeolocationContentSettingsMap* last_notifier; |
| - ContentSettingsPattern last_pattern; |
| - bool last_update_all; |
| - bool last_update_all_types; |
| - int counter; |
| - ContentSettingsType last_type; |
| + MOCK_METHOD2(OnContentSettingsChanged, |
| + void(GeolocationContentSettingsMap*, |
| + ContentSettingsType)); |
| private: |
| NotificationRegistrar registrar_; |
| }; |
| +MockGeolocationSettingsObserver::MockGeolocationSettingsObserver() { |
| + registrar_.Add(this, NotificationType::GEOLOCATION_SETTINGS_CHANGED, |
| + NotificationService::AllSources()); |
| +} |
| + |
| +void MockGeolocationSettingsObserver::Observe( |
| + NotificationType type, |
| + const NotificationSource& source, |
| + const NotificationDetails& details) { |
| + GeolocationContentSettingsMap* map = |
| + Source<GeolocationContentSettingsMap>(source).ptr(); |
| + ContentSettingsDetails* settings_details = |
| + Details<ContentSettingsDetails>(details).ptr(); |
| + OnContentSettingsChanged(map, |
| + settings_details->type()); |
| + // This checks that calling a Get function from an observer doesn't |
| + // deadlock. |
| + // TODO(bauerb): Move into expectation setup. |
| + map->GetContentSetting(GURL("http://random-hostname.com/"), |
| + GURL("http://foo.random-hostname.com/")); |
| +} |
| + |
| class GeolocationContentSettingsMapTests : public testing::Test { |
| public: |
| GeolocationContentSettingsMapTests() |
| @@ -285,27 +290,27 @@ TEST_F(GeolocationContentSettingsMapTests, Observe) { |
| TestingProfile profile; |
| GeolocationContentSettingsMap* map = |
| profile.GetGeolocationContentSettingsMap(); |
| - StubSettingsObserver observer; |
| + MockGeolocationSettingsObserver observer; |
| EXPECT_EQ(CONTENT_SETTING_ASK, map->GetDefaultContentSetting()); |
| - // Test if a CONTENT_SETTING_CHANGE notification is sent after the geolocation |
| - // default content setting was changed through calling the |
| + // Test if a GEOLOCATION_CONTENT_SETTINGS_CHANGED notification is sent after |
|
battre
2011/06/03 18:48:36
The event is called "GEOLOCATION_SETTINGS_CHANGED"
Bernhard Bauer
2011/06/03 20:34:28
Hooray for consistent naming! Done.
|
| + // the geolocation default content setting was changed through calling the |
| // SetDefaultContentSetting method. |
| + EXPECT_CALL( |
| + observer, |
| + OnContentSettingsChanged(map, CONTENT_SETTINGS_TYPE_DEFAULT)); |
| map->SetDefaultContentSetting(CONTENT_SETTING_BLOCK); |
| - EXPECT_EQ(map, observer.last_notifier); |
| - EXPECT_EQ(CONTENT_SETTINGS_TYPE_DEFAULT, observer.last_type); |
| - EXPECT_EQ(1, observer.counter); |
| - |
| + ::testing::Mock::VerifyAndClearExpectations(&observer); |
| - // Test if a CONTENT_SETTING_CHANGE notification is sent after the preference |
| - // GeolocationDefaultContentSetting was changed. |
| + // Test if a GEOLOCATION_CONTENT_SETTINGS_CHANGED notification is sent after |
|
battre
2011/06/03 18:48:36
same here
|
| + // the preference kGeolocationDefaultContentSetting was changed. |
| PrefService* prefs = profile.GetPrefs(); |
| + EXPECT_CALL( |
| + observer, |
| + OnContentSettingsChanged(map, CONTENT_SETTINGS_TYPE_DEFAULT)); |
| prefs->SetInteger(prefs::kGeolocationDefaultContentSetting, |
| CONTENT_SETTING_ALLOW); |
| - EXPECT_EQ(2, observer.counter); |
| - EXPECT_EQ(map, observer.last_notifier); |
| - EXPECT_EQ(CONTENT_SETTINGS_TYPE_DEFAULT, observer.last_type); |
| EXPECT_EQ(CONTENT_SETTING_ALLOW, map->GetDefaultContentSetting()); |
| } |