Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3690)

Unified Diff: chrome/browser/content_setting_image_model.cc

Issue 1369002: Re-attempt at http://codereview.chromium.org/1344002... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/content_setting_bubble_model.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/content_setting_image_model.cc
===================================================================
--- chrome/browser/content_setting_image_model.cc (revision 42668)
+++ chrome/browser/content_setting_image_model.cc (working copy)
@@ -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,69 @@
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_visible(false);
+ return;
+ }
+ set_icon(kBlockedIconIDs[get_content_settings_type()]);
+ set_tooltip(
+ l10n_util::GetStringUTF8(kTooltipIDs[get_content_settings_type()]));
+ set_visible(true);
+}
+
+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;
+ }
+ set_visible(true);
+ // If any embedded site has access the allowed icon takes priority over the
+ // blocked icon.
+ for (TabContents::GeolocationContentSettings::const_iterator it =
+ settings.begin(); it != settings.end(); ++it ) {
+ if (it->second == CONTENT_SETTING_ALLOW) {
+ set_icon(IDR_GEOLOCATION_ALLOWED_LOCATIONBAR_ICON);
+ set_tooltip(l10n_util::GetStringUTF8(IDS_GEOLOCATION_ALLOWED_TOOLTIP));
+ return;
+ }
+ }
+ set_icon(IDR_GEOLOCATION_DENIED_LOCATIONBAR_ICON);
+ set_tooltip(l10n_util::GetStringUTF8(IDS_GEOLOCATION_BLOCKED_TOOLTIP));
+}
+
+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);
+}
« no previous file with comments | « chrome/browser/content_setting_bubble_model.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698