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

Unified Diff: chrome/browser/content_setting_bubble_model.cc

Issue 650180: Initial Geolocation location bar icons. (Closed)
Patch Set: Addresses Peter and Brett's comments. 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/app/theme/theme_resources.grd ('k') | chrome/browser/content_setting_image_model.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/content_setting_bubble_model.cc
diff --git a/chrome/browser/content_setting_bubble_model.cc b/chrome/browser/content_setting_bubble_model.cc
index e361b12566ce70df362df2e05cc4336e5153f638..6e61eb4ce3acf1e9d9d67f52dbcd0b6da9a89d80 100644
--- a/chrome/browser/content_setting_bubble_model.cc
+++ b/chrome/browser/content_setting_bubble_model.cc
@@ -18,153 +18,209 @@
class ContentSettingTitleAndLinkModel : public ContentSettingBubbleModel {
public:
- ContentSettingTitleAndLinkModel(TabContents* tab_contents, Profile* profile,
- ContentSettingsType content_type)
- : ContentSettingBubbleModel(tab_contents, profile, content_type) {
- SetTitle();
- SetManageLink();
- }
+ ContentSettingTitleAndLinkModel(
+ TabContents* tab_contents, Profile* profile,
+ ContentSettingsType content_type);
private:
- void SetTitle() {
- static const int kTitleIDs[CONTENT_SETTINGS_NUM_TYPES] = {
- IDS_BLOCKED_COOKIES_TITLE,
- IDS_BLOCKED_IMAGES_TITLE,
- IDS_BLOCKED_JAVASCRIPT_TITLE,
- IDS_BLOCKED_PLUGINS_TITLE,
- IDS_BLOCKED_POPUPS_TITLE,
- };
- set_title(l10n_util::GetStringUTF8(kTitleIDs[content_type()]));
- }
+ void SetTitle();
+ void SetManageLink();
- void SetManageLink() {
- static const int kLinkIDs[CONTENT_SETTINGS_NUM_TYPES] = {
- IDS_BLOCKED_COOKIES_LINK,
- IDS_BLOCKED_IMAGES_LINK,
- IDS_BLOCKED_JAVASCRIPT_LINK,
- IDS_BLOCKED_PLUGINS_LINK,
- IDS_BLOCKED_POPUPS_LINK,
- };
- set_manage_link(l10n_util::GetStringUTF8(kLinkIDs[content_type()]));
- }
-
- virtual void OnManageLinkClicked() {
- if (tab_contents())
- tab_contents()->delegate()->ShowContentSettingsWindow(content_type());
- }
+ virtual void OnManageLinkClicked();
};
class ContentSettingSingleRadioGroup : public ContentSettingTitleAndLinkModel {
public:
- ContentSettingSingleRadioGroup(TabContents* tab_contents, Profile* profile,
- ContentSettingsType content_type)
- : ContentSettingTitleAndLinkModel(tab_contents, profile, content_type) {
- SetRadioGroups();
- }
+ ContentSettingSingleRadioGroup(
+ TabContents* tab_contents, Profile* profile,
+ ContentSettingsType content_type);
private:
- void SetRadioGroups() {
- GURL url = tab_contents()->GetURL();
- std::wstring display_host_wide;
- net::AppendFormattedHost(url,
- profile()->GetPrefs()->GetString(prefs::kAcceptLanguages),
- &display_host_wide, NULL, NULL);
- std::string display_host(WideToUTF8(display_host_wide));
-
- RadioGroup radio_group;
- radio_group.host = url.host();
-
- static const int kAllowIDs[CONTENT_SETTINGS_NUM_TYPES] = {
- 0, // We don't manage cookies here.
- IDS_BLOCKED_IMAGES_UNBLOCK,
- IDS_BLOCKED_JAVASCRIPT_UNBLOCK,
- IDS_BLOCKED_PLUGINS_UNBLOCK,
- IDS_BLOCKED_POPUPS_UNBLOCK,
- };
- std::string radio_allow_label;
- radio_allow_label = l10n_util::GetStringFUTF8(
- kAllowIDs[content_type()], UTF8ToUTF16(display_host));
-
- static const int kBlockIDs[CONTENT_SETTINGS_NUM_TYPES] = {
- 0, // We don't manage cookies here.
- IDS_BLOCKED_IMAGES_NO_ACTION,
- IDS_BLOCKED_JAVASCRIPT_NO_ACTION,
- IDS_BLOCKED_PLUGINS_NO_ACTION,
- IDS_BLOCKED_POPUPS_NO_ACTION,
- };
- std::string radio_block_label;
- radio_block_label = l10n_util::GetStringFUTF8(
- kBlockIDs[content_type()], UTF8ToUTF16(display_host));
-
- radio_group.radio_items.push_back(radio_allow_label);
- radio_group.radio_items.push_back(radio_block_label);
- radio_group.default_item =
- profile()->GetHostContentSettingsMap()->GetContentSetting(url,
- content_type()) == CONTENT_SETTING_ALLOW ? 0 : 1;
- add_radio_group(radio_group);
- }
+ void SetRadioGroups();
- virtual void OnRadioClicked(int radio_group, int radio_index) {
- profile()->GetHostContentSettingsMap()->SetContentSetting(
- bubble_content().radio_groups[radio_group].host,
- content_type(),
- radio_index == 0 ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK);
- }
+ virtual void OnRadioClicked(int radio_group, int radio_index);
};
class ContentSettingPopupBubbleModel : public ContentSettingSingleRadioGroup {
public:
- ContentSettingPopupBubbleModel(TabContents* tab_contents, Profile* profile,
- ContentSettingsType content_type)
- : ContentSettingSingleRadioGroup(tab_contents, profile, content_type) {
- SetPopups();
- }
+ ContentSettingPopupBubbleModel(TabContents* tab_contents, Profile* profile);
private:
- void SetPopups() {
- BlockedPopupContainer::BlockedContents blocked_contents;
- DCHECK(tab_contents()->blocked_popup_container());
- tab_contents()->blocked_popup_container()->GetBlockedContents(
- &blocked_contents);
- for (BlockedPopupContainer::BlockedContents::const_iterator
- i(blocked_contents.begin()); i != blocked_contents.end(); ++i) {
- std::string title(UTF16ToUTF8((*i)->GetTitle()));
- // The popup may not have committed a load yet, in which case it won't
- // have a URL or title.
- if (title.empty())
- title = l10n_util::GetStringUTF8(IDS_TAB_LOADING_TITLE);
- PopupItem popup_item;
- popup_item.title = title;
- popup_item.bitmap = (*i)->GetFavIcon();
- popup_item.tab_contents = (*i);
- add_popup(popup_item);
- }
- }
+ void SetPopups();
- virtual void OnPopupClicked(int index) {
- if (tab_contents() && tab_contents()->blocked_popup_container()) {
- tab_contents()->blocked_popup_container()->LaunchPopupForContents(
- bubble_content().popup_items[index].tab_contents);
- }
- }
+ virtual void OnPopupClicked(int index);
};
-// static
-ContentSettingBubbleModel*
- ContentSettingBubbleModel::CreateContentSettingBubbleModel(
- TabContents* tab_contents,
- Profile* profile,
- ContentSettingsType content_type) {
- if (content_type == CONTENT_SETTINGS_TYPE_COOKIES) {
- return new ContentSettingTitleAndLinkModel(tab_contents, profile,
- content_type);
+class ContentSettingGeolocationModel : public ContentSettingTitleAndLinkModel {
+ public:
+ ContentSettingGeolocationModel(TabContents* tab_contents, Profile* profile);
+
+ private:
+ void SetRadioGroups();
+
+ virtual void OnRadioClicked(int radio_group, int radio_index);
+};
+
+ContentSettingTitleAndLinkModel::ContentSettingTitleAndLinkModel(
+ TabContents* tab_contents, Profile* profile,
+ ContentSettingsType content_type)
+ : ContentSettingBubbleModel(tab_contents, profile, content_type) {
+ SetTitle();
+ SetManageLink();
+}
+
+void ContentSettingTitleAndLinkModel::SetTitle() {
+ static const int kTitleIDs[CONTENT_SETTINGS_NUM_TYPES] = {
+ IDS_BLOCKED_COOKIES_TITLE,
+ IDS_BLOCKED_IMAGES_TITLE,
+ IDS_BLOCKED_JAVASCRIPT_TITLE,
+ IDS_BLOCKED_PLUGINS_TITLE,
+ IDS_BLOCKED_POPUPS_TITLE,
+ 0,
+ };
+ if (kTitleIDs[content_type()])
+ set_title(l10n_util::GetStringUTF8(kTitleIDs[content_type()]));
+}
+
+void ContentSettingTitleAndLinkModel::SetManageLink() {
+ static const int kLinkIDs[CONTENT_SETTINGS_NUM_TYPES] = {
+ IDS_BLOCKED_COOKIES_LINK,
+ IDS_BLOCKED_IMAGES_LINK,
+ IDS_BLOCKED_JAVASCRIPT_LINK,
+ IDS_BLOCKED_PLUGINS_LINK,
+ IDS_BLOCKED_POPUPS_LINK,
+ IDS_GEOLOCATION_LINK,
+ };
+ set_manage_link(l10n_util::GetStringUTF8(kLinkIDs[content_type()]));
+}
+
+void ContentSettingTitleAndLinkModel::OnManageLinkClicked() {
+ if (tab_contents())
+ tab_contents()->delegate()->ShowContentSettingsWindow(content_type());
+}
+
+ ContentSettingSingleRadioGroup::ContentSettingSingleRadioGroup(
+ TabContents* tab_contents, Profile* profile,
+ ContentSettingsType content_type)
+ : ContentSettingTitleAndLinkModel(tab_contents, profile, content_type) {
+ SetRadioGroups();
+}
+
+void ContentSettingSingleRadioGroup::SetRadioGroups() {
+ GURL url = tab_contents()->GetURL();
+ std::wstring display_host_wide;
+ net::AppendFormattedHost(url,
+ profile()->GetPrefs()->GetString(prefs::kAcceptLanguages),
+ &display_host_wide, NULL, NULL);
+ std::string display_host(WideToUTF8(display_host_wide));
+
+ RadioGroup radio_group;
+ radio_group.host = url.host();
+
+ static const int kAllowIDs[CONTENT_SETTINGS_NUM_TYPES] = {
+ 0, // We don't manage cookies here.
+ IDS_BLOCKED_IMAGES_UNBLOCK,
+ IDS_BLOCKED_JAVASCRIPT_UNBLOCK,
+ IDS_BLOCKED_PLUGINS_UNBLOCK,
+ IDS_BLOCKED_POPUPS_UNBLOCK,
+ };
+ std::string radio_allow_label;
+ radio_allow_label = l10n_util::GetStringFUTF8(
+ kAllowIDs[content_type()], UTF8ToUTF16(display_host));
+
+ static const int kBlockIDs[CONTENT_SETTINGS_NUM_TYPES] = {
+ 0, // We don't manage cookies here.
+ IDS_BLOCKED_IMAGES_NO_ACTION,
+ IDS_BLOCKED_JAVASCRIPT_NO_ACTION,
+ IDS_BLOCKED_PLUGINS_NO_ACTION,
+ IDS_BLOCKED_POPUPS_NO_ACTION,
+ };
+ std::string radio_block_label;
+ radio_block_label = l10n_util::GetStringFUTF8(
+ kBlockIDs[content_type()], UTF8ToUTF16(display_host));
+
+ radio_group.radio_items.push_back(radio_allow_label);
+ radio_group.radio_items.push_back(radio_block_label);
+ radio_group.default_item =
+ profile()->GetHostContentSettingsMap()->GetContentSetting(url,
+ content_type()) == CONTENT_SETTING_ALLOW ? 0 : 1;
+ add_radio_group(radio_group);
+}
+
+void ContentSettingSingleRadioGroup::OnRadioClicked(
+ int radio_group, int radio_index) {
+ profile()->GetHostContentSettingsMap()->SetContentSetting(
+ bubble_content().radio_groups[radio_group].host,
+ content_type(),
+ radio_index == 0 ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK);
+}
+
+
+ContentSettingPopupBubbleModel::ContentSettingPopupBubbleModel(
+ TabContents* tab_contents, Profile* profile)
+ : ContentSettingSingleRadioGroup(
+ tab_contents, profile, CONTENT_SETTINGS_TYPE_POPUPS) {
+ SetPopups();
+}
+
+void ContentSettingPopupBubbleModel::SetPopups() {
+ BlockedPopupContainer::BlockedContents blocked_contents;
+ DCHECK(tab_contents()->blocked_popup_container());
+ tab_contents()->blocked_popup_container()->GetBlockedContents(
+ &blocked_contents);
+ for (BlockedPopupContainer::BlockedContents::const_iterator
+ i(blocked_contents.begin()); i != blocked_contents.end(); ++i) {
+ std::string title(UTF16ToUTF8((*i)->GetTitle()));
+ // The popup may not have committed a load yet, in which case it won't
+ // have a URL or title.
+ if (title.empty())
+ title = l10n_util::GetStringUTF8(IDS_TAB_LOADING_TITLE);
+ PopupItem popup_item;
+ popup_item.title = title;
+ popup_item.bitmap = (*i)->GetFavIcon();
+ popup_item.tab_contents = (*i);
+ add_popup(popup_item);
}
- if (content_type == CONTENT_SETTINGS_TYPE_POPUPS) {
- return new ContentSettingPopupBubbleModel(tab_contents, profile,
- content_type);
+}
+
+void ContentSettingPopupBubbleModel::OnPopupClicked(int index) {
+ if (tab_contents() && tab_contents()->blocked_popup_container()) {
+ tab_contents()->blocked_popup_container()->LaunchPopupForContents(
+ bubble_content().popup_items[index].tab_contents);
}
- return new ContentSettingSingleRadioGroup(tab_contents, profile,
- content_type);
+}
+
+ContentSettingGeolocationModel::ContentSettingGeolocationModel(
+ TabContents* tab_contents, Profile* profile)
+ : ContentSettingTitleAndLinkModel(
+ tab_contents, profile, CONTENT_SETTINGS_TYPE_GEOLOCATION) {
+ SetRadioGroups();
+}
+
+void ContentSettingGeolocationModel::SetRadioGroups() {
+ const TabContents::GeolocationContentSettings& settings =
+ tab_contents()->geolocation_content_settings();
+ for (TabContents::GeolocationContentSettings::const_iterator i =
+ settings.begin(); i != settings.end(); ++i) {
+ RadioGroup radio_group;
+ radio_group.host = i->first;
+ radio_group.title = l10n_util::GetStringFUTF8(IDS_GEOLOCATION_RADIO_TITLE,
+ UTF8ToUTF16(i->first));
+ radio_group.radio_items.push_back(
+ l10n_util::GetStringUTF8(IDS_GEOLOCATION_RADIO_ALLOW));
+ radio_group.radio_items.push_back(
+ l10n_util::GetStringUTF8(IDS_GEOLOCATION_RADIO_BLOCK));
+ radio_group.default_item = i->second == CONTENT_SETTING_ALLOW ? 0 : 1;
+ add_radio_group(radio_group);
+ }
+}
+
+void ContentSettingGeolocationModel::OnRadioClicked(
+ int radio_group, int radio_index) {
+ profile()->GetHostContentSettingsMap()->SetContentSetting(
+ bubble_content().radio_groups[radio_group].host,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION,
+ radio_index == 0 ? CONTENT_SETTING_ALLOW : CONTENT_SETTING_BLOCK);
}
ContentSettingBubbleModel::ContentSettingBubbleModel(
@@ -186,3 +242,21 @@ void ContentSettingBubbleModel::Observe(NotificationType type,
DCHECK(source == Source<TabContents>(tab_contents_));
tab_contents_ = NULL;
}
+
+// static
+ContentSettingBubbleModel*
+ ContentSettingBubbleModel::CreateContentSettingBubbleModel(
+ TabContents* tab_contents,
+ Profile* profile,
+ ContentSettingsType content_type) {
+ if (content_type == CONTENT_SETTINGS_TYPE_COOKIES) {
+ return new ContentSettingTitleAndLinkModel(tab_contents, profile,
+ content_type);
+ }
+ if (content_type == CONTENT_SETTINGS_TYPE_POPUPS)
+ return new ContentSettingPopupBubbleModel(tab_contents, profile);
+ if (content_type == CONTENT_SETTINGS_TYPE_GEOLOCATION)
+ return new ContentSettingGeolocationModel(tab_contents, profile);
+ return new ContentSettingSingleRadioGroup(tab_contents, profile,
+ content_type);
+}
« no previous file with comments | « chrome/app/theme/theme_resources.grd ('k') | chrome/browser/content_setting_image_model.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698