| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" | 5 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/macros.h" | 8 #include "base/macros.h" |
| 9 #include "base/prefs/pref_service.h" | 9 #include "base/prefs/pref_service.h" |
| 10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
| (...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 249 Profile* profile, | 249 Profile* profile, |
| 250 ContentSettingsType content_type); | 250 ContentSettingsType content_type); |
| 251 ~ContentSettingSingleRadioGroup() override; | 251 ~ContentSettingSingleRadioGroup() override; |
| 252 | 252 |
| 253 protected: | 253 protected: |
| 254 bool settings_changed() const; | 254 bool settings_changed() const; |
| 255 int selected_item() const { return selected_item_; } | 255 int selected_item() const { return selected_item_; } |
| 256 | 256 |
| 257 private: | 257 private: |
| 258 void SetRadioGroup(); | 258 void SetRadioGroup(); |
| 259 void AddException(ContentSetting setting); | 259 void SetNarrowestContentSetting(ContentSetting setting); |
| 260 void OnRadioClicked(int radio_index) override; | 260 void OnRadioClicked(int radio_index) override; |
| 261 | 261 |
| 262 ContentSetting block_setting_; | 262 ContentSetting block_setting_; |
| 263 int selected_item_; | 263 int selected_item_; |
| 264 }; | 264 }; |
| 265 | 265 |
| 266 ContentSettingSingleRadioGroup::ContentSettingSingleRadioGroup( | 266 ContentSettingSingleRadioGroup::ContentSettingSingleRadioGroup( |
| 267 Delegate* delegate, | 267 Delegate* delegate, |
| 268 WebContents* web_contents, | 268 WebContents* web_contents, |
| 269 Profile* profile, | 269 Profile* profile, |
| 270 ContentSettingsType content_type) | 270 ContentSettingsType content_type) |
| 271 : ContentSettingTitleLinkAndCustomModel(delegate, web_contents, profile, | 271 : ContentSettingTitleLinkAndCustomModel(delegate, web_contents, profile, |
| 272 content_type), | 272 content_type), |
| 273 block_setting_(CONTENT_SETTING_BLOCK), | 273 block_setting_(CONTENT_SETTING_BLOCK), |
| 274 selected_item_(0) { | 274 selected_item_(0) { |
| 275 SetRadioGroup(); | 275 SetRadioGroup(); |
| 276 } | 276 } |
| 277 | 277 |
| 278 ContentSettingSingleRadioGroup::~ContentSettingSingleRadioGroup() { | 278 ContentSettingSingleRadioGroup::~ContentSettingSingleRadioGroup() { |
| 279 if (settings_changed()) { | 279 if (settings_changed()) { |
| 280 ContentSetting setting = | 280 ContentSetting setting = |
| 281 selected_item_ == kAllowButtonIndex ? | 281 selected_item_ == kAllowButtonIndex ? |
| 282 CONTENT_SETTING_ALLOW : | 282 CONTENT_SETTING_ALLOW : |
| 283 block_setting_; | 283 block_setting_; |
| 284 AddException(setting); | 284 SetNarrowestContentSetting(setting); |
| 285 } | 285 } |
| 286 } | 286 } |
| 287 | 287 |
| 288 bool ContentSettingSingleRadioGroup::settings_changed() const { | 288 bool ContentSettingSingleRadioGroup::settings_changed() const { |
| 289 return selected_item_ != bubble_content().radio_group.default_item; | 289 return selected_item_ != bubble_content().radio_group.default_item; |
| 290 } | 290 } |
| 291 | 291 |
| 292 // Initialize the radio group by setting the appropriate labels for the | 292 // Initialize the radio group by setting the appropriate labels for the |
| 293 // content type and setting the default value based on the content setting. | 293 // content type and setting the default value based on the content setting. |
| 294 void ContentSettingSingleRadioGroup::SetRadioGroup() { | 294 void ContentSettingSingleRadioGroup::SetRadioGroup() { |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 setting != CONTENT_SETTING_ASK); | 407 setting != CONTENT_SETTING_ASK); |
| 408 if (setting_source != SETTING_SOURCE_USER) { | 408 if (setting_source != SETTING_SOURCE_USER) { |
| 409 set_radio_group_enabled(false); | 409 set_radio_group_enabled(false); |
| 410 } else { | 410 } else { |
| 411 set_radio_group_enabled(true); | 411 set_radio_group_enabled(true); |
| 412 } | 412 } |
| 413 selected_item_ = radio_group.default_item; | 413 selected_item_ = radio_group.default_item; |
| 414 set_radio_group(radio_group); | 414 set_radio_group(radio_group); |
| 415 } | 415 } |
| 416 | 416 |
| 417 void ContentSettingSingleRadioGroup::AddException(ContentSetting setting) { | 417 void ContentSettingSingleRadioGroup::SetNarrowestContentSetting( |
| 418 ContentSetting setting) { |
| 418 if (profile()) { | 419 if (profile()) { |
| 419 HostContentSettingsMapFactory::GetForProfile(profile())->AddExceptionForURL( | 420 HostContentSettingsMapFactory::GetForProfile(profile()) |
| 420 bubble_content().radio_group.url, | 421 ->SetNarrowestContentSetting(bubble_content().radio_group.url, |
| 421 bubble_content().radio_group.url, | 422 bubble_content().radio_group.url, |
| 422 content_type(), | 423 content_type(), setting); |
| 423 setting); | |
| 424 } | 424 } |
| 425 } | 425 } |
| 426 | 426 |
| 427 void ContentSettingSingleRadioGroup::OnRadioClicked(int radio_index) { | 427 void ContentSettingSingleRadioGroup::OnRadioClicked(int radio_index) { |
| 428 selected_item_ = radio_index; | 428 selected_item_ = radio_index; |
| 429 } | 429 } |
| 430 | 430 |
| 431 class ContentSettingCookiesBubbleModel : public ContentSettingSingleRadioGroup { | 431 class ContentSettingCookiesBubbleModel : public ContentSettingSingleRadioGroup { |
| 432 public: | 432 public: |
| 433 ContentSettingCookiesBubbleModel(Delegate* delegate, | 433 ContentSettingCookiesBubbleModel(Delegate* delegate, |
| (...skipping 945 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1379 if (type == content::NOTIFICATION_WEB_CONTENTS_DESTROYED) { | 1379 if (type == content::NOTIFICATION_WEB_CONTENTS_DESTROYED) { |
| 1380 DCHECK_EQ(web_contents_, | 1380 DCHECK_EQ(web_contents_, |
| 1381 content::Source<WebContents>(source).ptr()); | 1381 content::Source<WebContents>(source).ptr()); |
| 1382 web_contents_ = NULL; | 1382 web_contents_ = NULL; |
| 1383 } else { | 1383 } else { |
| 1384 DCHECK_EQ(chrome::NOTIFICATION_PROFILE_DESTROYED, type); | 1384 DCHECK_EQ(chrome::NOTIFICATION_PROFILE_DESTROYED, type); |
| 1385 DCHECK_EQ(profile_, content::Source<Profile>(source).ptr()); | 1385 DCHECK_EQ(profile_, content::Source<Profile>(source).ptr()); |
| 1386 profile_ = NULL; | 1386 profile_ = NULL; |
| 1387 } | 1387 } |
| 1388 } | 1388 } |
| OLD | NEW |