| 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 "chrome/browser/content_settings/content_settings_pref_provider.h" | 5 #include "chrome/browser/content_settings/content_settings_pref_provider.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 "chrome/browser/content_settings/mock_settings_observer.h" | 9 #include "chrome/browser/content_settings/mock_settings_observer.h" |
| 10 #include "chrome/browser/prefs/browser_prefs.h" | 10 #include "chrome/browser/prefs/browser_prefs.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 #include "googleurl/src/gurl.h" | 23 #include "googleurl/src/gurl.h" |
| 24 #include "testing/gtest/include/gtest/gtest.h" | 24 #include "testing/gtest/include/gtest/gtest.h" |
| 25 | 25 |
| 26 using ::testing::_; | 26 using ::testing::_; |
| 27 | 27 |
| 28 namespace content_settings { | 28 namespace content_settings { |
| 29 | 29 |
| 30 class PrefDefaultProviderTest : public TestingBrowserProcessTest { | 30 class PrefDefaultProviderTest : public TestingBrowserProcessTest { |
| 31 public: | 31 public: |
| 32 PrefDefaultProviderTest() | 32 PrefDefaultProviderTest() |
| 33 : ui_thread_(BrowserThread::UI, &message_loop_) { | 33 : ui_thread_(BrowserThread::UI, &message_loop_), |
| 34 provider_(profile_.GetHostContentSettingsMap(), |
| 35 profile_.GetPrefs(), |
| 36 false) { |
| 37 } |
| 38 ~PrefDefaultProviderTest() { |
| 39 provider_.ShutdownOnUIThread(); |
| 34 } | 40 } |
| 35 | 41 |
| 36 protected: | 42 protected: |
| 37 MessageLoop message_loop_; | 43 MessageLoop message_loop_; |
| 38 BrowserThread ui_thread_; | 44 BrowserThread ui_thread_; |
| 45 TestingProfile profile_; |
| 46 PrefDefaultProvider provider_; |
| 39 }; | 47 }; |
| 40 | 48 |
| 41 TEST_F(PrefDefaultProviderTest, DefaultValues) { | 49 TEST_F(PrefDefaultProviderTest, DefaultValues) { |
| 42 TestingProfile profile; | |
| 43 content_settings::PrefDefaultProvider provider(&profile); | |
| 44 | |
| 45 ASSERT_FALSE( | 50 ASSERT_FALSE( |
| 46 provider.DefaultSettingIsManaged(CONTENT_SETTINGS_TYPE_COOKIES)); | 51 provider_.DefaultSettingIsManaged(CONTENT_SETTINGS_TYPE_COOKIES)); |
| 47 | 52 |
| 48 // Check setting defaults. | 53 // Check setting defaults. |
| 49 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 54 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 50 provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); | 55 provider_.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); |
| 51 provider.UpdateDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES, | 56 provider_.UpdateDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES, |
| 52 CONTENT_SETTING_BLOCK); | 57 CONTENT_SETTING_BLOCK); |
| 53 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 58 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 54 provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); | 59 provider_.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); |
| 55 } | 60 } |
| 56 | 61 |
| 57 TEST_F(PrefDefaultProviderTest, Observer) { | 62 TEST_F(PrefDefaultProviderTest, Observer) { |
| 58 TestingProfile profile; | |
| 59 PrefDefaultProvider provider(&profile); | |
| 60 MockSettingsObserver observer; | 63 MockSettingsObserver observer; |
| 61 | 64 |
| 62 EXPECT_CALL(observer, | 65 EXPECT_CALL(observer, |
| 63 OnContentSettingsChanged(profile.GetHostContentSettingsMap(), | 66 OnContentSettingsChanged(profile_.GetHostContentSettingsMap(), |
| 64 CONTENT_SETTINGS_TYPE_IMAGES, false, | 67 CONTENT_SETTINGS_TYPE_IMAGES, false, |
| 65 _, _, true)); | 68 _, _, true)); |
| 66 // Expect a second call because the PrefDefaultProvider in the TestingProfile | 69 // Expect a second call because the PrefDefaultProvider in the TestingProfile |
| 67 // also observes the default content settings preference. | 70 // also observes the default content settings preference. |
| 68 EXPECT_CALL(observer, | 71 EXPECT_CALL(observer, |
| 69 OnContentSettingsChanged(profile.GetHostContentSettingsMap(), | 72 OnContentSettingsChanged(profile_.GetHostContentSettingsMap(), |
| 70 CONTENT_SETTINGS_TYPE_DEFAULT, true, | 73 CONTENT_SETTINGS_TYPE_DEFAULT, true, |
| 71 _, _, true)); | 74 _, _, true)); |
| 72 provider.UpdateDefaultSetting( | 75 provider_.UpdateDefaultSetting( |
| 73 CONTENT_SETTINGS_TYPE_IMAGES, CONTENT_SETTING_BLOCK); | 76 CONTENT_SETTINGS_TYPE_IMAGES, CONTENT_SETTING_BLOCK); |
| 74 } | 77 } |
| 75 | 78 |
| 76 TEST_F(PrefDefaultProviderTest, ObserveDefaultPref) { | 79 TEST_F(PrefDefaultProviderTest, ObserveDefaultPref) { |
| 77 TestingProfile profile; | 80 PrefService* prefs = profile_.GetPrefs(); |
| 78 PrefDefaultProvider provider(&profile); | |
| 79 | |
| 80 PrefService* prefs = profile.GetPrefs(); | |
| 81 | 81 |
| 82 // Make a copy of the default pref value so we can reset it later. | 82 // Make a copy of the default pref value so we can reset it later. |
| 83 scoped_ptr<Value> default_value(prefs->FindPreference( | 83 scoped_ptr<Value> default_value(prefs->FindPreference( |
| 84 prefs::kDefaultContentSettings)->GetValue()->DeepCopy()); | 84 prefs::kDefaultContentSettings)->GetValue()->DeepCopy()); |
| 85 | 85 |
| 86 provider.UpdateDefaultSetting( | 86 provider_.UpdateDefaultSetting( |
| 87 CONTENT_SETTINGS_TYPE_COOKIES, CONTENT_SETTING_BLOCK); | 87 CONTENT_SETTINGS_TYPE_COOKIES, CONTENT_SETTING_BLOCK); |
| 88 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 88 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 89 provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); | 89 provider_.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); |
| 90 | 90 |
| 91 // Make a copy of the pref's new value so we can reset it later. | 91 // Make a copy of the pref's new value so we can reset it later. |
| 92 scoped_ptr<Value> new_value(prefs->FindPreference( | 92 scoped_ptr<Value> new_value(prefs->FindPreference( |
| 93 prefs::kDefaultContentSettings)->GetValue()->DeepCopy()); | 93 prefs::kDefaultContentSettings)->GetValue()->DeepCopy()); |
| 94 | 94 |
| 95 // Clearing the backing pref should also clear the internal cache. | 95 // Clearing the backing pref should also clear the internal cache. |
| 96 prefs->Set(prefs::kDefaultContentSettings, *default_value); | 96 prefs->Set(prefs::kDefaultContentSettings, *default_value); |
| 97 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 97 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 98 provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); | 98 provider_.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); |
| 99 | 99 |
| 100 // Reseting the pref to its previous value should update the cache. | 100 // Reseting the pref to its previous value should update the cache. |
| 101 prefs->Set(prefs::kDefaultContentSettings, *new_value); | 101 prefs->Set(prefs::kDefaultContentSettings, *new_value); |
| 102 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 102 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 103 provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); | 103 provider_.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); |
| 104 } | 104 } |
| 105 | 105 |
| 106 TEST_F(PrefDefaultProviderTest, OffTheRecord) { | 106 TEST_F(PrefDefaultProviderTest, OffTheRecord) { |
| 107 TestingProfile profile; | 107 PrefDefaultProvider otr_provider(profile_.GetHostContentSettingsMap(), |
| 108 PrefDefaultProvider provider(&profile); | 108 profile_.GetPrefs(), |
| 109 | 109 true); |
| 110 profile.set_incognito(true); | |
| 111 PrefDefaultProvider otr_provider(&profile); | |
| 112 profile.set_incognito(false); | |
| 113 | 110 |
| 114 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 111 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 115 provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); | 112 provider_.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); |
| 116 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 113 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 117 otr_provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); | 114 otr_provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); |
| 118 | 115 |
| 119 // Changing content settings on the main provider should also affect the | 116 // Changing content settings on the main provider should also affect the |
| 120 // incognito map. | 117 // incognito map. |
| 121 provider.UpdateDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES, | 118 provider_.UpdateDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES, |
| 122 CONTENT_SETTING_BLOCK); | 119 CONTENT_SETTING_BLOCK); |
| 123 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 120 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 124 provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); | 121 provider_.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); |
| 125 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 122 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 126 otr_provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); | 123 otr_provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); |
| 127 | 124 |
| 128 // Changing content settings on the incognito provider should be ignored. | 125 // Changing content settings on the incognito provider should be ignored. |
| 129 otr_provider.UpdateDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES, | 126 otr_provider.UpdateDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES, |
| 130 CONTENT_SETTING_ALLOW); | 127 CONTENT_SETTING_ALLOW); |
| 131 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 128 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 132 provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); | 129 provider_.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); |
| 133 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 130 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 134 otr_provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); | 131 otr_provider.ProvideDefaultSetting(CONTENT_SETTINGS_TYPE_COOKIES)); |
| 132 |
| 133 otr_provider.ShutdownOnUIThread(); |
| 135 } | 134 } |
| 136 | 135 |
| 137 // //////////////////////////////////////////////////////////////////////////// | 136 // //////////////////////////////////////////////////////////////////////////// |
| 138 // PrefProviderTest | 137 // PrefProviderTest |
| 139 // | 138 // |
| 140 | 139 |
| 141 bool SettingsEqual(const ContentSettings& settings1, | 140 bool SettingsEqual(const ContentSettings& settings1, |
| 142 const ContentSettings& settings2) { | 141 const ContentSettings& settings2) { |
| 143 for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { | 142 for (int i = 0; i < CONTENT_SETTINGS_NUM_TYPES; ++i) { |
| 144 if (settings1.settings[i] != settings2.settings[i]) | 143 if (settings1.settings[i] != settings2.settings[i]) |
| 145 return false; | 144 return false; |
| 146 } | 145 } |
| 147 return true; | 146 return true; |
| 148 } | 147 } |
| 149 | 148 |
| 150 class PrefProviderTest : public TestingBrowserProcessTest { | 149 class PrefProviderTest : public TestingBrowserProcessTest { |
| 151 public: | 150 public: |
| 152 PrefProviderTest() : ui_thread_( | 151 PrefProviderTest() : ui_thread_( |
| 153 BrowserThread::UI, &message_loop_) { | 152 BrowserThread::UI, &message_loop_) { |
| 154 } | 153 } |
| 155 | 154 |
| 156 protected: | 155 protected: |
| 157 MessageLoop message_loop_; | 156 MessageLoop message_loop_; |
| 158 BrowserThread ui_thread_; | 157 BrowserThread ui_thread_; |
| 159 }; | 158 }; |
| 160 | 159 |
| 161 TEST_F(PrefProviderTest, Observer) { | 160 TEST_F(PrefProviderTest, Observer) { |
| 162 TestingProfile profile; | 161 TestingProfile profile; |
| 163 // Get the |HostContentSettingsMap| one time in order to initialize it. | 162 PrefProvider pref_content_settings_provider( |
| 164 // Otherwise we end up in a dead lock when the |PrefProvider| tries to notify | 163 profile.GetHostContentSettingsMap(), profile.GetPrefs(), false); |
| 165 // content settings change observers. The |PrefProvider| set's the | |
| 166 // |HostContentSettingsMap| as notification source and would trigger in | |
| 167 // infinite recursive instantiation loop. | |
| 168 // TODO(markusheintz): Let the HostContentSettingsMap sent out notifications. | |
| 169 // Providers and HostContentSettingsMap should communicate via a observer | |
| 170 // pattern. | |
| 171 profile.GetHostContentSettingsMap(); | |
| 172 Profile* p = &profile; | |
| 173 PrefProvider pref_content_settings_provider(p); | |
| 174 MockSettingsObserver observer; | 164 MockSettingsObserver observer; |
| 175 ContentSettingsPattern pattern = | 165 ContentSettingsPattern pattern = |
| 176 ContentSettingsPattern::FromString("[*.]example.com"); | 166 ContentSettingsPattern::FromString("[*.]example.com"); |
| 177 | 167 |
| 178 // There are two PrefProvider instances, one in the host content settings map | 168 // There are two PrefProvider instances, one in the host content settings map |
| 179 // and one instance that is created here. Setting a content setting will fire | 169 // and one instance that is created here. Setting a content setting will fire |
| 180 // one notification. This will change the underlying preferences which will | 170 // one notification. This will change the underlying preferences which will |
| 181 // cause the second PrefProvider instance to reload these and to | 171 // cause the second PrefProvider instance to reload these and to |
| 182 // sync the obsolete prefences. Hence we get two more notifications which we | 172 // sync the obsolete prefences. Hence we get two more notifications which we |
| 183 // will not get in the real world. | 173 // will not get in the real world. |
| 184 EXPECT_CALL(observer, | 174 EXPECT_CALL(observer, |
| 185 OnContentSettingsChanged(profile.GetHostContentSettingsMap(), | 175 OnContentSettingsChanged(profile.GetHostContentSettingsMap(), |
| 186 CONTENT_SETTINGS_TYPE_IMAGES, | 176 CONTENT_SETTINGS_TYPE_IMAGES, |
| 187 false, | 177 false, |
| 188 pattern, | 178 pattern, |
| 189 ContentSettingsPattern::Wildcard(), | 179 ContentSettingsPattern::Wildcard(), |
| 190 false)); | 180 false)); |
| 191 EXPECT_CALL(observer, | 181 EXPECT_CALL(observer, |
| 192 OnContentSettingsChanged(profile.GetHostContentSettingsMap(), | 182 OnContentSettingsChanged(profile.GetHostContentSettingsMap(), |
| 193 CONTENT_SETTINGS_TYPE_DEFAULT, true, | 183 CONTENT_SETTINGS_TYPE_DEFAULT, true, |
| 194 _, _, true)).Times(2); | 184 _, _, true)).Times(2); |
| 195 pref_content_settings_provider.SetContentSetting( | 185 pref_content_settings_provider.SetContentSetting( |
| 196 pattern, | 186 pattern, |
| 197 ContentSettingsPattern::Wildcard(), | 187 ContentSettingsPattern::Wildcard(), |
| 198 CONTENT_SETTINGS_TYPE_IMAGES, | 188 CONTENT_SETTINGS_TYPE_IMAGES, |
| 199 "", | 189 "", |
| 200 CONTENT_SETTING_ALLOW); | 190 CONTENT_SETTING_ALLOW); |
| 191 |
| 192 pref_content_settings_provider.ShutdownOnUIThread(); |
| 201 } | 193 } |
| 202 | 194 |
| 203 // Test for regression in which the PrefProvider modified the user pref store | 195 // Test for regression in which the PrefProvider modified the user pref store |
| 204 // of the OTR unintentionally: http://crbug.com/74466. | 196 // of the OTR unintentionally: http://crbug.com/74466. |
| 205 TEST_F(PrefProviderTest, Incognito) { | 197 TEST_F(PrefProviderTest, Incognito) { |
| 206 PersistentPrefStore* user_prefs = new TestingPrefStore(); | 198 PersistentPrefStore* user_prefs = new TestingPrefStore(); |
| 207 OverlayPersistentPrefStore* otr_user_prefs = | 199 OverlayPersistentPrefStore* otr_user_prefs = |
| 208 new OverlayPersistentPrefStore(user_prefs); | 200 new OverlayPersistentPrefStore(user_prefs); |
| 209 | 201 |
| 210 PrefServiceMockBuilder builder; | 202 PrefServiceMockBuilder builder; |
| 211 PrefService* regular_prefs = builder.WithUserPrefs(user_prefs).Create(); | 203 PrefService* regular_prefs = builder.WithUserPrefs(user_prefs).Create(); |
| 212 | 204 |
| 213 Profile::RegisterUserPrefs(regular_prefs); | 205 Profile::RegisterUserPrefs(regular_prefs); |
| 214 browser::RegisterUserPrefs(regular_prefs); | 206 browser::RegisterUserPrefs(regular_prefs); |
| 215 | 207 |
| 216 PrefService* otr_prefs = builder.WithUserPrefs(otr_user_prefs).Create(); | 208 PrefService* otr_prefs = builder.WithUserPrefs(otr_user_prefs).Create(); |
| 217 | 209 |
| 218 Profile::RegisterUserPrefs(otr_prefs); | 210 Profile::RegisterUserPrefs(otr_prefs); |
| 219 browser::RegisterUserPrefs(otr_prefs); | 211 browser::RegisterUserPrefs(otr_prefs); |
| 220 | 212 |
| 221 TestingProfile profile; | 213 TestingProfile profile; |
| 222 TestingProfile* otr_profile = new TestingProfile; | 214 TestingProfile* otr_profile = new TestingProfile; |
| 223 profile.SetOffTheRecordProfile(otr_profile); | 215 profile.SetOffTheRecordProfile(otr_profile); |
| 224 profile.SetPrefService(regular_prefs); | 216 profile.SetPrefService(regular_prefs); |
| 225 otr_profile->set_incognito(true); | 217 otr_profile->set_incognito(true); |
| 226 otr_profile->SetPrefService(otr_prefs); | 218 otr_profile->SetPrefService(otr_prefs); |
| 227 profile.GetHostContentSettingsMap(); | |
| 228 | 219 |
| 229 PrefProvider pref_content_settings_provider(&profile); | 220 PrefProvider pref_content_settings_provider( |
| 230 PrefProvider pref_content_settings_provider_incognito(otr_profile); | 221 profile.GetHostContentSettingsMap(), regular_prefs, false); |
| 222 PrefProvider pref_content_settings_provider_incognito( |
| 223 otr_profile->GetHostContentSettingsMap(), otr_prefs, true); |
| 231 ContentSettingsPattern pattern = | 224 ContentSettingsPattern pattern = |
| 232 ContentSettingsPattern::FromString("[*.]example.com"); | 225 ContentSettingsPattern::FromString("[*.]example.com"); |
| 233 pref_content_settings_provider.SetContentSetting( | 226 pref_content_settings_provider.SetContentSetting( |
| 234 pattern, | 227 pattern, |
| 235 pattern, | 228 pattern, |
| 236 CONTENT_SETTINGS_TYPE_IMAGES, | 229 CONTENT_SETTINGS_TYPE_IMAGES, |
| 237 "", | 230 "", |
| 238 CONTENT_SETTING_ALLOW); | 231 CONTENT_SETTING_ALLOW); |
| 239 | 232 |
| 240 GURL host("http://example.com/"); | 233 GURL host("http://example.com/"); |
| 241 // The value should of course be visible in the regular PrefProvider. | 234 // The value should of course be visible in the regular PrefProvider. |
| 242 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 235 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 243 pref_content_settings_provider.GetContentSetting( | 236 pref_content_settings_provider.GetContentSetting( |
| 244 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); | 237 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
| 245 // And also in the OTR version. | 238 // And also in the OTR version. |
| 246 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 239 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
| 247 pref_content_settings_provider_incognito.GetContentSetting( | 240 pref_content_settings_provider_incognito.GetContentSetting( |
| 248 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); | 241 host, host, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
| 249 // But the value should not be overridden in the OTR user prefs accidentally. | 242 // But the value should not be overridden in the OTR user prefs accidentally. |
| 250 EXPECT_FALSE(otr_user_prefs->IsSetInOverlay(prefs::kContentSettingsPatterns)); | 243 EXPECT_FALSE(otr_user_prefs->IsSetInOverlay(prefs::kContentSettingsPatterns)); |
| 244 |
| 245 pref_content_settings_provider.ShutdownOnUIThread(); |
| 246 pref_content_settings_provider_incognito.ShutdownOnUIThread(); |
| 251 } | 247 } |
| 252 | 248 |
| 253 TEST_F(PrefProviderTest, Patterns) { | 249 TEST_F(PrefProviderTest, Patterns) { |
| 254 TestingProfile testing_profile; | 250 TestingProfile testing_profile; |
| 255 testing_profile.GetHostContentSettingsMap(); | |
| 256 PrefProvider pref_content_settings_provider( | 251 PrefProvider pref_content_settings_provider( |
| 257 testing_profile.GetOriginalProfile()); | 252 testing_profile.GetHostContentSettingsMap(), |
| 253 testing_profile.GetPrefs(), false); |
| 258 | 254 |
| 259 GURL host1("http://example.com/"); | 255 GURL host1("http://example.com/"); |
| 260 GURL host2("http://www.example.com/"); | 256 GURL host2("http://www.example.com/"); |
| 261 GURL host3("http://example.org/"); | 257 GURL host3("http://example.org/"); |
| 262 GURL host4("file:///tmp/test.html"); | 258 GURL host4("file:///tmp/test.html"); |
| 263 ContentSettingsPattern pattern1 = | 259 ContentSettingsPattern pattern1 = |
| 264 ContentSettingsPattern::FromString("[*.]example.com"); | 260 ContentSettingsPattern::FromString("[*.]example.com"); |
| 265 ContentSettingsPattern pattern2 = | 261 ContentSettingsPattern pattern2 = |
| 266 ContentSettingsPattern::FromString("example.org"); | 262 ContentSettingsPattern::FromString("example.org"); |
| 267 ContentSettingsPattern pattern3 = | 263 ContentSettingsPattern pattern3 = |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 301 host4, host4, CONTENT_SETTINGS_TYPE_IMAGES, "")); | 297 host4, host4, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
| 302 pref_content_settings_provider.SetContentSetting( | 298 pref_content_settings_provider.SetContentSetting( |
| 303 pattern3, | 299 pattern3, |
| 304 pattern3, | 300 pattern3, |
| 305 CONTENT_SETTINGS_TYPE_IMAGES, | 301 CONTENT_SETTINGS_TYPE_IMAGES, |
| 306 "", | 302 "", |
| 307 CONTENT_SETTING_BLOCK); | 303 CONTENT_SETTING_BLOCK); |
| 308 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 304 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 309 pref_content_settings_provider.GetContentSetting( | 305 pref_content_settings_provider.GetContentSetting( |
| 310 host4, host4, CONTENT_SETTINGS_TYPE_IMAGES, "")); | 306 host4, host4, CONTENT_SETTINGS_TYPE_IMAGES, "")); |
| 307 |
| 308 pref_content_settings_provider.ShutdownOnUIThread(); |
| 311 } | 309 } |
| 312 | 310 |
| 313 TEST_F(PrefProviderTest, ResourceIdentifier) { | 311 TEST_F(PrefProviderTest, ResourceIdentifier) { |
| 314 // This feature is currently behind a flag. | 312 // This feature is currently behind a flag. |
| 315 CommandLine* cmd = CommandLine::ForCurrentProcess(); | 313 CommandLine* cmd = CommandLine::ForCurrentProcess(); |
| 316 AutoReset<CommandLine> auto_reset(cmd, *cmd); | 314 AutoReset<CommandLine> auto_reset(cmd, *cmd); |
| 317 cmd->AppendSwitch(switches::kEnableResourceContentSettings); | 315 cmd->AppendSwitch(switches::kEnableResourceContentSettings); |
| 318 | 316 |
| 319 TestingProfile testing_profile; | 317 TestingProfile testing_profile; |
| 320 testing_profile.GetHostContentSettingsMap(); | |
| 321 PrefProvider pref_content_settings_provider( | 318 PrefProvider pref_content_settings_provider( |
| 322 testing_profile.GetOriginalProfile()); | 319 testing_profile.GetHostContentSettingsMap(), |
| 320 testing_profile.GetPrefs(), |
| 321 false); |
| 323 | 322 |
| 324 GURL host("http://example.com/"); | 323 GURL host("http://example.com/"); |
| 325 ContentSettingsPattern pattern = | 324 ContentSettingsPattern pattern = |
| 326 ContentSettingsPattern::FromString("[*.]example.com"); | 325 ContentSettingsPattern::FromString("[*.]example.com"); |
| 327 std::string resource1("someplugin"); | 326 std::string resource1("someplugin"); |
| 328 std::string resource2("otherplugin"); | 327 std::string resource2("otherplugin"); |
| 329 | 328 |
| 330 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 329 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| 331 pref_content_settings_provider.GetContentSetting( | 330 pref_content_settings_provider.GetContentSetting( |
| 332 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, resource1)); | 331 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, resource1)); |
| 333 pref_content_settings_provider.SetContentSetting( | 332 pref_content_settings_provider.SetContentSetting( |
| 334 pattern, | 333 pattern, |
| 335 pattern, | 334 pattern, |
| 336 CONTENT_SETTINGS_TYPE_PLUGINS, | 335 CONTENT_SETTINGS_TYPE_PLUGINS, |
| 337 resource1, | 336 resource1, |
| 338 CONTENT_SETTING_BLOCK); | 337 CONTENT_SETTING_BLOCK); |
| 339 EXPECT_EQ(CONTENT_SETTING_BLOCK, | 338 EXPECT_EQ(CONTENT_SETTING_BLOCK, |
| 340 pref_content_settings_provider.GetContentSetting( | 339 pref_content_settings_provider.GetContentSetting( |
| 341 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, resource1)); | 340 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, resource1)); |
| 342 EXPECT_EQ(CONTENT_SETTING_DEFAULT, | 341 EXPECT_EQ(CONTENT_SETTING_DEFAULT, |
| 343 pref_content_settings_provider.GetContentSetting( | 342 pref_content_settings_provider.GetContentSetting( |
| 344 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, resource2)); | 343 host, host, CONTENT_SETTINGS_TYPE_PLUGINS, resource2)); |
| 344 |
| 345 pref_content_settings_provider.ShutdownOnUIThread(); |
| 345 } | 346 } |
| 346 | 347 |
| 347 TEST_F(PrefProviderTest, MigrateSinglePatternSettings) { | 348 TEST_F(PrefProviderTest, MigrateSinglePatternSettings) { |
| 348 // Setup single pattern settings. | 349 // Setup single pattern settings. |
| 349 TestingProfile profile; | 350 TestingProfile profile; |
| 350 PrefService* prefs = profile.GetPrefs(); | 351 PrefService* prefs = profile.GetPrefs(); |
| 351 | 352 |
| 352 DictionaryValue* settings_dictionary = new DictionaryValue(); | 353 DictionaryValue* settings_dictionary = new DictionaryValue(); |
| 353 settings_dictionary->SetInteger("cookies", 2); | 354 settings_dictionary->SetInteger("cookies", 2); |
| 354 settings_dictionary->SetInteger("images", 2); | 355 settings_dictionary->SetInteger("images", 2); |
| 355 settings_dictionary->SetInteger("popups", 2); | 356 settings_dictionary->SetInteger("popups", 2); |
| 356 | 357 |
| 357 ContentSettingsPattern pattern = | 358 ContentSettingsPattern pattern = |
| 358 ContentSettingsPattern::FromString("http://www.example.com"); | 359 ContentSettingsPattern::FromString("http://www.example.com"); |
| 359 scoped_ptr<DictionaryValue> all_settings_dictionary(new DictionaryValue()); | 360 scoped_ptr<DictionaryValue> all_settings_dictionary(new DictionaryValue()); |
| 360 all_settings_dictionary->SetWithoutPathExpansion( | 361 all_settings_dictionary->SetWithoutPathExpansion( |
| 361 pattern.ToString(), settings_dictionary); | 362 pattern.ToString(), settings_dictionary); |
| 362 | 363 |
| 363 // Set Obsolete preference. | 364 // Set Obsolete preference. |
| 364 prefs->Set(prefs::kContentSettingsPatterns, *all_settings_dictionary); | 365 prefs->Set(prefs::kContentSettingsPatterns, *all_settings_dictionary); |
| 365 | 366 |
| 366 // Test if single pattern settings are properly migrated. | 367 // Test if single pattern settings are properly migrated. |
| 367 content_settings::PrefProvider provider(profile.GetOriginalProfile()); | 368 content_settings::PrefProvider provider(profile.GetHostContentSettingsMap(), |
| 369 prefs, false); |
| 368 | 370 |
| 369 // Validate migrated preferences | 371 // Validate migrated preferences |
| 370 const DictionaryValue* const_all_settings_dictionary = | 372 const DictionaryValue* const_all_settings_dictionary = |
| 371 prefs->GetDictionary(prefs::kContentSettingsPatternPairs); | 373 prefs->GetDictionary(prefs::kContentSettingsPatternPairs); |
| 372 EXPECT_EQ(1U, const_all_settings_dictionary->size()); | 374 EXPECT_EQ(1U, const_all_settings_dictionary->size()); |
| 373 EXPECT_FALSE(const_all_settings_dictionary->HasKey(pattern.ToString())); | 375 EXPECT_FALSE(const_all_settings_dictionary->HasKey(pattern.ToString())); |
| 374 EXPECT_TRUE(const_all_settings_dictionary->HasKey( | 376 EXPECT_TRUE(const_all_settings_dictionary->HasKey( |
| 375 pattern.ToString() + "," + | 377 pattern.ToString() + "," + |
| 376 ContentSettingsPattern::Wildcard().ToString())); | 378 ContentSettingsPattern::Wildcard().ToString())); |
| 377 | 379 |
| 378 EXPECT_EQ(CONTENT_SETTING_BLOCK, provider.GetContentSetting( | 380 EXPECT_EQ(CONTENT_SETTING_BLOCK, provider.GetContentSetting( |
| 379 GURL("http://www.example.com"), | 381 GURL("http://www.example.com"), |
| 380 GURL("http://www.example.com"), | 382 GURL("http://www.example.com"), |
| 381 CONTENT_SETTINGS_TYPE_IMAGES, | 383 CONTENT_SETTINGS_TYPE_IMAGES, |
| 382 "")); | 384 "")); |
| 383 | 385 |
| 384 EXPECT_EQ(CONTENT_SETTING_BLOCK, provider.GetContentSetting( | 386 EXPECT_EQ(CONTENT_SETTING_BLOCK, provider.GetContentSetting( |
| 385 GURL("http://www.example.com"), | 387 GURL("http://www.example.com"), |
| 386 GURL("http://www.example.com"), | 388 GURL("http://www.example.com"), |
| 387 CONTENT_SETTINGS_TYPE_POPUPS, | 389 CONTENT_SETTINGS_TYPE_POPUPS, |
| 388 "")); | 390 "")); |
| 391 |
| 392 provider.ShutdownOnUIThread(); |
| 389 } | 393 } |
| 390 | 394 |
| 391 } // namespace content_settings | 395 } // namespace content_settings |
| OLD | NEW |