Index: chrome/browser/geolocation/geolocation_settings_state_unittest.cc |
diff --git a/chrome/browser/geolocation/geolocation_settings_state_unittest.cc b/chrome/browser/geolocation/geolocation_settings_state_unittest.cc |
index f7c9c173ef14028ef6d9aef5ff7e3abbae4e9fc3..f001ed28474bd1128ee0196d330040ef0486f636 100644 |
--- a/chrome/browser/geolocation/geolocation_settings_state_unittest.cc |
+++ b/chrome/browser/geolocation/geolocation_settings_state_unittest.cc |
@@ -119,4 +119,67 @@ TEST_F(GeolocationSettingsStateTests, ClearOnNewOrigin) { |
EXPECT_EQ(0U, tab_state_flags); |
} |
+TEST_F(GeolocationSettingsStateTests, ShowPortOnSameHost) { |
+ TestingProfile profile; |
+ GeolocationSettingsState state(&profile); |
+ GURL url_0("http://www.example.com"); |
+ |
+ NavigationEntry entry; |
+ entry.set_url(url_0); |
+ NavigationController::LoadCommittedDetails load_committed_details; |
+ load_committed_details.entry = &entry; |
+ state.DidNavigate(load_committed_details); |
+ |
+ profile.GetGeolocationContentSettingsMap()->SetContentSetting( |
+ url_0, url_0, CONTENT_SETTING_ALLOW); |
+ state.OnGeolocationPermissionSet(url_0, true); |
+ |
+ GURL url_1("https://www.example.com"); |
+ profile.GetGeolocationContentSettingsMap()->SetContentSetting( |
+ url_1, url_0, CONTENT_SETTING_ALLOW); |
+ state.OnGeolocationPermissionSet(url_1, true); |
+ |
+ GURL url_2("http://www.example1.com"); |
+ profile.GetGeolocationContentSettingsMap()->SetContentSetting( |
+ url_2, url_0, CONTENT_SETTING_ALLOW); |
+ state.OnGeolocationPermissionSet(url_2, true); |
+ |
+ GeolocationSettingsState::StateMap state_map = |
+ state.state_map(); |
+ EXPECT_EQ(3U, state_map.size()); |
+ |
+ GeolocationSettingsState::FormattedHostsPerState formatted_host_per_state; |
+ unsigned int tab_state_flags = 0; |
+ state.GetDetailedInfo(&formatted_host_per_state, &tab_state_flags); |
+ |
+ EXPECT_EQ(3U, formatted_host_per_state[CONTENT_SETTING_ALLOW].size()); |
+ EXPECT_EQ(1U, |
+ formatted_host_per_state[CONTENT_SETTING_ALLOW].count( |
+ url_0.spec())); |
+ EXPECT_EQ(1U, |
+ formatted_host_per_state[CONTENT_SETTING_ALLOW].count( |
+ url_1.spec())); |
+ EXPECT_EQ(1U, |
+ formatted_host_per_state[CONTENT_SETTING_ALLOW].count( |
+ url_2.host())); |
+ |
+ state.OnGeolocationPermissionSet(url_1, false); |
+ formatted_host_per_state.clear(); |
+ tab_state_flags = 0; |
+ state.GetDetailedInfo(&formatted_host_per_state, &tab_state_flags); |
+ |
+ EXPECT_EQ(2U, formatted_host_per_state[CONTENT_SETTING_ALLOW].size()); |
+ EXPECT_EQ(1U, |
+ formatted_host_per_state[CONTENT_SETTING_ALLOW].count( |
+ url_0.spec())); |
+ EXPECT_EQ(1U, |
+ formatted_host_per_state[CONTENT_SETTING_ALLOW].count( |
+ url_2.host())); |
+ EXPECT_EQ(1U, formatted_host_per_state[CONTENT_SETTING_BLOCK].size()); |
+ EXPECT_EQ(1U, |
+ formatted_host_per_state[CONTENT_SETTING_BLOCK].count( |
+ url_1.spec())); |
+} |
+ |
+ |
} // namespace |