Index: chrome/browser/content_setting_image_model.cc |
diff --git a/chrome/browser/content_setting_image_model.cc b/chrome/browser/content_setting_image_model.cc |
index 96430f7b8d7968101ffc4074064f8b5e1aaea0d3..9dd2ac39bf4efdbcf7c55ec1543de67952e0ddd0 100644 |
--- a/chrome/browser/content_setting_image_model.cc |
+++ b/chrome/browser/content_setting_image_model.cc |
@@ -12,40 +12,21 @@ |
class ContentSettingBlockedImageModel : public ContentSettingImageModel { |
public: |
explicit ContentSettingBlockedImageModel( |
- ContentSettingsType content_settings_type) |
- : ContentSettingImageModel(content_settings_type) { |
- } |
+ ContentSettingsType content_settings_type); |
- virtual void UpdateFromTabContents(const TabContents* tab_contents) { |
- if (tab_contents && |
- tab_contents->IsContentBlocked(get_content_settings_type())) { |
- set_icon(kBlockedIconIDs[get_content_settings_type()]); |
- set_tooltip( |
- l10n_util::GetStringUTF8(kTooltipIDs[get_content_settings_type()])); |
- set_visible(true); |
- } else { |
- set_visible(false); |
- } |
- } |
+ virtual void UpdateFromTabContents(const TabContents* tab_contents); |
private: |
static const int kBlockedIconIDs[]; |
static const int kTooltipIDs[]; |
- |
}; |
-ContentSettingImageModel::ContentSettingImageModel( |
- ContentSettingsType content_settings_type) |
- : content_settings_type_(content_settings_type), |
- is_visible_(false), |
- icon_(0) { |
-} |
+class ContentSettingGeolocationImageModel : public ContentSettingImageModel { |
+ public: |
+ ContentSettingGeolocationImageModel(); |
-// static |
-ContentSettingImageModel* ContentSettingImageModel:: |
- CreateContentSettingImageModel(ContentSettingsType content_settings_type) { |
- return new ContentSettingBlockedImageModel(content_settings_type); |
-} |
+ virtual void UpdateFromTabContents(const TabContents* tab_contents); |
+}; |
const int ContentSettingBlockedImageModel::kBlockedIconIDs[] = { |
IDR_BLOCKED_COOKIES, |
@@ -62,3 +43,76 @@ const int ContentSettingBlockedImageModel::kTooltipIDs[] = { |
IDS_BLOCKED_PLUGINS_TITLE, |
IDS_BLOCKED_POPUPS_TOOLTIP, |
}; |
+ |
+ |
+ContentSettingBlockedImageModel::ContentSettingBlockedImageModel( |
+ ContentSettingsType content_settings_type) |
+ : ContentSettingImageModel(content_settings_type) { |
+} |
+ |
+void ContentSettingBlockedImageModel::UpdateFromTabContents( |
+ const TabContents* tab_contents) { |
+ if (tab_contents && |
+ tab_contents->IsContentBlocked(get_content_settings_type())) { |
+ set_icon(kBlockedIconIDs[get_content_settings_type()]); |
+ set_tooltip( |
+ l10n_util::GetStringUTF8(kTooltipIDs[get_content_settings_type()])); |
+ set_visible(true); |
+ } else { |
+ set_visible(false); |
+ } |
+} |
+ |
+ContentSettingGeolocationImageModel::ContentSettingGeolocationImageModel() |
+ : ContentSettingImageModel(CONTENT_SETTINGS_TYPE_GEOLOCATION) { |
+} |
+ |
+void ContentSettingGeolocationImageModel::UpdateFromTabContents( |
+ const TabContents* tab_contents) { |
+ if (!tab_contents) { |
+ set_visible(false); |
+ return; |
+ } |
+ const TabContents::GeolocationContentSettings& settings = |
+ tab_contents->geolocation_content_settings(); |
+ if (settings.empty()) { |
+ set_visible(false); |
+ return; |
+ } |
+ bool is_content_blocked = tab_contents->IsContentBlocked( |
+ CONTENT_SETTINGS_TYPE_GEOLOCATION); |
+ set_icon(is_content_blocked ? |
+ IDR_GEOLOCATION_DENIED_LOCATIONBAR_ICON : |
+ IDR_GEOLOCATION_ALLOWED_LOCATIONBAR_ICON); |
+ std::string tooltip; |
+ if (settings.size() == 1) { |
+ tooltip = l10n_util::GetStringFUTF8( |
+ is_content_blocked ? |
+ IDS_GEOLOCATION_BLOCKED_TOOLTIP : |
+ IDS_GEOLOCATION_ALLOWED_TOOLTIP, |
+ UTF8ToUTF16(settings.begin()->first)); |
+ } else { |
+ tooltip = l10n_util::GetStringUTF8( |
+ is_content_blocked ? |
+ IDS_GEOLOCATION_MULTIPLE_BLOCKED_TOOLTIP : |
+ IDS_GEOLOCATION_MULTIPLE_ALLOWED_TOOLTIP); |
+ |
+ } |
+ set_tooltip(tooltip); |
+ set_visible(true); |
+} |
+ |
+ContentSettingImageModel::ContentSettingImageModel( |
+ ContentSettingsType content_settings_type) |
+ : content_settings_type_(content_settings_type), |
+ is_visible_(false), |
+ icon_(0) { |
+} |
+ |
+// static |
+ContentSettingImageModel* ContentSettingImageModel:: |
+ CreateContentSettingImageModel(ContentSettingsType content_settings_type) { |
+ if (content_settings_type == CONTENT_SETTINGS_TYPE_GEOLOCATION) |
+ return new ContentSettingGeolocationImageModel(); |
+ return new ContentSettingBlockedImageModel(content_settings_type); |
+} |