| 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 bfd711a8d0e036d125082fc931d49a5f7ec52133..e9e58cd5ef5016120525d24a64e04cc4c5f196a7 100644
|
| --- a/chrome/browser/ui/content_settings/content_setting_bubble_model.cc
|
| +++ b/chrome/browser/ui/content_settings/content_setting_bubble_model.cc
|
| @@ -226,7 +226,9 @@ ContentSettingSingleRadioGroup::ContentSettingSingleRadioGroup(
|
| WebContents* web_contents,
|
| Profile* profile,
|
| ContentSettingsType content_type)
|
| - : ContentSettingSimpleBubbleModel(delegate, web_contents, profile,
|
| + : ContentSettingSimpleBubbleModel(delegate,
|
| + web_contents,
|
| + profile,
|
| content_type),
|
| block_setting_(CONTENT_SETTING_BLOCK),
|
| selected_item_(0) {
|
| @@ -1007,6 +1009,7 @@ ContentSettingRPHBubbleModel::ContentSettingRPHBubbleModel(
|
| profile,
|
| CONTENT_SETTINGS_TYPE_PROTOCOL_HANDLERS),
|
| selected_item_(0),
|
| + interacted_(false),
|
| registry_(registry),
|
| pending_handler_(ProtocolHandler::EmptyProtocolHandler()),
|
| previous_handler_(ProtocolHandler::EmptyProtocolHandler()) {
|
| @@ -1068,10 +1071,25 @@ ContentSettingRPHBubbleModel::ContentSettingRPHBubbleModel(
|
| set_radio_group(radio_group);
|
| }
|
|
|
| +ContentSettingRPHBubbleModel::~ContentSettingRPHBubbleModel() {
|
| + if (!web_contents() || !interacted_)
|
| + return;
|
| +
|
| + // The user has one chance to deal with the RPH content setting UI,
|
| + // then we remove it.
|
| + TabSpecificContentSettings::FromWebContents(web_contents())->
|
| + ClearPendingProtocolHandler();
|
| + content::NotificationService::current()->Notify(
|
| + chrome::NOTIFICATION_WEB_CONTENT_SETTINGS_CHANGED,
|
| + content::Source<WebContents>(web_contents()),
|
| + content::NotificationService::NoDetails());
|
| +}
|
| +
|
| void ContentSettingRPHBubbleModel::OnRadioClicked(int radio_index) {
|
| if (selected_item_ == radio_index)
|
| return;
|
|
|
| + interacted_ = true;
|
| selected_item_ = radio_index;
|
|
|
| if (radio_index == RPH_ALLOW)
|
| @@ -1085,17 +1103,7 @@ void ContentSettingRPHBubbleModel::OnRadioClicked(int radio_index) {
|
| }
|
|
|
| void ContentSettingRPHBubbleModel::OnDoneClicked() {
|
| - if (!web_contents())
|
| - return;
|
| -
|
| - // The user has one chance to deal with the RPH content setting UI,
|
| - // then we remove it.
|
| - TabSpecificContentSettings::FromWebContents(web_contents())->
|
| - ClearPendingProtocolHandler();
|
| - content::NotificationService::current()->Notify(
|
| - chrome::NOTIFICATION_WEB_CONTENT_SETTINGS_CHANGED,
|
| - content::Source<WebContents>(web_contents()),
|
| - content::NotificationService::NoDetails());
|
| + interacted_ = true;
|
| }
|
|
|
| void ContentSettingRPHBubbleModel::RegisterProtocolHandler() {
|
|
|