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 |