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

Side by Side Diff: chrome/renderer/content_settings_observer_browsertest.cc

Issue 27635002: Content settings for <audio> and <video>. Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Test fix. Created 6 years, 5 months 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
OLDNEW
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 10 matching lines...) Expand all
21 public: 21 public:
22 explicit MockContentSettingsObserver(content::RenderFrame* render_frame); 22 explicit MockContentSettingsObserver(content::RenderFrame* render_frame);
23 23
24 virtual bool Send(IPC::Message* message); 24 virtual bool Send(IPC::Message* message);
25 25
26 MOCK_METHOD1(OnContentBlocked, 26 MOCK_METHOD1(OnContentBlocked,
27 void(ContentSettingsType)); 27 void(ContentSettingsType));
28 28
29 MOCK_METHOD5(OnAllowDOMStorage, 29 MOCK_METHOD5(OnAllowDOMStorage,
30 void(int, const GURL&, const GURL&, bool, IPC::Message*)); 30 void(int, const GURL&, const GURL&, bool, IPC::Message*));
31 GURL image_url_; 31 GURL image_url_, media_url_;
32 std::string image_origin_; 32 std::string image_origin_, media_origin_;
33 }; 33 };
34 34
35 MockContentSettingsObserver::MockContentSettingsObserver( 35 MockContentSettingsObserver::MockContentSettingsObserver(
36 content::RenderFrame* render_frame) 36 content::RenderFrame* render_frame)
37 : ContentSettingsObserver(render_frame, NULL), 37 : ContentSettingsObserver(render_frame, NULL),
38 image_url_("http://www.foo.com/image.jpg"), 38 image_url_("http://www.foo.com/image.jpg"),
39 image_origin_("http://www.foo.com") { 39 media_url_("http://www.bar.com/video.webm"),
40 image_origin_("http://www.foo.com"),
41 media_origin_("http://www.bar.com") {
40 } 42 }
41 43
42 bool MockContentSettingsObserver::Send(IPC::Message* message) { 44 bool MockContentSettingsObserver::Send(IPC::Message* message) {
43 IPC_BEGIN_MESSAGE_MAP(MockContentSettingsObserver, *message) 45 IPC_BEGIN_MESSAGE_MAP(MockContentSettingsObserver, *message)
44 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_ContentBlocked, OnContentBlocked) 46 IPC_MESSAGE_HANDLER(ChromeViewHostMsg_ContentBlocked, OnContentBlocked)
45 IPC_MESSAGE_HANDLER_DELAY_REPLY(ChromeViewHostMsg_AllowDOMStorage, 47 IPC_MESSAGE_HANDLER_DELAY_REPLY(ChromeViewHostMsg_AllowDOMStorage,
46 OnAllowDOMStorage) 48 OnAllowDOMStorage)
47 IPC_MESSAGE_UNHANDLED(ADD_FAILURE()) 49 IPC_MESSAGE_UNHANDLED(ADD_FAILURE())
48 IPC_END_MESSAGE_MAP() 50 IPC_END_MESSAGE_MAP()
49 51
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 ContentSettingsPattern::FromString(mock_observer.image_origin_), 246 ContentSettingsPattern::FromString(mock_observer.image_origin_),
245 CONTENT_SETTING_BLOCK, 247 CONTENT_SETTING_BLOCK,
246 std::string(), 248 std::string(),
247 false)); 249 false));
248 EXPECT_CALL(mock_observer, 250 EXPECT_CALL(mock_observer,
249 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES)); 251 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES));
250 EXPECT_FALSE(observer->allowImage(true, mock_observer.image_url_)); 252 EXPECT_FALSE(observer->allowImage(true, mock_observer.image_url_));
251 ::testing::Mock::VerifyAndClearExpectations(&observer); 253 ::testing::Mock::VerifyAndClearExpectations(&observer);
252 } 254 }
253 255
256 TEST_F(ChromeRenderViewTest, MediaBlockedByDefault) {
257 MockContentSettingsObserver mock_observer(view_->GetMainRenderFrame());
258
259 // Load some HTML.
260 LoadHTML("<html>Foo</html>");
261
262 // Set the default media blocking setting.
263 RendererContentSettingRules content_setting_rules;
264 ContentSettingsForOneType& media_setting_rules =
265 content_setting_rules.media_rules;
266 media_setting_rules.push_back(
267 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
268 ContentSettingsPattern::Wildcard(),
269 CONTENT_SETTING_BLOCK,
270 std::string(),
271 false));
272
273 ContentSettingsObserver* observer =
274 ContentSettingsObserver::Get(view_->GetMainRenderFrame());
275 observer->SetContentSettingRules(&content_setting_rules);
276 EXPECT_CALL(mock_observer,
277 OnContentBlocked(CONTENT_SETTINGS_TYPE_MEDIA));
278 EXPECT_FALSE(observer->allowMedia(mock_observer.media_url_));
279 ::testing::Mock::VerifyAndClearExpectations(&observer);
280
281 // Create an exception which allows the video.
282 media_setting_rules.insert(
283 media_setting_rules.begin(),
284 ContentSettingPatternSource(
285 ContentSettingsPattern::Wildcard(),
286 ContentSettingsPattern::FromString(mock_observer.media_origin_),
287 CONTENT_SETTING_ALLOW,
288 std::string(),
289 false));
290
291 EXPECT_CALL(
292 mock_observer,
293 OnContentBlocked(CONTENT_SETTINGS_TYPE_MEDIA)).Times(0);
294 EXPECT_TRUE(observer->allowMedia(mock_observer.media_url_));
295 ::testing::Mock::VerifyAndClearExpectations(&observer);
296 }
297
298 TEST_F(ChromeRenderViewTest, MediaAllowedByDefault) {
299 MockContentSettingsObserver mock_observer(view_->GetMainRenderFrame());
300
301 // Load some HTML.
302 LoadHTML("<html>Foo</html>");
303
304 // Set the default media blocking setting.
305 RendererContentSettingRules content_setting_rules;
306 ContentSettingsForOneType& media_setting_rules =
307 content_setting_rules.media_rules;
308 media_setting_rules.push_back(
309 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
310 ContentSettingsPattern::Wildcard(),
311 CONTENT_SETTING_ALLOW,
312 std::string(),
313 false));
314
315 ContentSettingsObserver* observer =
316 ContentSettingsObserver::Get(view_->GetMainRenderFrame());
317 observer->SetContentSettingRules(&content_setting_rules);
318 EXPECT_CALL(
319 mock_observer,
320 OnContentBlocked(CONTENT_SETTINGS_TYPE_MEDIA)).Times(0);
321 EXPECT_TRUE(observer->allowMedia(mock_observer.media_url_));
322 ::testing::Mock::VerifyAndClearExpectations(&observer);
323
324 // Create an exception which blocks the video.
325 media_setting_rules.insert(
326 media_setting_rules.begin(),
327 ContentSettingPatternSource(
328 ContentSettingsPattern::Wildcard(),
329 ContentSettingsPattern::FromString(mock_observer.media_origin_),
330 CONTENT_SETTING_BLOCK,
331 std::string(),
332 false));
333 EXPECT_CALL(mock_observer,
334 OnContentBlocked(CONTENT_SETTINGS_TYPE_MEDIA));
335 EXPECT_FALSE(observer->allowMedia(mock_observer.media_url_));
336 ::testing::Mock::VerifyAndClearExpectations(&observer);
337 }
338
339
254 TEST_F(ChromeRenderViewTest, ContentSettingsBlockScripts) { 340 TEST_F(ChromeRenderViewTest, ContentSettingsBlockScripts) {
255 // Set the content settings for scripts. 341 // Set the content settings for scripts.
256 RendererContentSettingRules content_setting_rules; 342 RendererContentSettingRules content_setting_rules;
257 ContentSettingsForOneType& script_setting_rules = 343 ContentSettingsForOneType& script_setting_rules =
258 content_setting_rules.script_rules; 344 content_setting_rules.script_rules;
259 script_setting_rules.push_back( 345 script_setting_rules.push_back(
260 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), 346 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
261 ContentSettingsPattern::Wildcard(), 347 ContentSettingsPattern::Wildcard(),
262 CONTENT_SETTING_BLOCK, 348 CONTENT_SETTING_BLOCK,
263 std::string(), 349 std::string(),
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
338 // Block images. 424 // Block images.
339 ContentSettingsForOneType& image_setting_rules = 425 ContentSettingsForOneType& image_setting_rules =
340 content_setting_rules.image_rules; 426 content_setting_rules.image_rules;
341 image_setting_rules.push_back( 427 image_setting_rules.push_back(
342 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(), 428 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
343 ContentSettingsPattern::Wildcard(), 429 ContentSettingsPattern::Wildcard(),
344 CONTENT_SETTING_BLOCK, 430 CONTENT_SETTING_BLOCK,
345 std::string(), 431 std::string(),
346 false)); 432 false));
347 433
434 // Block media.
435 ContentSettingsForOneType& media_setting_rules =
436 content_setting_rules.media_rules;
437 media_setting_rules.push_back(
438 ContentSettingPatternSource(ContentSettingsPattern::Wildcard(),
439 ContentSettingsPattern::Wildcard(),
440 CONTENT_SETTING_BLOCK,
441 std::string(),
442 false));
443
348 ContentSettingsObserver* observer = 444 ContentSettingsObserver* observer =
349 ContentSettingsObserver::Get(view_->GetMainRenderFrame()); 445 ContentSettingsObserver::Get(view_->GetMainRenderFrame());
350 observer->SetContentSettingRules(&content_setting_rules); 446 observer->SetContentSettingRules(&content_setting_rules);
351 observer->OnSetAsInterstitial(); 447 observer->OnSetAsInterstitial();
352 448
353 // Load a page which contains a script. 449 // Load a page which contains a script.
354 std::string html = "<html>" 450 std::string html = "<html>"
355 "<head>" 451 "<head>"
356 "<script src='data:foo'></script>" 452 "<script src='data:foo'></script>"
357 "</head>" 453 "</head>"
358 "<body>" 454 "<body>"
359 "</body>" 455 "</body>"
360 "</html>"; 456 "</html>";
361 LoadHTML(html.c_str()); 457 LoadHTML(html.c_str());
362 458
363 // Verify that the script was allowed. 459 // Verify that the script was allowed.
364 bool was_blocked = false; 460 bool was_blocked = false;
365 for (size_t i = 0; i < render_thread_->sink().message_count(); ++i) { 461 for (size_t i = 0; i < render_thread_->sink().message_count(); ++i) {
366 const IPC::Message* msg = render_thread_->sink().GetMessageAt(i); 462 const IPC::Message* msg = render_thread_->sink().GetMessageAt(i);
367 if (msg->type() == ChromeViewHostMsg_ContentBlocked::ID) 463 if (msg->type() == ChromeViewHostMsg_ContentBlocked::ID)
368 was_blocked = true; 464 was_blocked = true;
369 } 465 }
370 EXPECT_FALSE(was_blocked); 466 EXPECT_FALSE(was_blocked);
371 467
372 // Verify that images are allowed. 468 // Verify that images and media are allowed.
373 EXPECT_CALL( 469 EXPECT_CALL(
374 mock_observer, 470 mock_observer,
375 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES)).Times(0); 471 OnContentBlocked(CONTENT_SETTINGS_TYPE_IMAGES)).Times(0);
472 EXPECT_CALL(
473 mock_observer,
474 OnContentBlocked(CONTENT_SETTINGS_TYPE_MEDIA)).Times(0);
376 EXPECT_TRUE(observer->allowImage(true, mock_observer.image_url_)); 475 EXPECT_TRUE(observer->allowImage(true, mock_observer.image_url_));
476 EXPECT_TRUE(observer->allowMedia(mock_observer.media_url_));
477
478
377 ::testing::Mock::VerifyAndClearExpectations(&observer); 479 ::testing::Mock::VerifyAndClearExpectations(&observer);
378 } 480 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698