OLD | NEW |
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 "base/auto_reset.h" | 5 #include "base/auto_reset.h" |
6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
7 #include "base/json/json_reader.h" | 7 #include "base/json/json_reader.h" |
8 #include "base/json/json_writer.h" | 8 #include "base/json/json_writer.h" |
9 #include "chrome/browser/content_settings/content_settings_details.h" | 9 #include "chrome/browser/content_settings/content_settings_details.h" |
10 #include "chrome/browser/content_settings/cookie_settings.h" | 10 #include "chrome/browser/content_settings/cookie_settings.h" |
11 #include "chrome/browser/content_settings/host_content_settings_map.h" | 11 #include "chrome/browser/content_settings/host_content_settings_map.h" |
12 #include "chrome/browser/content_settings/mock_settings_observer.h" | 12 #include "chrome/browser/content_settings/mock_settings_observer.h" |
13 #include "chrome/browser/prefs/pref_service.h" | 13 #include "chrome/browser/prefs/pref_service.h" |
14 #include "chrome/browser/prefs/scoped_user_pref_update.h" | 14 #include "chrome/browser/prefs/scoped_user_pref_update.h" |
15 #include "chrome/common/chrome_switches.h" | 15 #include "chrome/common/chrome_switches.h" |
16 #include "chrome/common/pref_names.h" | 16 #include "chrome/common/pref_names.h" |
17 #include "chrome/common/url_constants.h" | 17 #include "chrome/common/url_constants.h" |
18 #include "chrome/test/base/testing_pref_service.h" | 18 #include "chrome/test/base/testing_pref_service.h" |
19 #include "chrome/test/base/testing_profile.h" | 19 #include "chrome/test/base/testing_profile.h" |
20 #include "content/test/test_browser_thread.h" | 20 #include "content/test/test_browser_thread.h" |
21 #include "googleurl/src/gurl.h" | 21 #include "googleurl/src/gurl.h" |
22 #include "net/base/static_cookie_policy.h" | 22 #include "net/base/static_cookie_policy.h" |
23 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
24 | 24 |
25 using content::BrowserThread; | 25 using content::BrowserThread; |
26 | 26 |
27 using ::testing::_; | 27 using ::testing::_; |
28 | 28 |
29 namespace { | |
30 | |
31 bool SettingsEqual(const ContentSettings& settings1, | |
32 const ContentSettings& settings2) { | |
33 for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { | |
34 if (settings1.settings[i] != settings2.settings[i]) { | |
35 LOG(ERROR) << "type: " << i | |
36 << " [expected: " << settings1.settings[i] | |
37 << " actual: " << settings2.settings[i] << "]"; | |
38 return false; | |
39 } | |
40 } | |
41 return true; | |
42 } | |
43 | |
44 } // namespace | |
45 | |
46 class HostContentSettingsMapTest : public testing::Test { | 29 class HostContentSettingsMapTest : public testing::Test { |
47 public: | 30 public: |
48 HostContentSettingsMapTest() : ui_thread_(BrowserThread::UI, &message_loop_) { | 31 HostContentSettingsMapTest() : ui_thread_(BrowserThread::UI, &message_loop_) { |
49 } | 32 } |
50 | 33 |
51 protected: | 34 protected: |
52 MessageLoop message_loop_; | 35 MessageLoop message_loop_; |
53 content::TestBrowserThread ui_thread_; | 36 content::TestBrowserThread ui_thread_; |
54 }; | 37 }; |
55 | 38 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
119 std::string(), | 102 std::string(), |
120 CONTENT_SETTING_BLOCK); | 103 CONTENT_SETTING_BLOCK); |
121 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 104 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
122 host_content_settings_map->GetContentSetting( | 105 host_content_settings_map->GetContentSetting( |
123 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); | 106 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
124 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 107 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
125 host_content_settings_map->GetContentSetting( | 108 host_content_settings_map->GetContentSetting( |
126 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, "")); | 109 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, "")); |
127 | 110 |
128 // Check returning all settings for a host. | 111 // Check returning all settings for a host. |
129 ContentSettings desired_settings; | |
130 desired_settings.settings[CONTENT_SETTINGS_TYPE_COOKIES] = | |
131 CONTENT_SETTING_ALLOW; | |
132 host_content_settings_map->SetContentSetting( | 112 host_content_settings_map->SetContentSetting( |
133 pattern, | 113 pattern, |
134 ContentSettingsPattern::Wildcard(), | 114 ContentSettingsPattern::Wildcard(), |
135 CONTENT_SETTINGS_TYPE_IMAGES, | 115 CONTENT_SETTINGS_TYPE_IMAGES, |
136 std::string(), | 116 std::string(), |
137 CONTENT_SETTING_DEFAULT); | 117 CONTENT_SETTING_DEFAULT); |
138 desired_settings.settings[CONTENT_SETTINGS_TYPE_IMAGES] = | 118 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
139 CONTENT_SETTING_ALLOW; | 119 host_content_settings_map->GetContentSetting( |
| 120 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
140 host_content_settings_map->SetContentSetting( | 121 host_content_settings_map->SetContentSetting( |
141 pattern, | 122 pattern, |
142 ContentSettingsPattern::Wildcard(), | 123 ContentSettingsPattern::Wildcard(), |
143 CONTENT_SETTINGS_TYPE_JAVASCRIPT, | 124 CONTENT_SETTINGS_TYPE_JAVASCRIPT, |
144 std::string(), | 125 std::string(), |
145 CONTENT_SETTING_BLOCK); | 126 CONTENT_SETTING_BLOCK); |
146 desired_settings.settings[CONTENT_SETTINGS_TYPE_JAVASCRIPT] = | 127 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
147 CONTENT_SETTING_BLOCK; | 128 host_content_settings_map->GetContentSetting( |
| 129 host, host, CONTENT_SETTINGS_TYPE_JAVASCRIPT, "")); |
148 host_content_settings_map->SetContentSetting( | 130 host_content_settings_map->SetContentSetting( |
149 pattern, | 131 pattern, |
150 ContentSettingsPattern::Wildcard(), | 132 ContentSettingsPattern::Wildcard(), |
151 CONTENT_SETTINGS_TYPE_PLUGINS, | 133 CONTENT_SETTINGS_TYPE_PLUGINS, |
152 std::string(), | 134 std::string(), |
153 CONTENT_SETTING_ALLOW); | 135 CONTENT_SETTING_ALLOW); |
154 desired_settings.settings[CONTENT_SETTINGS_TYPE_PLUGINS] = | 136 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
155 CONTENT_SETTING_ALLOW; | 137 host_content_settings_map->GetContentSetting( |
156 desired_settings.settings[CONTENT_SETTINGS_TYPE_POPUPS] = | 138 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, "")); |
157 CONTENT_SETTING_BLOCK; | 139 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
158 desired_settings.settings[CONTENT_SETTINGS_TYPE_GEOLOCATION] = | 140 host_content_settings_map->GetContentSetting( |
159 CONTENT_SETTING_ASK; | 141 host, host, CONTENT_SETTINGS_TYPE_POPUPS, "")); |
160 desired_settings.settings[CONTENT_SETTINGS_TYPE_NOTIFICATIONS] = | 142 EXPECT_EQ(CONTENT_SETTING_ASK, |
161 CONTENT_SETTING_ASK; | 143 host_content_settings_map->GetContentSetting( |
162 desired_settings.settings[CONTENT_SETTINGS_TYPE_INTENTS] = | 144 host, host, CONTENT_SETTINGS_TYPE_GEOLOCATION, "")); |
163 CONTENT_SETTING_ASK; | 145 EXPECT_EQ(CONTENT_SETTING_ASK, |
164 desired_settings.settings[CONTENT_SETTINGS_TYPE_FULLSCREEN] = | 146 host_content_settings_map->GetContentSetting( |
165 CONTENT_SETTING_ASK; | 147 host, host, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, "")); |
166 desired_settings.settings[CONTENT_SETTINGS_TYPE_MOUSELOCK] = | 148 EXPECT_EQ(CONTENT_SETTING_ASK, |
167 CONTENT_SETTING_ASK; | 149 host_content_settings_map->GetContentSetting( |
168 ContentSettings settings = | 150 host, host, CONTENT_SETTINGS_TYPE_INTENTS, "")); |
169 host_content_settings_map->GetContentSettings(host); | 151 EXPECT_EQ(CONTENT_SETTING_ASK, |
170 EXPECT_TRUE(SettingsEqual(desired_settings, settings)); | 152 host_content_settings_map->GetContentSetting( |
| 153 host, host, CONTENT_SETTINGS_TYPE_FULLSCREEN, "")); |
| 154 EXPECT_EQ(CONTENT_SETTING_ASK, |
| 155 host_content_settings_map->GetContentSetting( |
| 156 host, host, CONTENT_SETTINGS_TYPE_MOUSELOCK, "")); |
171 | 157 |
172 // Check returning all hosts for a setting. | 158 // Check returning all hosts for a setting. |
173 ContentSettingsPattern pattern2 = | 159 ContentSettingsPattern pattern2 = |
174 ContentSettingsPattern::FromString("[*.]example.org"); | 160 ContentSettingsPattern::FromString("[*.]example.org"); |
175 host_content_settings_map->SetContentSetting( | 161 host_content_settings_map->SetContentSetting( |
176 pattern2, | 162 pattern2, |
177 ContentSettingsPattern::Wildcard(), | 163 ContentSettingsPattern::Wildcard(), |
178 CONTENT_SETTINGS_TYPE_IMAGES, | 164 CONTENT_SETTINGS_TYPE_IMAGES, |
179 std::string(), | 165 std::string(), |
180 CONTENT_SETTING_BLOCK); | 166 CONTENT_SETTING_BLOCK); |
(...skipping 415 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
596 | 582 |
597 host_content_settings_map->SetContentSetting( | 583 host_content_settings_map->SetContentSetting( |
598 pattern3, | 584 pattern3, |
599 ContentSettingsPattern::Wildcard(), | 585 ContentSettingsPattern::Wildcard(), |
600 CONTENT_SETTINGS_TYPE_PLUGINS, | 586 CONTENT_SETTINGS_TYPE_PLUGINS, |
601 "", | 587 "", |
602 CONTENT_SETTING_BLOCK); | 588 CONTENT_SETTING_BLOCK); |
603 host_content_settings_map->SetDefaultContentSetting( | 589 host_content_settings_map->SetDefaultContentSetting( |
604 CONTENT_SETTINGS_TYPE_JAVASCRIPT, CONTENT_SETTING_BLOCK); | 590 CONTENT_SETTINGS_TYPE_JAVASCRIPT, CONTENT_SETTING_BLOCK); |
605 | 591 |
606 ContentSettings desired_settings; | 592 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
607 desired_settings.settings[CONTENT_SETTINGS_TYPE_COOKIES] = | 593 host_content_settings_map->GetContentSetting( |
608 CONTENT_SETTING_BLOCK; | 594 host, host, CONTENT_SETTINGS_TYPE_COOKIES, "")); |
609 desired_settings.settings[CONTENT_SETTINGS_TYPE_IMAGES] = | 595 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
610 CONTENT_SETTING_BLOCK; | 596 host_content_settings_map->GetContentSetting( |
611 desired_settings.settings[CONTENT_SETTINGS_TYPE_JAVASCRIPT] = | 597 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
612 CONTENT_SETTING_BLOCK; | 598 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
613 desired_settings.settings[CONTENT_SETTINGS_TYPE_PLUGINS] = | 599 host_content_settings_map->GetContentSetting( |
614 CONTENT_SETTING_BLOCK; | 600 host, host, CONTENT_SETTINGS_TYPE_JAVASCRIPT, "")); |
615 desired_settings.settings[CONTENT_SETTINGS_TYPE_POPUPS] = | 601 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
616 CONTENT_SETTING_BLOCK; | 602 host_content_settings_map->GetContentSetting( |
617 desired_settings.settings[CONTENT_SETTINGS_TYPE_GEOLOCATION] = | 603 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, "")); |
618 CONTENT_SETTING_ASK; | 604 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
619 desired_settings.settings[CONTENT_SETTINGS_TYPE_NOTIFICATIONS] = | 605 host_content_settings_map->GetContentSetting( |
620 CONTENT_SETTING_ASK; | 606 host, host, CONTENT_SETTINGS_TYPE_POPUPS, "")); |
621 desired_settings.settings[CONTENT_SETTINGS_TYPE_INTENTS] = | 607 EXPECT_EQ(CONTENT_SETTING_ASK, |
622 CONTENT_SETTING_ASK; | 608 host_content_settings_map->GetContentSetting( |
623 desired_settings.settings[CONTENT_SETTINGS_TYPE_FULLSCREEN] = | 609 host, host, CONTENT_SETTINGS_TYPE_GEOLOCATION, "")); |
624 CONTENT_SETTING_ASK; | 610 EXPECT_EQ(CONTENT_SETTING_ASK, |
625 desired_settings.settings[CONTENT_SETTINGS_TYPE_MOUSELOCK] = | 611 host_content_settings_map->GetContentSetting( |
626 CONTENT_SETTING_ASK; | 612 host, host, CONTENT_SETTINGS_TYPE_NOTIFICATIONS, "")); |
627 ContentSettings settings = | 613 EXPECT_EQ(CONTENT_SETTING_ASK, |
628 host_content_settings_map->GetContentSettings(host); | 614 host_content_settings_map->GetContentSetting( |
629 EXPECT_TRUE(SettingsEqual(desired_settings, settings)); | 615 host, host, CONTENT_SETTINGS_TYPE_INTENTS, "")); |
630 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_COOKIES], | 616 EXPECT_EQ(CONTENT_SETTING_ASK, |
631 settings.settings[CONTENT_SETTINGS_TYPE_COOKIES]); | 617 host_content_settings_map->GetContentSetting( |
632 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_IMAGES], | 618 host, host, CONTENT_SETTINGS_TYPE_FULLSCREEN, "")); |
633 settings.settings[CONTENT_SETTINGS_TYPE_IMAGES]); | 619 EXPECT_EQ(CONTENT_SETTING_ASK, |
634 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_PLUGINS], | 620 host_content_settings_map->GetContentSetting( |
635 settings.settings[CONTENT_SETTINGS_TYPE_PLUGINS]); | 621 host, host, CONTENT_SETTINGS_TYPE_MOUSELOCK, "")); |
636 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_POPUPS], | |
637 settings.settings[CONTENT_SETTINGS_TYPE_POPUPS]); | |
638 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_GEOLOCATION], | |
639 settings.settings[CONTENT_SETTINGS_TYPE_GEOLOCATION]); | |
640 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_COOKIES], | |
641 settings.settings[CONTENT_SETTINGS_TYPE_COOKIES]); | |
642 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_INTENTS], | |
643 settings.settings[CONTENT_SETTINGS_TYPE_INTENTS]); | |
644 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_FULLSCREEN], | |
645 settings.settings[CONTENT_SETTINGS_TYPE_FULLSCREEN]); | |
646 EXPECT_EQ(desired_settings.settings[CONTENT_SETTINGS_TYPE_MOUSELOCK], | |
647 settings.settings[CONTENT_SETTINGS_TYPE_MOUSELOCK]); | |
648 } | 622 } |
649 | 623 |
650 TEST_F(HostContentSettingsMapTest, OffTheRecord) { | 624 TEST_F(HostContentSettingsMapTest, OffTheRecord) { |
651 TestingProfile profile; | 625 TestingProfile profile; |
652 HostContentSettingsMap* host_content_settings_map = | 626 HostContentSettingsMap* host_content_settings_map = |
653 profile.GetHostContentSettingsMap(); | 627 profile.GetHostContentSettingsMap(); |
654 scoped_refptr<HostContentSettingsMap> otr_map( | 628 scoped_refptr<HostContentSettingsMap> otr_map( |
655 new HostContentSettingsMap(profile.GetPrefs(), | 629 new HostContentSettingsMap(profile.GetPrefs(), |
656 profile.GetExtensionService(), | 630 profile.GetExtensionService(), |
657 true)); | 631 true)); |
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
807 ContentSettingsPattern pattern = | 781 ContentSettingsPattern pattern = |
808 ContentSettingsPattern::FromString("[*.]example.com"); | 782 ContentSettingsPattern::FromString("[*.]example.com"); |
809 std::string resource1("someplugin"); | 783 std::string resource1("someplugin"); |
810 std::string resource2("otherplugin"); | 784 std::string resource2("otherplugin"); |
811 | 785 |
812 // If resource content settings are enabled, GetContentSettings should return | 786 // If resource content settings are enabled, GetContentSettings should return |
813 // the default values for all plugins | 787 // the default values for all plugins |
814 ContentSetting default_plugin_setting = | 788 ContentSetting default_plugin_setting = |
815 host_content_settings_map->GetDefaultContentSetting( | 789 host_content_settings_map->GetDefaultContentSetting( |
816 CONTENT_SETTINGS_TYPE_PLUGINS, NULL); | 790 CONTENT_SETTINGS_TYPE_PLUGINS, NULL); |
817 ContentSettings settings = | |
818 host_content_settings_map->GetContentSettings(host); | |
819 EXPECT_EQ(default_plugin_setting, | 791 EXPECT_EQ(default_plugin_setting, |
820 settings.settings[CONTENT_SETTINGS_TYPE_PLUGINS]); | 792 host_content_settings_map->GetContentSetting( |
| 793 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, "")); |
821 | 794 |
822 // If no resource-specific content settings are defined, the setting should be | 795 // If no resource-specific content settings are defined, the setting should be |
823 // DEFAULT. | 796 // DEFAULT. |
824 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 797 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
825 host_content_settings_map->GetContentSetting( | 798 host_content_settings_map->GetContentSetting( |
826 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, resource1)); | 799 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, resource1)); |
827 | 800 |
828 host_content_settings_map->SetContentSetting( | 801 host_content_settings_map->SetContentSetting( |
829 pattern, | 802 pattern, |
830 ContentSettingsPattern::Wildcard(), | 803 ContentSettingsPattern::Wildcard(), |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1081 CONTENT_SETTINGS_TYPE_IMAGES, | 1054 CONTENT_SETTINGS_TYPE_IMAGES, |
1082 std::string(), | 1055 std::string(), |
1083 CONTENT_SETTING_BLOCK); | 1056 CONTENT_SETTING_BLOCK); |
1084 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 1057 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
1085 host_content_settings_map->GetContentSetting( | 1058 host_content_settings_map->GetContentSetting( |
1086 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); | 1059 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
1087 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 1060 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
1088 host_content_settings_map->GetContentSetting( | 1061 host_content_settings_map->GetContentSetting( |
1089 embedder, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); | 1062 embedder, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
1090 } | 1063 } |
OLD | NEW |