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

Unified Diff: chrome/browser/ui/content_settings/content_setting_bubble_model.cc

Issue 1025503002: Use same base class for popup and plugin blocking UI (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: msw comments Created 5 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
Index: chrome/browser/ui/content_settings/content_setting_bubble_model.cc
diff --git a/chrome/browser/ui/content_settings/content_setting_bubble_model.cc b/chrome/browser/ui/content_settings/content_setting_bubble_model.cc
index 8154cb2a5df90a083944b0263fa001ccc6e4467c..8f09213e8970596bfe7e2d96b9368af3073204b7 100644
--- a/chrome/browser/ui/content_settings/content_setting_bubble_model.cc
+++ b/chrome/browser/ui/content_settings/content_setting_bubble_model.cc
@@ -36,6 +36,7 @@
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_contents_delegate.h"
#include "grit/components_strings.h"
+#include "grit/theme_resources.h"
#include "net/base/net_util.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
@@ -114,11 +115,6 @@ void ContentSettingTitleAndLinkModel::SetTitle() {
TabSpecificContentSettings::FromWebContents(web_contents());
}
- if (content_type() == CONTENT_SETTINGS_TYPE_PLUGINS && content_settings &&
- content_settings->IsContentBlocked(content_type())) {
- set_plugin_names(content_settings->GetBlockedPluginNames());
- }
-
static const ContentSettingsTypeIdEntry kBlockedTitleIDs[] = {
{CONTENT_SETTINGS_TYPE_COOKIES, IDS_BLOCKED_COOKIES_TITLE},
{CONTENT_SETTINGS_TYPE_IMAGES, IDS_BLOCKED_IMAGES_TITLE},
@@ -425,8 +421,7 @@ class ContentSettingCookiesBubbleModel : public ContentSettingSingleRadioGroup {
public:
ContentSettingCookiesBubbleModel(Delegate* delegate,
WebContents* web_contents,
- Profile* profile,
- ContentSettingsType content_type);
+ Profile* profile);
~ContentSettingCookiesBubbleModel() override;
@@ -437,11 +432,11 @@ class ContentSettingCookiesBubbleModel : public ContentSettingSingleRadioGroup {
ContentSettingCookiesBubbleModel::ContentSettingCookiesBubbleModel(
Delegate* delegate,
WebContents* web_contents,
- Profile* profile,
- ContentSettingsType content_type)
- : ContentSettingSingleRadioGroup(
- delegate, web_contents, profile, content_type) {
- DCHECK_EQ(CONTENT_SETTINGS_TYPE_COOKIES, content_type);
+ Profile* profile)
+ : ContentSettingSingleRadioGroup(delegate,
msw 2015/03/21 00:25:19 nit: un-wrap "delegate, web_contents, profile," he
meacer 2015/03/23 18:19:40 Did you mean the formatting? This is the |git cl f
+ web_contents,
+ profile,
+ CONTENT_SETTINGS_TYPE_COOKIES) {
set_custom_link_enabled(true);
}
@@ -465,27 +460,27 @@ void ContentSettingCookiesBubbleModel::OnCustomLinkClicked() {
delegate()->ShowCollectedCookiesDialog(web_contents());
}
-class ContentSettingPluginBubbleModel : public ContentSettingSingleRadioGroup {
+class PluginBubbleModel : public ContentSettingSingleRadioGroup {
public:
- ContentSettingPluginBubbleModel(Delegate* delegate,
- WebContents* web_contents,
- Profile* profile,
- ContentSettingsType content_type);
+ PluginBubbleModel(Delegate* delegate,
+ WebContents* web_contents,
+ Profile* profile);
- ~ContentSettingPluginBubbleModel() override;
+ ~PluginBubbleModel() override;
private:
void OnCustomLinkClicked() override;
+
+ void SetListItems();
};
-ContentSettingPluginBubbleModel::ContentSettingPluginBubbleModel(
- Delegate* delegate,
- WebContents* web_contents,
- Profile* profile,
- ContentSettingsType content_type)
- : ContentSettingSingleRadioGroup(
- delegate, web_contents, profile, content_type) {
- DCHECK_EQ(content_type, CONTENT_SETTINGS_TYPE_PLUGINS);
+PluginBubbleModel::PluginBubbleModel(Delegate* delegate,
+ WebContents* web_contents,
+ Profile* profile)
+ : ContentSettingSingleRadioGroup(delegate,
+ web_contents,
+ profile,
+ CONTENT_SETTINGS_TYPE_PLUGINS) {
// Disable the "Run all plugins this time" link if the setting is managed and
// can't be controlled by the user or if the user already clicked on the link
// and ran all plugins.
@@ -493,9 +488,10 @@ ContentSettingPluginBubbleModel::ContentSettingPluginBubbleModel(
web_contents &&
TabSpecificContentSettings::FromWebContents(
web_contents)->load_plugins_link_enabled());
+ SetListItems();
msw 2015/03/21 00:25:19 nit: inline this?
meacer 2015/03/23 18:19:40 Done.
}
-ContentSettingPluginBubbleModel::~ContentSettingPluginBubbleModel() {
+PluginBubbleModel::~PluginBubbleModel() {
if (settings_changed()) {
// If the user elected to allow all plugins then run plugins at this time.
if (selected_item() == kAllowButtonIndex)
@@ -503,7 +499,25 @@ ContentSettingPluginBubbleModel::~ContentSettingPluginBubbleModel() {
}
}
-void ContentSettingPluginBubbleModel::OnCustomLinkClicked() {
+void PluginBubbleModel::SetListItems() {
+ if (!web_contents())
+ return;
+ TabSpecificContentSettings* content_settings =
+ TabSpecificContentSettings::FromWebContents(web_contents());
+
+ const std::vector<base::string16>& blocked_plugins =
+ content_settings->blocked_plugin_names();
+ for (auto iter = blocked_plugins.begin(); iter != blocked_plugins.end();
+ ++iter) {
+ // TODO(meacer): Link to chrome://plugins#plugin_id from here.
+ ListItem plugin_item(ui::ResourceBundle::GetSharedInstance().GetImageNamed(
+ IDR_BLOCKED_PLUGINS),
+ base::UTF16ToUTF8(*iter), false, 0);
+ add_list_item(plugin_item);
+ }
+}
+
+void PluginBubbleModel::OnCustomLinkClicked() {
content::RecordAction(UserMetricsAction("ClickToPlay_LoadAll_Bubble"));
// Web contents can be NULL if the tab was closed while the plugins
// settings bubble is visible.
@@ -519,54 +533,54 @@ void ContentSettingPluginBubbleModel::OnCustomLinkClicked() {
set_load_plugins_link_enabled(false);
}
-class ContentSettingPopupBubbleModel : public ContentSettingSingleRadioGroup {
+class PopupBubbleModel : public ContentSettingSingleRadioGroup {
public:
- ContentSettingPopupBubbleModel(Delegate* delegate,
- WebContents* web_contents,
- Profile* profile,
- ContentSettingsType content_type);
- ~ContentSettingPopupBubbleModel() override {}
+ PopupBubbleModel(Delegate* delegate,
+ WebContents* web_contents,
+ Profile* profile);
+ ~PopupBubbleModel() override {}
private:
- void SetPopups();
- void OnPopupClicked(int index) override;
+ void OnListItemClicked(int index) override;
+
+ void SetListItems();
+
+ int32 item_id_from_item_index(int index) const {
+ return bubble_content().list_items[index].item_id;
+ }
};
-ContentSettingPopupBubbleModel::ContentSettingPopupBubbleModel(
- Delegate* delegate,
- WebContents* web_contents,
- Profile* profile,
- ContentSettingsType content_type)
- : ContentSettingSingleRadioGroup(
- delegate, web_contents, profile, content_type) {
- SetPopups();
+PopupBubbleModel::PopupBubbleModel(Delegate* delegate,
+ WebContents* web_contents,
+ Profile* profile)
+ : ContentSettingSingleRadioGroup(delegate,
+ web_contents,
+ profile,
+ CONTENT_SETTINGS_TYPE_POPUPS) {
+ SetListItems();
}
-
-void ContentSettingPopupBubbleModel::SetPopups() {
+void PopupBubbleModel::SetListItems() {
msw 2015/03/21 00:25:19 ditto nit: inline this?
meacer 2015/03/23 18:19:40 Done.
std::map<int32, GURL> blocked_popups =
PopupBlockerTabHelper::FromWebContents(web_contents())
->GetBlockedPopupRequests();
- for (std::map<int32, GURL>::const_iterator iter = blocked_popups.begin();
- iter != blocked_popups.end();
+ for (auto iter = blocked_popups.begin(); iter != blocked_popups.end();
++iter) {
std::string title(iter->second.spec());
// The popup may not have a valid URL.
if (title.empty())
title = l10n_util::GetStringUTF8(IDS_TAB_LOADING_TITLE);
- PopupItem popup_item(
- ui::ResourceBundle::GetSharedInstance().GetImageNamed(
- IDR_DEFAULT_FAVICON),
- title,
- iter->first);
- add_popup(popup_item);
+ ListItem popup_item(ui::ResourceBundle::GetSharedInstance().GetImageNamed(
+ IDR_DEFAULT_FAVICON),
+ title, true, iter->first);
+ add_list_item(popup_item);
}
}
-void ContentSettingPopupBubbleModel::OnPopupClicked(int index) {
+void PopupBubbleModel::OnListItemClicked(int index) {
if (web_contents()) {
- PopupBlockerTabHelper::FromWebContents(web_contents())->
- ShowBlockedPopup(bubble_content().popup_items[index].popup_id);
+ PopupBlockerTabHelper::FromWebContents(web_contents())
+ ->ShowBlockedPopup(item_id_from_item_index(index));
}
}
@@ -968,8 +982,7 @@ class ContentSettingMixedScriptBubbleModel
public:
ContentSettingMixedScriptBubbleModel(Delegate* delegate,
WebContents* web_contents,
- Profile* profile,
- ContentSettingsType content_type);
+ Profile* profile);
~ContentSettingMixedScriptBubbleModel() override {}
@@ -980,11 +993,11 @@ class ContentSettingMixedScriptBubbleModel
ContentSettingMixedScriptBubbleModel::ContentSettingMixedScriptBubbleModel(
Delegate* delegate,
WebContents* web_contents,
- Profile* profile,
- ContentSettingsType content_type)
- : ContentSettingTitleLinkAndCustomModel(
- delegate, web_contents, profile, content_type) {
- DCHECK_EQ(content_type, CONTENT_SETTINGS_TYPE_MIXEDSCRIPT);
+ Profile* profile)
+ : ContentSettingTitleLinkAndCustomModel(delegate,
+ web_contents,
+ profile,
+ CONTENT_SETTINGS_TYPE_MIXEDSCRIPT) {
content_settings::RecordMixedScriptAction(
content_settings::MIXED_SCRIPT_ACTION_DISPLAYED_BUBBLE);
set_custom_link_enabled(true);
@@ -1004,16 +1017,15 @@ ContentSettingRPHBubbleModel::ContentSettingRPHBubbleModel(
Delegate* delegate,
WebContents* web_contents,
Profile* profile,
- ProtocolHandlerRegistry* registry,
- ContentSettingsType content_type)
- : ContentSettingTitleAndLinkModel(
- delegate, web_contents, profile, content_type),
+ ProtocolHandlerRegistry* registry)
+ : ContentSettingTitleAndLinkModel(delegate,
+ web_contents,
+ profile,
+ CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS),
selected_item_(0),
registry_(registry),
pending_handler_(ProtocolHandler::EmptyProtocolHandler()),
previous_handler_(ProtocolHandler::EmptyProtocolHandler()) {
- DCHECK_EQ(CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, content_type);
-
TabSpecificContentSettings* content_settings =
TabSpecificContentSettings::FromWebContents(web_contents);
pending_handler_ = content_settings->pending_protocol_handler();
@@ -1136,8 +1148,7 @@ class ContentSettingMidiSysExBubbleModel
public:
ContentSettingMidiSysExBubbleModel(Delegate* delegate,
WebContents* web_contents,
- Profile* profile,
- ContentSettingsType content_type);
+ Profile* profile);
~ContentSettingMidiSysExBubbleModel() override {}
private:
@@ -1149,11 +1160,11 @@ class ContentSettingMidiSysExBubbleModel
ContentSettingMidiSysExBubbleModel::ContentSettingMidiSysExBubbleModel(
Delegate* delegate,
WebContents* web_contents,
- Profile* profile,
- ContentSettingsType content_type)
- : ContentSettingTitleAndLinkModel(
- delegate, web_contents, profile, content_type) {
- DCHECK_EQ(CONTENT_SETTINGS_TYPE_MIDI_SYSEX, content_type);
+ Profile* profile)
+ : ContentSettingTitleAndLinkModel(delegate,
+ web_contents,
+ profile,
+ CONTENT_SETTINGS_TYPE_MIDI_SYSEX) {
SetDomainsAndCustomLink();
}
@@ -1226,12 +1237,11 @@ ContentSettingBubbleModel*
Profile* profile,
ContentSettingsType content_type) {
if (content_type == CONTENT_SETTINGS_TYPE_COOKIES) {
- return new ContentSettingCookiesBubbleModel(delegate, web_contents, profile,
- content_type);
+ return new ContentSettingCookiesBubbleModel(delegate, web_contents,
+ profile);
}
if (content_type == CONTENT_SETTINGS_TYPE_POPUPS) {
- return new ContentSettingPopupBubbleModel(delegate, web_contents, profile,
- content_type);
+ return new PopupBubbleModel(delegate, web_contents, profile);
}
if (content_type == CONTENT_SETTINGS_TYPE_GEOLOCATION) {
return new ContentSettingDomainListBubbleModel(delegate, web_contents,
@@ -1242,22 +1252,21 @@ ContentSettingBubbleModel*
profile);
}
if (content_type == CONTENT_SETTINGS_TYPE_PLUGINS) {
- return new ContentSettingPluginBubbleModel(delegate, web_contents, profile,
- content_type);
+ return new PluginBubbleModel(delegate, web_contents, profile);
}
if (content_type == CONTENT_SETTINGS_TYPE_MIXEDSCRIPT) {
return new ContentSettingMixedScriptBubbleModel(delegate, web_contents,
- profile, content_type);
+ profile);
}
if (content_type == CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS) {
ProtocolHandlerRegistry* registry =
ProtocolHandlerRegistryFactory::GetForBrowserContext(profile);
return new ContentSettingRPHBubbleModel(delegate, web_contents, profile,
- registry, content_type);
+ registry);
}
if (content_type == CONTENT_SETTINGS_TYPE_MIDI_SYSEX) {
return new ContentSettingMidiSysExBubbleModel(delegate, web_contents,
- profile, content_type);
+ profile);
}
return new ContentSettingSingleRadioGroup(delegate, web_contents, profile,
content_type);

Powered by Google App Engine
This is Rietveld 408576698