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

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

Issue 10782038: Revert 147045 - Bring up a content settings icon for ungestured registerProtocolHandler call. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 8 years, 5 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
===================================================================
--- chrome/browser/ui/content_settings/content_setting_bubble_model.cc (revision 147078)
+++ chrome/browser/ui/content_settings/content_setting_bubble_model.cc (working copy)
@@ -8,7 +8,6 @@
#include "chrome/browser/content_settings/content_settings_utils.h"
#include "chrome/browser/content_settings/cookie_settings.h"
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
-#include "chrome/browser/custom_handlers/protocol_handler_registry.h"
#include "chrome/browser/favicon/favicon_tab_helper.h"
#include "chrome/browser/infobars/infobar_tab_helper.h"
#include "chrome/browser/prefs/pref_service.h"
@@ -129,7 +128,6 @@
{CONTENT_SETTINGS_TYPE_POPUPS, IDS_BLOCKED_POPUPS_LINK},
{CONTENT_SETTINGS_TYPE_GEOLOCATION, IDS_GEOLOCATION_BUBBLE_MANAGE_LINK},
{CONTENT_SETTINGS_TYPE_MIXEDSCRIPT, IDS_LEARN_MORE},
- {CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, IDS_HANDLERS_BUBBLE_MANAGE_LINK}
};
set_manage_link(l10n_util::GetStringUTF8(
GetIdForContentType(kLinkIDs, arraysize(kLinkIDs), content_type())));
@@ -522,185 +520,26 @@
ContentSettingMixedScriptBubbleModel(Delegate* delegate,
TabContents* tab_contents,
Profile* profile,
- ContentSettingsType content_type);
+ ContentSettingsType content_type)
+ : ContentSettingTitleLinkAndCustomModel(
+ delegate, tab_contents, profile, content_type) {
+ DCHECK_EQ(content_type, CONTENT_SETTINGS_TYPE_MIXEDSCRIPT);
+ set_custom_link_enabled(true);
+ }
virtual ~ContentSettingMixedScriptBubbleModel() {}
private:
- virtual void OnCustomLinkClicked() OVERRIDE;
+ virtual void OnCustomLinkClicked() OVERRIDE {
+ content::RecordAction(UserMetricsAction("MixedScript_LoadAnyway_Bubble"));
+ DCHECK(tab_contents());
+ content::RenderViewHost* host =
+ tab_contents()->web_contents()->GetRenderViewHost();
+ host->Send(new ChromeViewMsg_SetAllowRunningInsecureContent(
+ host->GetRoutingID(), true));
+ }
};
-ContentSettingMixedScriptBubbleModel::ContentSettingMixedScriptBubbleModel(
- Delegate* delegate,
- TabContents* tab_contents,
- Profile* profile,
- ContentSettingsType content_type)
- : ContentSettingTitleLinkAndCustomModel(
- delegate, tab_contents, profile, content_type) {
- DCHECK_EQ(content_type, CONTENT_SETTINGS_TYPE_MIXEDSCRIPT);
- set_custom_link_enabled(true);
-}
-
-void ContentSettingMixedScriptBubbleModel::OnCustomLinkClicked() {
- content::RecordAction(UserMetricsAction("MixedScript_LoadAnyway_Bubble"));
- DCHECK(tab_contents());
- content::RenderViewHost* host =
- tab_contents()->web_contents()->GetRenderViewHost();
- host->Send(new ChromeViewMsg_SetAllowRunningInsecureContent(
- host->GetRoutingID(), true));
-}
-
-class ContentSettingRPHBubbleModel : public ContentSettingTitleAndLinkModel {
- public:
- ContentSettingRPHBubbleModel(Delegate* delegate,
- TabContents* tab_contents,
- Profile* profile,
- ContentSettingsType content_type);
-
- virtual void OnRadioClicked(int radio_index) OVERRIDE;
-
- private:
- // These states must match the order of appearance of the radio buttons
- // in the XIB file for the Mac port.
- enum RPHState {
- RPH_ALLOW = 0,
- RPH_BLOCK,
- RPH_IGNORE,
- };
-
- void RegisterProtocolHandler();
- void UnregisterProtocolHandler();
- void IgnoreProtocolHandler();
- void ClearOrSetPreviousHandler();
-
- int selected_item_;
- ProtocolHandler pending_handler_;
- ProtocolHandler previous_handler_;
-};
-
-ContentSettingRPHBubbleModel::ContentSettingRPHBubbleModel(
- Delegate* delegate,
- TabContents* tab_contents,
- Profile* profile,
- ContentSettingsType content_type)
- : ContentSettingTitleAndLinkModel(
- delegate, tab_contents, profile, content_type),
- selected_item_(0),
- pending_handler_(ProtocolHandler::EmptyProtocolHandler()),
- previous_handler_(ProtocolHandler::EmptyProtocolHandler()) {
- DCHECK_EQ(CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS, content_type);
-
- TabSpecificContentSettings* content_settings =
- tab_contents->content_settings();
- pending_handler_ = content_settings->pending_protocol_handler();
- previous_handler_ = content_settings->previous_protocol_handler();
-
- string16 protocol;
- if (pending_handler_.protocol() == "mailto") {
- protocol = l10n_util::GetStringUTF16(
- IDS_REGISTER_PROTOCOL_HANDLER_MAILTO_NAME);
- } else if (pending_handler_.protocol() == "webcal") {
- protocol = l10n_util::GetStringUTF16(
- IDS_REGISTER_PROTOCOL_HANDLER_WEBCAL_NAME);
- } else {
- protocol = UTF8ToUTF16(pending_handler_.protocol());
- }
-
- if (previous_handler_.IsEmpty()) {
- set_title(l10n_util::GetStringFUTF8(
- IDS_REGISTER_PROTOCOL_HANDLER_CONFIRM,
- pending_handler_.title(), UTF8ToUTF16(pending_handler_.url().host()),
- protocol));
- } else {
- set_title(l10n_util::GetStringFUTF8(
- IDS_REGISTER_PROTOCOL_HANDLER_CONFIRM_REPLACE,
- pending_handler_.title(), UTF8ToUTF16(pending_handler_.url().host()),
- protocol, previous_handler_.title()));
- }
-
- std::string radio_allow_label =
- l10n_util::GetStringFUTF8(IDS_REGISTER_PROTOCOL_HANDLER_ACCEPT,
- pending_handler_.title());
- std::string radio_deny_label =
- l10n_util::GetStringUTF8(IDS_REGISTER_PROTOCOL_HANDLER_DENY);
- std::string radio_ignore_label =
- l10n_util::GetStringUTF8(IDS_REGISTER_PROTOCOL_HANDLER_IGNORE);
-
- GURL url = tab_contents->web_contents()->GetURL();
- RadioGroup radio_group;
- radio_group.url = url;
-
- radio_group.radio_items.push_back(radio_allow_label);
- radio_group.radio_items.push_back(radio_deny_label);
- radio_group.radio_items.push_back(radio_ignore_label);
- ContentSetting setting =
- content_settings->pending_protocol_handler_setting();
- if (setting == CONTENT_SETTING_ALLOW)
- radio_group.default_item = RPH_ALLOW;
- else if (setting == CONTENT_SETTING_BLOCK)
- radio_group.default_item = RPH_BLOCK;
- else
- radio_group.default_item = RPH_IGNORE;
-
- selected_item_ = radio_group.default_item;
- set_radio_group_enabled(true);
- set_radio_group(radio_group);
-}
-
-void ContentSettingRPHBubbleModel::OnRadioClicked(int radio_index) {
- if (selected_item_ == radio_index)
- return;
-
- selected_item_ = radio_index;
-
- if (radio_index == RPH_ALLOW)
- RegisterProtocolHandler();
- else if (radio_index == RPH_BLOCK)
- UnregisterProtocolHandler();
- else if (radio_index == RPH_IGNORE)
- IgnoreProtocolHandler();
- else
- NOTREACHED();
-}
-
-void ContentSettingRPHBubbleModel::RegisterProtocolHandler() {
- // A no-op if the handler hasn't been ignored, but needed in case the user
- // selects sequences like register/ignore/register.
- profile()->GetProtocolHandlerRegistry()->RemoveIgnoredHandler(
- pending_handler_);
-
- profile()->GetProtocolHandlerRegistry()->OnAcceptRegisterProtocolHandler(
- pending_handler_);
- tab_contents()->content_settings()->set_pending_protocol_handler_setting(
- CONTENT_SETTING_ALLOW);
-}
-
-void ContentSettingRPHBubbleModel::UnregisterProtocolHandler() {
- profile()->GetProtocolHandlerRegistry()->OnDenyRegisterProtocolHandler(
- pending_handler_);
- tab_contents()->content_settings()->set_pending_protocol_handler_setting(
- CONTENT_SETTING_BLOCK);
- ClearOrSetPreviousHandler();
-}
-
-void ContentSettingRPHBubbleModel::IgnoreProtocolHandler() {
- profile()->GetProtocolHandlerRegistry()->OnIgnoreRegisterProtocolHandler(
- pending_handler_);
- tab_contents()->content_settings()->set_pending_protocol_handler_setting(
- CONTENT_SETTING_DEFAULT);
- ClearOrSetPreviousHandler();
-}
-
-void ContentSettingRPHBubbleModel::ClearOrSetPreviousHandler() {
- if (previous_handler_.IsEmpty()) {
- profile()->GetProtocolHandlerRegistry()->ClearDefault(
- pending_handler_.protocol());
- } else {
- profile()->GetProtocolHandlerRegistry()->OnAcceptRegisterProtocolHandler(
- previous_handler_);
- }
-}
-
// static
ContentSettingBubbleModel*
ContentSettingBubbleModel::CreateContentSettingBubbleModel(
@@ -728,10 +567,6 @@
return new ContentSettingMixedScriptBubbleModel(delegate, tab_contents,
profile, content_type);
}
- if (content_type == CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS) {
- return new ContentSettingRPHBubbleModel(delegate, tab_contents, profile,
- content_type);
- }
return new ContentSettingSingleRadioGroup(delegate, tab_contents, profile,
content_type);
}

Powered by Google App Engine
This is Rietveld 408576698