| 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/common/content_settings.h" | 5 #include "chrome/common/content_settings.h" |
| 6 #include "chrome/common/render_messages.h" | 6 #include "chrome/common/render_messages.h" |
| 7 #include "chrome/renderer/content_settings_observer.h" | 7 #include "chrome/renderer/content_settings_observer.h" |
| 8 #include "chrome/test/base/chrome_render_view_test.h" | 8 #include "chrome/test/base/chrome_render_view_test.h" |
| 9 #include "content/public/renderer/render_view.h" | 9 #include "content/public/renderer/render_view.h" |
| 10 #include "ipc/ipc_message_macros.h" | 10 #include "ipc/ipc_message_macros.h" |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 103 "</body>" | 103 "</body>" |
| 104 "</html>"; | 104 "</html>"; |
| 105 render_thread_->sink().ClearMessages(); | 105 render_thread_->sink().ClearMessages(); |
| 106 LoadHTML(html.c_str()); | 106 LoadHTML(html.c_str()); |
| 107 | 107 |
| 108 // 2. Block JavaScript. | 108 // 2. Block JavaScript. |
| 109 RendererContentSettingRules content_setting_rules; | 109 RendererContentSettingRules content_setting_rules; |
| 110 ContentSettingsForOneType& script_setting_rules = | 110 ContentSettingsForOneType& script_setting_rules = |
| 111 content_setting_rules.script_rules; | 111 content_setting_rules.script_rules; |
| 112 script_setting_rules.push_back( | 112 script_setting_rules.push_back( |
| 113 ContentSettingPatternSource( | 113 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), |
| 114 ContentSettingsPattern::Wildcard(), | 114 ContentSettingsPattern::Wildcard(), |
| 115 ContentSettingsPattern::Wildcard(), | 115 CONTENT_SETTING_BLOCK, |
| 116 CONTENT_SETTING_BLOCK, | 116 std::string(), |
| 117 "", | 117 false)); |
| 118 false)); | |
| 119 ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); | 118 ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); |
| 120 observer->SetContentSettingRules(&content_setting_rules); | 119 observer->SetContentSettingRules(&content_setting_rules); |
| 121 | 120 |
| 122 // Make sure no pending messages are in the queue. | 121 // Make sure no pending messages are in the queue. |
| 123 ProcessPendingMessages(); | 122 ProcessPendingMessages(); |
| 124 render_thread_->sink().ClearMessages(); | 123 render_thread_->sink().ClearMessages(); |
| 125 | 124 |
| 126 // 3. Reload page. | 125 // 3. Reload page. |
| 127 std::string url_str = "data:text/html;charset=utf-8,"; | 126 std::string url_str = "data:text/html;charset=utf-8,"; |
| 128 url_str.append(html); | 127 url_str.append(html); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 LoadHTML("<html>Foo</html>"); | 185 LoadHTML("<html>Foo</html>"); |
| 187 | 186 |
| 188 // Set the default image blocking setting. | 187 // Set the default image blocking setting. |
| 189 RendererContentSettingRules content_setting_rules; | 188 RendererContentSettingRules content_setting_rules; |
| 190 ContentSettingsForOneType& image_setting_rules = | 189 ContentSettingsForOneType& image_setting_rules = |
| 191 content_setting_rules.image_rules; | 190 content_setting_rules.image_rules; |
| 192 image_setting_rules.push_back( | 191 image_setting_rules.push_back( |
| 193 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), | 192 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), |
| 194 ContentSettingsPattern::Wildcard(), | 193 ContentSettingsPattern::Wildcard(), |
| 195 CONTENT_SETTING_BLOCK, | 194 CONTENT_SETTING_BLOCK, |
| 196 "", | 195 std::string(), |
| 197 false)); | 196 false)); |
| 198 | 197 |
| 199 ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); | 198 ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); |
| 200 observer->SetContentSettingRules(&content_setting_rules); | 199 observer->SetContentSettingRules(&content_setting_rules); |
| 201 EXPECT_CALL(mock_observer, | 200 EXPECT_CALL(mock_observer, |
| 202 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string())); | 201 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string())); |
| 203 EXPECT_FALSE(observer->AllowImage(GetMainFrame(), | 202 EXPECT_FALSE(observer->AllowImage(GetMainFrame(), |
| 204 true, mock_observer.image_url_)); | 203 true, mock_observer.image_url_)); |
| 205 ::testing::Mock::VerifyAndClearExpectations(&observer); | 204 ::testing::Mock::VerifyAndClearExpectations(&observer); |
| 206 | 205 |
| 207 // Create an exception which allows the image. | 206 // Create an exception which allows the image. |
| 208 image_setting_rules.insert( | 207 image_setting_rules.insert( |
| 209 image_setting_rules.begin(), | 208 image_setting_rules.begin(), |
| 210 ContentSettingPatternSource( | 209 ContentSettingPatternSource( |
| 211 ContentSettingsPattern::Wildcard(), | 210 ContentSettingsPattern::Wildcard(), |
| 212 ContentSettingsPattern::FromString(mock_observer.image_origin_), | 211 ContentSettingsPattern::FromString(mock_observer.image_origin_), |
| 213 CONTENT_SETTING_ALLOW, | 212 CONTENT_SETTING_ALLOW, |
| 214 "", | 213 std::string(), |
| 215 false)); | 214 false)); |
| 216 | 215 |
| 217 EXPECT_CALL( | 216 EXPECT_CALL( |
| 218 mock_observer, | 217 mock_observer, |
| 219 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string())).Times(0); | 218 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string())).Times(0); |
| 220 EXPECT_TRUE(observer->AllowImage(GetMainFrame(), true, | 219 EXPECT_TRUE(observer->AllowImage(GetMainFrame(), true, |
| 221 mock_observer.image_url_)); | 220 mock_observer.image_url_)); |
| 222 ::testing::Mock::VerifyAndClearExpectations(&observer); | 221 ::testing::Mock::VerifyAndClearExpectations(&observer); |
| 223 } | 222 } |
| 224 | 223 |
| 225 TEST_F(ChromeRenderViewTest, ImagesAllowedByDefault) { | 224 TEST_F(ChromeRenderViewTest, ImagesAllowedByDefault) { |
| 226 MockContentSettingsObserver mock_observer(view_); | 225 MockContentSettingsObserver mock_observer(view_); |
| 227 | 226 |
| 228 // Load some HTML. | 227 // Load some HTML. |
| 229 LoadHTML("<html>Foo</html>"); | 228 LoadHTML("<html>Foo</html>"); |
| 230 | 229 |
| 231 // Set the default image blocking setting. | 230 // Set the default image blocking setting. |
| 232 RendererContentSettingRules content_setting_rules; | 231 RendererContentSettingRules content_setting_rules; |
| 233 ContentSettingsForOneType& image_setting_rules = | 232 ContentSettingsForOneType& image_setting_rules = |
| 234 content_setting_rules.image_rules; | 233 content_setting_rules.image_rules; |
| 235 image_setting_rules.push_back( | 234 image_setting_rules.push_back( |
| 236 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), | 235 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), |
| 237 ContentSettingsPattern::Wildcard(), | 236 ContentSettingsPattern::Wildcard(), |
| 238 CONTENT_SETTING_ALLOW, | 237 CONTENT_SETTING_ALLOW, |
| 239 "", | 238 std::string(), |
| 240 false)); | 239 false)); |
| 241 | 240 |
| 242 ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); | 241 ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); |
| 243 observer->SetContentSettingRules(&content_setting_rules); | 242 observer->SetContentSettingRules(&content_setting_rules); |
| 244 EXPECT_CALL( | 243 EXPECT_CALL( |
| 245 mock_observer, | 244 mock_observer, |
| 246 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string())).Times(0); | 245 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string())).Times(0); |
| 247 EXPECT_TRUE(observer->AllowImage(GetMainFrame(), true, | 246 EXPECT_TRUE(observer->AllowImage(GetMainFrame(), true, |
| 248 mock_observer.image_url_)); | 247 mock_observer.image_url_)); |
| 249 ::testing::Mock::VerifyAndClearExpectations(&observer); | 248 ::testing::Mock::VerifyAndClearExpectations(&observer); |
| 250 | 249 |
| 251 // Create an exception which blocks the image. | 250 // Create an exception which blocks the image. |
| 252 image_setting_rules.insert( | 251 image_setting_rules.insert( |
| 253 image_setting_rules.begin(), | 252 image_setting_rules.begin(), |
| 254 ContentSettingPatternSource( | 253 ContentSettingPatternSource( |
| 255 ContentSettingsPattern::Wildcard(), | 254 ContentSettingsPattern::Wildcard(), |
| 256 ContentSettingsPattern::FromString(mock_observer.image_origin_), | 255 ContentSettingsPattern::FromString(mock_observer.image_origin_), |
| 257 CONTENT_SETTING_BLOCK, | 256 CONTENT_SETTING_BLOCK, |
| 258 "", | 257 std::string(), |
| 259 false)); | 258 false)); |
| 260 EXPECT_CALL(mock_observer, | 259 EXPECT_CALL(mock_observer, |
| 261 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string())); | 260 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string())); |
| 262 EXPECT_FALSE(observer->AllowImage(GetMainFrame(), | 261 EXPECT_FALSE(observer->AllowImage(GetMainFrame(), |
| 263 true, mock_observer.image_url_)); | 262 true, mock_observer.image_url_)); |
| 264 ::testing::Mock::VerifyAndClearExpectations(&observer); | 263 ::testing::Mock::VerifyAndClearExpectations(&observer); |
| 265 } | 264 } |
| 266 | 265 |
| 267 TEST_F(ChromeRenderViewTest, ContentSettingsBlockScripts) { | 266 TEST_F(ChromeRenderViewTest, ContentSettingsBlockScripts) { |
| 268 // Set the content settings for scripts. | 267 // Set the content settings for scripts. |
| 269 RendererContentSettingRules content_setting_rules; | 268 RendererContentSettingRules content_setting_rules; |
| 270 ContentSettingsForOneType& script_setting_rules = | 269 ContentSettingsForOneType& script_setting_rules = |
| 271 content_setting_rules.script_rules; | 270 content_setting_rules.script_rules; |
| 272 script_setting_rules.push_back( | 271 script_setting_rules.push_back( |
| 273 ContentSettingPatternSource( | 272 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), |
| 274 ContentSettingsPattern::Wildcard(), | 273 ContentSettingsPattern::Wildcard(), |
| 275 ContentSettingsPattern::Wildcard(), | 274 CONTENT_SETTING_BLOCK, |
| 276 CONTENT_SETTING_BLOCK, | 275 std::string(), |
| 277 "", | 276 false)); |
| 278 false)); | |
| 279 | 277 |
| 280 ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); | 278 ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); |
| 281 observer->SetContentSettingRules(&content_setting_rules); | 279 observer->SetContentSettingRules(&content_setting_rules); |
| 282 | 280 |
| 283 // Load a page which contains a script. | 281 // Load a page which contains a script. |
| 284 std::string html = "<html>" | 282 std::string html = "<html>" |
| 285 "<head>" | 283 "<head>" |
| 286 "<script src='data:foo'></script>" | 284 "<script src='data:foo'></script>" |
| 287 "</head>" | 285 "</head>" |
| 288 "<body>" | 286 "<body>" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 299 } | 297 } |
| 300 EXPECT_TRUE(was_blocked); | 298 EXPECT_TRUE(was_blocked); |
| 301 } | 299 } |
| 302 | 300 |
| 303 TEST_F(ChromeRenderViewTest, ContentSettingsAllowScripts) { | 301 TEST_F(ChromeRenderViewTest, ContentSettingsAllowScripts) { |
| 304 // Set the content settings for scripts. | 302 // Set the content settings for scripts. |
| 305 RendererContentSettingRules content_setting_rules; | 303 RendererContentSettingRules content_setting_rules; |
| 306 ContentSettingsForOneType& script_setting_rules = | 304 ContentSettingsForOneType& script_setting_rules = |
| 307 content_setting_rules.script_rules; | 305 content_setting_rules.script_rules; |
| 308 script_setting_rules.push_back( | 306 script_setting_rules.push_back( |
| 309 ContentSettingPatternSource( | 307 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), |
| 310 ContentSettingsPattern::Wildcard(), | 308 ContentSettingsPattern::Wildcard(), |
| 311 ContentSettingsPattern::Wildcard(), | 309 CONTENT_SETTING_ALLOW, |
| 312 CONTENT_SETTING_ALLOW, | 310 std::string(), |
| 313 "", | 311 false)); |
| 314 false)); | |
| 315 | 312 |
| 316 ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); | 313 ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); |
| 317 observer->SetContentSettingRules(&content_setting_rules); | 314 observer->SetContentSettingRules(&content_setting_rules); |
| 318 | 315 |
| 319 // Load a page which contains a script. | 316 // Load a page which contains a script. |
| 320 std::string html = "<html>" | 317 std::string html = "<html>" |
| 321 "<head>" | 318 "<head>" |
| 322 "<script src='data:foo'></script>" | 319 "<script src='data:foo'></script>" |
| 323 "</head>" | 320 "</head>" |
| 324 "<body>" | 321 "<body>" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 336 EXPECT_FALSE(was_blocked); | 333 EXPECT_FALSE(was_blocked); |
| 337 } | 334 } |
| 338 | 335 |
| 339 TEST_F(ChromeRenderViewTest, ContentSettingsInterstitialPages) { | 336 TEST_F(ChromeRenderViewTest, ContentSettingsInterstitialPages) { |
| 340 MockContentSettingsObserver mock_observer(view_); | 337 MockContentSettingsObserver mock_observer(view_); |
| 341 // Block scripts. | 338 // Block scripts. |
| 342 RendererContentSettingRules content_setting_rules; | 339 RendererContentSettingRules content_setting_rules; |
| 343 ContentSettingsForOneType& script_setting_rules = | 340 ContentSettingsForOneType& script_setting_rules = |
| 344 content_setting_rules.script_rules; | 341 content_setting_rules.script_rules; |
| 345 script_setting_rules.push_back( | 342 script_setting_rules.push_back( |
| 346 ContentSettingPatternSource( | 343 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), |
| 347 ContentSettingsPattern::Wildcard(), | 344 ContentSettingsPattern::Wildcard(), |
| 348 ContentSettingsPattern::Wildcard(), | 345 CONTENT_SETTING_BLOCK, |
| 349 CONTENT_SETTING_BLOCK, "", false)); | 346 std::string(), |
| 347 false)); |
| 350 // Block images. | 348 // Block images. |
| 351 ContentSettingsForOneType& image_setting_rules = | 349 ContentSettingsForOneType& image_setting_rules = |
| 352 content_setting_rules.image_rules; | 350 content_setting_rules.image_rules; |
| 353 image_setting_rules.push_back( | 351 image_setting_rules.push_back( |
| 354 ContentSettingPatternSource( | 352 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), |
| 355 ContentSettingsPattern::Wildcard(), | 353 ContentSettingsPattern::Wildcard(), |
| 356 ContentSettingsPattern::Wildcard(), | 354 CONTENT_SETTING_BLOCK, |
| 357 CONTENT_SETTING_BLOCK, "", false)); | 355 std::string(), |
| 356 false)); |
| 358 | 357 |
| 359 ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); | 358 ContentSettingsObserver* observer = ContentSettingsObserver::Get(view_); |
| 360 observer->SetContentSettingRules(&content_setting_rules); | 359 observer->SetContentSettingRules(&content_setting_rules); |
| 361 observer->OnSetAsInterstitial(); | 360 observer->OnSetAsInterstitial(); |
| 362 | 361 |
| 363 // Load a page which contains a script. | 362 // Load a page which contains a script. |
| 364 std::string html = "<html>" | 363 std::string html = "<html>" |
| 365 "<head>" | 364 "<head>" |
| 366 "<script src='data:foo'></script>" | 365 "<script src='data:foo'></script>" |
| 367 "</head>" | 366 "</head>" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 380 EXPECT_FALSE(was_blocked); | 379 EXPECT_FALSE(was_blocked); |
| 381 | 380 |
| 382 // Verify that images are allowed. | 381 // Verify that images are allowed. |
| 383 EXPECT_CALL( | 382 EXPECT_CALL( |
| 384 mock_observer, | 383 mock_observer, |
| 385 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string())).Times(0); | 384 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES, std::string())).Times(0); |
| 386 EXPECT_TRUE(observer->AllowImage(GetMainFrame(), true, | 385 EXPECT_TRUE(observer->AllowImage(GetMainFrame(), true, |
| 387 mock_observer.image_url_)); | 386 mock_observer.image_url_)); |
| 388 ::testing::Mock::VerifyAndClearExpectations(&observer); | 387 ::testing::Mock::VerifyAndClearExpectations(&observer); |
| 389 } | 388 } |
| OLD | NEW |