| Index: chrome/browser/geolocation/geolocation_settings_state.cc
|
| diff --git a/chrome/browser/geolocation/geolocation_settings_state.cc b/chrome/browser/geolocation/geolocation_settings_state.cc
|
| index f246598eb2073e9f209537efd2447ab43bbed167..6f8548ecd2c2c2afa7e665c1a952c29f1310882d 100644
|
| --- a/chrome/browser/geolocation/geolocation_settings_state.cc
|
| +++ b/chrome/browser/geolocation/geolocation_settings_state.cc
|
| @@ -50,13 +50,30 @@ void GeolocationSettingsState::GetDetailedInfo(
|
| DCHECK(embedder_url_.is_valid());
|
| const ContentSetting default_setting =
|
| profile_->GetGeolocationContentSettingsMap()->GetDefaultContentSetting();
|
| + std::set<std::string> formatted_hosts;
|
| + std::set<std::string> repeated_formatted_hosts;
|
| +
|
| + // Build a set of repeated formatted hosts
|
| + for (StateMap::const_iterator i(state_map_.begin());
|
| + i != state_map_.end(); ++i) {
|
| + std::string formatted_host = GURLToFormattedHost(i->first);
|
| + if (!formatted_hosts.insert(formatted_host).second) {
|
| + repeated_formatted_hosts.insert(formatted_host);
|
| + }
|
| + }
|
| +
|
| for (StateMap::const_iterator i(state_map_.begin());
|
| i != state_map_.end(); ++i) {
|
| if (i->second == CONTENT_SETTING_ALLOW)
|
| *tab_state_flags |= TABSTATE_HAS_ANY_ALLOWED;
|
| if (formatted_hosts_per_state) {
|
| - (*formatted_hosts_per_state)[i->second].insert(
|
| - GURLToFormattedHost(i->first));
|
| + std::string formatted_host = GURLToFormattedHost(i->first);
|
| + std::string final_formatted_host =
|
| + repeated_formatted_hosts.find(formatted_host) ==
|
| + repeated_formatted_hosts.end() ?
|
| + formatted_host :
|
| + i->first.spec();
|
| + (*formatted_hosts_per_state)[i->second].insert(final_formatted_host);
|
| }
|
|
|
| const ContentSetting saved_setting =
|
|
|