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

Side by Side Diff: chrome/browser/ui/webui/options/content_settings_handler.cc

Issue 8383004: Adding CookieSettings for storing cookie content settings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Code review. Created 9 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/webui/options/content_settings_handler.h" 5 #include "chrome/browser/ui/webui/options/content_settings_handler.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/bind_helpers.h" 12 #include "base/bind_helpers.h"
13 #include "base/command_line.h" 13 #include "base/command_line.h"
14 #include "base/utf_string_conversions.h" 14 #include "base/utf_string_conversions.h"
15 #include "base/values.h" 15 #include "base/values.h"
16 #include "chrome/browser/browser_process.h" 16 #include "chrome/browser/browser_process.h"
17 #include "chrome/browser/content_settings/content_settings_details.h" 17 #include "chrome/browser/content_settings/content_settings_details.h"
18 #include "chrome/browser/content_settings/content_settings_utils.h" 18 #include "chrome/browser/content_settings/content_settings_utils.h"
19 #include "chrome/browser/content_settings/cookie_settings.h"
19 #include "chrome/browser/content_settings/host_content_settings_map.h" 20 #include "chrome/browser/content_settings/host_content_settings_map.h"
20 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" 21 #include "chrome/browser/custom_handlers/protocol_handler_registry.h"
21 #include "chrome/browser/notifications/desktop_notification_service.h" 22 #include "chrome/browser/notifications/desktop_notification_service.h"
22 #include "chrome/browser/notifications/desktop_notification_service_factory.h" 23 #include "chrome/browser/notifications/desktop_notification_service_factory.h"
23 #include "chrome/browser/profiles/profile.h" 24 #include "chrome/browser/profiles/profile.h"
24 #include "chrome/browser/ui/browser_list.h" 25 #include "chrome/browser/ui/browser_list.h"
25 #include "chrome/common/chrome_notification_types.h" 26 #include "chrome/common/chrome_notification_types.h"
26 #include "chrome/common/chrome_switches.h" 27 #include "chrome/common/chrome_switches.h"
27 #include "chrome/common/content_settings_pattern.h" 28 #include "chrome/common/content_settings_pattern.h"
28 #include "chrome/common/pref_names.h" 29 #include "chrome/common/pref_names.h"
(...skipping 348 matching lines...) Expand 10 before | Expand all | Expand 10 after
377 } 378 }
378 379
379 std::string ContentSettingsHandler::GetSettingDefaultFromModel( 380 std::string ContentSettingsHandler::GetSettingDefaultFromModel(
380 ContentSettingsType type, std::string* provider_id) { 381 ContentSettingsType type, std::string* provider_id) {
381 Profile* profile = Profile::FromWebUI(web_ui_); 382 Profile* profile = Profile::FromWebUI(web_ui_);
382 ContentSetting default_setting; 383 ContentSetting default_setting;
383 if (type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS) { 384 if (type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS) {
384 default_setting = 385 default_setting =
385 DesktopNotificationServiceFactory::GetForProfile(profile)-> 386 DesktopNotificationServiceFactory::GetForProfile(profile)->
386 GetDefaultContentSetting(provider_id); 387 GetDefaultContentSetting(provider_id);
388 } else if (type == CONTENT_SETTINGS_TYPE_COOKIES) {
389 default_setting = CookieSettings::GetForProfile(profile)->
390 GetDefaultCookieSetting(provider_id);
387 } else { 391 } else {
388 default_setting = 392 default_setting =
389 profile->GetHostContentSettingsMap()-> 393 profile->GetHostContentSettingsMap()->
390 GetDefaultContentSetting(type, provider_id); 394 GetDefaultContentSetting(type, provider_id);
391 } 395 }
392 396
393 return ContentSettingToString(default_setting); 397 return ContentSettingToString(default_setting);
394 } 398 }
395 399
396 void ContentSettingsHandler::UpdateHandlersEnabledRadios() { 400 void ContentSettingsHandler::UpdateHandlersEnabledRadios() {
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
547 type_string, exceptions); 551 type_string, exceptions);
548 552
549 // This is mainly here to keep this function ideologically parallel to 553 // This is mainly here to keep this function ideologically parallel to
550 // UpdateExceptionsViewFromHostContentSettingsMap(). 554 // UpdateExceptionsViewFromHostContentSettingsMap().
551 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_NOTIFICATIONS); 555 UpdateSettingDefaultFromModel(CONTENT_SETTINGS_TYPE_NOTIFICATIONS);
552 } 556 }
553 557
554 void ContentSettingsHandler::UpdateExceptionsViewFromHostContentSettingsMap( 558 void ContentSettingsHandler::UpdateExceptionsViewFromHostContentSettingsMap(
555 ContentSettingsType type) { 559 ContentSettingsType type) {
556 HostContentSettingsMap::SettingsForOneType entries; 560 HostContentSettingsMap::SettingsForOneType entries;
557 GetContentSettingsMap()->GetSettingsForOneType(type, "", &entries); 561 if (type == CONTENT_SETTINGS_TYPE_COOKIES)
562 GetCookieSettings()->GetCookieSettings(&entries);
563 else
564 GetContentSettingsMap()->GetSettingsForOneType(type, "", &entries);
558 565
559 ListValue exceptions; 566 ListValue exceptions;
560 for (size_t i = 0; i < entries.size(); ++i) { 567 for (size_t i = 0; i < entries.size(); ++i) {
561 // Skip default settings from extensions and policy, and the default content 568 // Skip default settings from extensions and policy, and the default content
562 // settings; all of them will affect the default setting UI. 569 // settings; all of them will affect the default setting UI.
563 if (entries[i].a == ContentSettingsPattern::Wildcard() && 570 if (entries[i].a == ContentSettingsPattern::Wildcard() &&
564 entries[i].b == ContentSettingsPattern::Wildcard() && 571 entries[i].b == ContentSettingsPattern::Wildcard() &&
565 entries[i].d != "preference") { 572 entries[i].d != "preference") {
566 continue; 573 continue;
567 } 574 }
(...skipping 23 matching lines...) Expand all
591 UpdateSettingDefaultFromModel(type); 598 UpdateSettingDefaultFromModel(type);
592 } 599 }
593 600
594 void ContentSettingsHandler::UpdateExceptionsViewFromOTRHostContentSettingsMap( 601 void ContentSettingsHandler::UpdateExceptionsViewFromOTRHostContentSettingsMap(
595 ContentSettingsType type) { 602 ContentSettingsType type) {
596 const HostContentSettingsMap* otr_settings_map = GetOTRContentSettingsMap(); 603 const HostContentSettingsMap* otr_settings_map = GetOTRContentSettingsMap();
597 if (!otr_settings_map) 604 if (!otr_settings_map)
598 return; 605 return;
599 606
600 HostContentSettingsMap::SettingsForOneType otr_entries; 607 HostContentSettingsMap::SettingsForOneType otr_entries;
601 otr_settings_map->GetSettingsForOneType(type, "", &otr_entries); 608 if (type == CONTENT_SETTINGS_TYPE_COOKIES) {
609 const CookieSettings* otr_cookie_settings = GetOTRCookieSettings();
610 if (!otr_cookie_settings)
611 return;
612 otr_cookie_settings->GetCookieSettings(&otr_entries);
613 } else {
614 otr_settings_map->GetSettingsForOneType(type, "", &otr_entries);
615 }
602 616
603 ListValue otr_exceptions; 617 ListValue otr_exceptions;
604 for (size_t i = 0; i < otr_entries.size(); ++i) { 618 for (size_t i = 0; i < otr_entries.size(); ++i) {
605 // Off-the-record HostContentSettingsMap contains incognito content settings 619 // Off-the-record HostContentSettingsMap contains incognito content settings
606 // as well as normal content settings. Here, we use the incongnito settings 620 // as well as normal content settings. Here, we use the incongnito settings
607 // only. 621 // only.
608 if (!otr_entries[i].e) 622 if (!otr_entries[i].e)
609 continue; 623 continue;
610 // The content settings UI does not support secondary content settings 624 // The content settings UI does not support secondary content settings
611 // pattern yet. For content settings set through the content settings UI the 625 // pattern yet. For content settings set through the content settings UI the
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
701 ClearSetting(ContentSettingsPattern::FromString(origin)); 715 ClearSetting(ContentSettingsPattern::FromString(origin));
702 } else { 716 } else {
703 std::string mode; 717 std::string mode;
704 bool rv = args->GetString(arg_i++, &mode); 718 bool rv = args->GetString(arg_i++, &mode);
705 DCHECK(rv); 719 DCHECK(rv);
706 720
707 std::string pattern; 721 std::string pattern;
708 rv = args->GetString(arg_i++, &pattern); 722 rv = args->GetString(arg_i++, &pattern);
709 DCHECK(rv); 723 DCHECK(rv);
710 724
711 HostContentSettingsMap* settings_map = 725 if (type == CONTENT_SETTINGS_TYPE_COOKIES) {
712 mode == "normal" ? GetContentSettingsMap() : 726 CookieSettings* cookie_settings =
713 GetOTRContentSettingsMap(); 727 mode == "normal" ? GetCookieSettings() :
714 // The settings map could be null if the mode was OTR but the OTR profile 728 GetOTRCookieSettings();
715 // got destroyed before we received this message. 729 // |cookie_settings| could be null if the mode was OTR but the OTR profile
716 if (settings_map) { 730 // got destroyed before we received this message.
717 settings_map->SetContentSetting( 731 if (cookie_settings) {
718 ContentSettingsPattern::FromString(pattern), 732 cookie_settings->ResetCookieSetting(
719 ContentSettingsPattern::Wildcard(), 733 ContentSettingsPattern::FromString(pattern),
720 ContentSettingsTypeFromGroupName(type_string), 734 ContentSettingsPattern::Wildcard());
721 "", 735 }
722 CONTENT_SETTING_DEFAULT); 736 } else {
737 HostContentSettingsMap* settings_map =
738 mode == "normal" ? GetContentSettingsMap() :
739 GetOTRContentSettingsMap();
740 // |settings_map| could be null if the mode was OTR but the OTR profile
741 // got destroyed before we received this message.
742 if (settings_map) {
743 settings_map->SetContentSetting(
744 ContentSettingsPattern::FromString(pattern),
745 ContentSettingsPattern::Wildcard(),
746 ContentSettingsTypeFromGroupName(type_string),
747 "",
748 CONTENT_SETTING_DEFAULT);
749 }
723 } 750 }
724 } 751 }
725 } 752 }
726 753
727 void ContentSettingsHandler::SetException(const ListValue* args) { 754 void ContentSettingsHandler::SetException(const ListValue* args) {
728 size_t arg_i = 0; 755 size_t arg_i = 0;
729 std::string type_string; 756 std::string type_string;
730 CHECK(args->GetString(arg_i++, &type_string)); 757 CHECK(args->GetString(arg_i++, &type_string));
731 std::string mode; 758 std::string mode;
732 CHECK(args->GetString(arg_i++, &mode)); 759 CHECK(args->GetString(arg_i++, &mode));
733 std::string pattern; 760 std::string pattern;
734 CHECK(args->GetString(arg_i++, &pattern)); 761 CHECK(args->GetString(arg_i++, &pattern));
735 std::string setting; 762 std::string setting;
736 CHECK(args->GetString(arg_i++, &setting)); 763 CHECK(args->GetString(arg_i++, &setting));
737 764
738 ContentSettingsType type = ContentSettingsTypeFromGroupName(type_string); 765 ContentSettingsType type = ContentSettingsTypeFromGroupName(type_string);
739 if (type == CONTENT_SETTINGS_TYPE_GEOLOCATION || 766 if (type == CONTENT_SETTINGS_TYPE_GEOLOCATION ||
740 type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS) { 767 type == CONTENT_SETTINGS_TYPE_NOTIFICATIONS) {
741 NOTREACHED(); 768 NOTREACHED();
742 return; 769 return;
743 } 770 }
744 771
745 HostContentSettingsMap* settings_map = 772 if (type == CONTENT_SETTINGS_TYPE_COOKIES) {
746 mode == "normal" ? GetContentSettingsMap() : 773 CookieSettings* cookie_settings =
747 GetOTRContentSettingsMap(); 774 mode == "normal" ? GetCookieSettings() :
775 GetOTRCookieSettings();
748 776
749 // The settings map could be null if the mode was OTR but the OTR profile 777 // |cookie_settings| could be null if the mode was OTR but the OTR profile
750 // got destroyed before we received this message. 778 // got destroyed before we received this message.
751 if (!settings_map) 779 if (!cookie_settings)
752 return; 780 return;
753 settings_map->SetContentSetting(ContentSettingsPattern::FromString(pattern), 781 cookie_settings->SetCookieSetting(
754 ContentSettingsPattern::Wildcard(), 782 ContentSettingsPattern::FromString(pattern),
755 type, 783 ContentSettingsPattern::Wildcard(),
756 "", 784 ContentSettingFromString(setting));
757 ContentSettingFromString(setting)); 785 } else {
786 HostContentSettingsMap* settings_map =
787 mode == "normal" ? GetContentSettingsMap() :
788 GetOTRContentSettingsMap();
789
790 // |settings_map| could be null if the mode was OTR but the OTR profile
791 // got destroyed before we received this message.
792 if (!settings_map)
793 return;
794 settings_map->SetContentSetting(ContentSettingsPattern::FromString(pattern),
795 ContentSettingsPattern::Wildcard(),
796 type,
797 "",
798 ContentSettingFromString(setting));
799 }
758 } 800 }
759 801
760 void ContentSettingsHandler::CheckExceptionPatternValidity( 802 void ContentSettingsHandler::CheckExceptionPatternValidity(
761 const ListValue* args) { 803 const ListValue* args) {
762 size_t arg_i = 0; 804 size_t arg_i = 0;
763 Value* type; 805 Value* type;
764 CHECK(args->Get(arg_i++, &type)); 806 CHECK(args->Get(arg_i++, &type));
765 std::string mode_string; 807 std::string mode_string;
766 CHECK(args->GetString(arg_i++, &mode_string)); 808 CHECK(args->GetString(arg_i++, &mode_string));
767 std::string pattern_string; 809 std::string pattern_string;
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 return Profile::FromWebUI(web_ui_)->GetProtocolHandlerRegistry(); 844 return Profile::FromWebUI(web_ui_)->GetProtocolHandlerRegistry();
803 } 845 }
804 846
805 HostContentSettingsMap* 847 HostContentSettingsMap*
806 ContentSettingsHandler::GetOTRContentSettingsMap() { 848 ContentSettingsHandler::GetOTRContentSettingsMap() {
807 Profile* profile = Profile::FromWebUI(web_ui_); 849 Profile* profile = Profile::FromWebUI(web_ui_);
808 if (profile->HasOffTheRecordProfile()) 850 if (profile->HasOffTheRecordProfile())
809 return profile->GetOffTheRecordProfile()->GetHostContentSettingsMap(); 851 return profile->GetOffTheRecordProfile()->GetHostContentSettingsMap();
810 return NULL; 852 return NULL;
811 } 853 }
854
855 CookieSettings* ContentSettingsHandler::GetCookieSettings() {
856 return CookieSettings::GetForProfile(Profile::FromWebUI(web_ui_));
857 }
858
859 CookieSettings* ContentSettingsHandler::GetOTRCookieSettings() {
860 Profile* profile = Profile::FromWebUI(web_ui_);
861 if (profile->HasOffTheRecordProfile())
862 return CookieSettings::GetForProfile(profile->GetOffTheRecordProfile());
863 return NULL;
864 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698