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

Side by Side Diff: chrome/browser/content_settings/host_content_settings_map_unittest.cc

Issue 5528010: Implement preference and policy based content settings providers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/chrome/browser/content_settings
Patch Set: updates Created 10 years 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/content_settings/host_content_settings_map.h" 5 #include "chrome/browser/content_settings/host_content_settings_map_unittest.h"
6 6
7 #include "base/auto_reset.h" 7 #include "base/auto_reset.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/json/json_reader.h" 9 #include "base/json/json_reader.h"
10 #include "base/json/json_writer.h" 10 #include "base/json/json_writer.h"
11 #include "chrome/browser/content_settings/content_settings_details.h" 11 #include "chrome/browser/content_settings/content_settings_details.h"
12 #include "chrome/browser/prefs/pref_service.h" 12 #include "chrome/browser/prefs/pref_service.h"
13 #include "chrome/common/chrome_switches.h" 13 #include "chrome/common/chrome_switches.h"
14 #include "chrome/common/notification_registrar.h" 14 #include "chrome/common/notification_registrar.h"
15 #include "chrome/common/notification_service.h" 15 #include "chrome/common/notification_service.h"
(...skipping 10 matching lines...) Expand all
26 26
27 bool SettingsEqual(const ContentSettings& settings1, 27 bool SettingsEqual(const ContentSettings& settings1,
28 const ContentSettings& settings2) { 28 const ContentSettings& settings2) {
29 for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { 29 for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) {
30 if (settings1.settings[i] != settings2.settings[i]) 30 if (settings1.settings[i] != settings2.settings[i])
31 return false; 31 return false;
32 } 32 }
33 return true; 33 return true;
34 } 34 }
35 35
36 class StubSettingsObserver : public NotificationObserver {
37 public:
38 StubSettingsObserver() : last_notifier(NULL), counter(0) {
39 registrar_.Add(this, NotificationType::CONTENT_SETTINGS_CHANGED,
40 NotificationService::AllSources());
41 }
42
43 virtual void Observe(NotificationType type,
44 const NotificationSource& source,
45 const NotificationDetails& details) {
46 ++counter;
47 Source<HostContentSettingsMap> content_settings(source);
48 Details<ContentSettingsDetails> settings_details(details);
49 last_notifier = content_settings.ptr();
50 last_pattern = settings_details.ptr()->pattern();
51 last_update_all = settings_details.ptr()->update_all();
52 last_update_all_types = settings_details.ptr()->update_all_types();
53 last_type = settings_details.ptr()->type();
54 // This checks that calling a Get function from an observer doesn't
55 // deadlock.
56 last_notifier->GetContentSettings(GURL("http://random-hostname.com/"));
57 }
58
59 HostContentSettingsMap* last_notifier;
60 ContentSettingsPattern last_pattern;
61 bool last_update_all;
62 bool last_update_all_types;
63 int counter;
64 ContentSettingsType last_type;
65
66 private:
67 NotificationRegistrar registrar_;
68 };
69
70 class HostContentSettingsMapTest : public testing::Test { 36 class HostContentSettingsMapTest : public testing::Test {
71 public: 37 public:
72 HostContentSettingsMapTest() : ui_thread_(BrowserThread::UI, &message_loop_) { 38 HostContentSettingsMapTest() : ui_thread_(BrowserThread::UI, &message_loop_) {
73 } 39 }
74 40
75 protected: 41 protected:
76 MessageLoop message_loop_; 42 MessageLoop message_loop_;
77 BrowserThread ui_thread_; 43 BrowserThread ui_thread_;
78 }; 44 };
79 45
(...skipping 744 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 host_content_settings_map->GetDefaultContentSetting( 790 host_content_settings_map->GetDefaultContentSetting(
825 CONTENT_SETTINGS_TYPE_COOKIES)); 791 CONTENT_SETTINGS_TYPE_COOKIES));
826 792
827 // Remove the preference to manage the default-content-setting for Cookies. 793 // Remove the preference to manage the default-content-setting for Cookies.
828 prefs->RemoveManagedPref(prefs::kManagedDefaultCookiesSetting); 794 prefs->RemoveManagedPref(prefs::kManagedDefaultCookiesSetting);
829 EXPECT_EQ(CONTENT_SETTING_BLOCK, 795 EXPECT_EQ(CONTENT_SETTING_BLOCK,
830 host_content_settings_map->GetDefaultContentSetting( 796 host_content_settings_map->GetDefaultContentSetting(
831 CONTENT_SETTINGS_TYPE_COOKIES)); 797 CONTENT_SETTINGS_TYPE_COOKIES));
832 } 798 }
833 799
834 // When a default-content-setting is set to a managed setting a
835 // CONTENT_SETTINGS_CHANGED notification should be fired. The same should happen
836 // if the managed setting is removed.
837 TEST_F(HostContentSettingsMapTest, ObserveManagedSettingsChange) {
838 TestingProfile profile;
839 HostContentSettingsMap* host_content_settings_map =
840 profile.GetHostContentSettingsMap();
841 StubSettingsObserver observer;
842 TestingPrefService* prefs = profile.GetTestingPrefService();
843
844 // TODO(markusheintz): I think it would be better to send notifications only
845 // for a specific content-settings-type.
846
847 // Set the managed default-content-setting.
848 prefs->SetManagedPref(prefs::kManagedDefaultImagesSetting,
849 Value::CreateIntegerValue(CONTENT_SETTING_BLOCK));
850 EXPECT_EQ(host_content_settings_map, observer.last_notifier);
851 EXPECT_EQ(ContentSettingsPattern(), observer.last_pattern);
852 EXPECT_EQ(CONTENT_SETTINGS_TYPE_DEFAULT, observer.last_type);
853 EXPECT_TRUE(observer.last_update_all);
854 EXPECT_TRUE(observer.last_update_all_types);
855 EXPECT_EQ(1, observer.counter);
856
857 // Remove the managed default-content-setting.
858 prefs->RemoveManagedPref(prefs::kManagedDefaultImagesSetting);
859 EXPECT_EQ(host_content_settings_map, observer.last_notifier);
860 EXPECT_EQ(CONTENT_SETTINGS_TYPE_DEFAULT, observer.last_type);
861 EXPECT_EQ(ContentSettingsPattern(), observer.last_pattern);
862 EXPECT_TRUE(observer.last_update_all);
863 EXPECT_TRUE(observer.last_update_all_types);
864 EXPECT_EQ(2, observer.counter);
865 }
866
867 // When a default-content-setting is set to a managed setting a
868 // CONTENT_SETTINGS_CHANGED notification should be fired. The same should happen
869 // if the managed setting is removed. In this test-case the actual managed
870 // setting is the same. Just the managed status of the default-content-setting
871 // changes.
872 TEST_F(HostContentSettingsMapTest, ObserveManagedSettingsNoChange) {
873 TestingProfile profile;
874 HostContentSettingsMap* host_content_settings_map =
875 profile.GetHostContentSettingsMap();
876 StubSettingsObserver observer;
877 TestingPrefService* prefs = profile.GetTestingPrefService();
878
879 // TODO(markusheintz): I think it would be better to send notifications only
880 // for a specific content-settings-type.
881
882 // Set the managed default-content-setting. In this case the actual setting
883 // does not change.
884 prefs->SetManagedPref(prefs::kManagedDefaultImagesSetting,
885 Value::CreateIntegerValue(CONTENT_SETTING_ALLOW));
886 EXPECT_EQ(host_content_settings_map, observer.last_notifier);
887 EXPECT_EQ(ContentSettingsPattern(), observer.last_pattern);
888 EXPECT_EQ(CONTENT_SETTINGS_TYPE_DEFAULT, observer.last_type);
889 EXPECT_TRUE(observer.last_update_all);
890 EXPECT_TRUE(observer.last_update_all_types);
891 EXPECT_EQ(1, observer.counter);
892
893 // Remove the managed default-content-setting.
894 prefs->RemoveManagedPref(prefs::kManagedDefaultImagesSetting);
895 EXPECT_EQ(host_content_settings_map, observer.last_notifier);
896 EXPECT_EQ(CONTENT_SETTINGS_TYPE_DEFAULT, observer.last_type);
897 EXPECT_EQ(ContentSettingsPattern(), observer.last_pattern);
898 EXPECT_TRUE(observer.last_update_all);
899 EXPECT_TRUE(observer.last_update_all_types);
900 EXPECT_EQ(2, observer.counter);
901 }
902
903 // If a setting for a default-content-setting-type is set while the type is 800 // If a setting for a default-content-setting-type is set while the type is
904 // managed, then the new setting should be preserved and used after the 801 // managed, then the new setting should be preserved and used after the
905 // default-content-setting-type is not managed anymore. 802 // default-content-setting-type is not managed anymore.
906 TEST_F(HostContentSettingsMapTest, SettingDefaultContentSettingsWhenManaged) { 803 TEST_F(HostContentSettingsMapTest, SettingDefaultContentSettingsWhenManaged) {
907 TestingProfile profile; 804 TestingProfile profile;
908 HostContentSettingsMap* host_content_settings_map = 805 HostContentSettingsMap* host_content_settings_map =
909 profile.GetHostContentSettingsMap(); 806 profile.GetHostContentSettingsMap();
910 TestingPrefService* prefs = profile.GetTestingPrefService(); 807 TestingPrefService* prefs = profile.GetTestingPrefService();
911 808
912 prefs->SetManagedPref(prefs::kManagedDefaultPluginsSetting, 809 prefs->SetManagedPref(prefs::kManagedDefaultPluginsSetting,
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
949 EXPECT_TRUE(host_content_settings_map->BlockThirdPartyCookies()); 846 EXPECT_TRUE(host_content_settings_map->BlockThirdPartyCookies());
950 847
951 // After unsetting the managed value for the preference BlockThirdPartyCookies 848 // After unsetting the managed value for the preference BlockThirdPartyCookies
952 // the default value should be returned now. 849 // the default value should be returned now.
953 prefs->RemoveManagedPref(prefs::kBlockThirdPartyCookies); 850 prefs->RemoveManagedPref(prefs::kBlockThirdPartyCookies);
954 EXPECT_FALSE(host_content_settings_map->IsBlockThirdPartyCookiesManaged()); 851 EXPECT_FALSE(host_content_settings_map->IsBlockThirdPartyCookiesManaged());
955 EXPECT_FALSE(host_content_settings_map->BlockThirdPartyCookies()); 852 EXPECT_FALSE(host_content_settings_map->BlockThirdPartyCookies());
956 } 853 }
957 854
958 } // namespace 855 } // namespace
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698