diff options
author | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-27 15:44:52 +0000 |
---|---|---|
committer | bauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-27 15:44:52 +0000 |
commit | 4dad4a8367a040019074ed97d7307487b2832c8c (patch) | |
tree | fb29e32f8ce80251543f1eafcd712f6a105b3b91 /chrome/renderer/content_settings_observer_browsertest.cc | |
parent | 79e75fa9e0b140636bbaafdc36a8fcab4a0cf3df (diff) | |
download | chromium_src-4dad4a8367a040019074ed97d7307487b2832c8c.zip chromium_src-4dad4a8367a040019074ed97d7307487b2832c8c.tar.gz chromium_src-4dad4a8367a040019074ed97d7307487b2832c8c.tar.bz2 |
Correctly notify the browser about blocked plug-ins.
BUG=59352
TEST=see bug for manual test
Review URL: http://codereview.chromium.org/3777006
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83160 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/content_settings_observer_browsertest.cc')
-rw-r--r-- | chrome/renderer/content_settings_observer_browsertest.cc | 64 |
1 files changed, 58 insertions, 6 deletions
diff --git a/chrome/renderer/content_settings_observer_browsertest.cc b/chrome/renderer/content_settings_observer_browsertest.cc index c65592d..920f50c 100644 --- a/chrome/renderer/content_settings_observer_browsertest.cc +++ b/chrome/renderer/content_settings_observer_browsertest.cc @@ -7,18 +7,70 @@ #include "chrome/renderer/content_settings_observer.h" #include "chrome/test/render_view_test.h" #include "content/common/view_messages.h" +#include "ipc/ipc_message_macros.h" +#include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" +namespace { + +class MockContentSettingsObserver : public ContentSettingsObserver { + public: + explicit MockContentSettingsObserver(RenderView* render_view); + + virtual bool Send(IPC::Message* message); + + MOCK_METHOD2(OnContentBlocked, + void(ContentSettingsType, const std::string&)); +}; + +MockContentSettingsObserver::MockContentSettingsObserver( + RenderView* render_view) + : ContentSettingsObserver(render_view) { +} + +bool MockContentSettingsObserver::Send(IPC::Message* message) { + IPC_BEGIN_MESSAGE_MAP(MockContentSettingsObserver, *message) + IPC_MESSAGE_HANDLER(ViewHostMsg_ContentBlocked, OnContentBlocked) + IPC_MESSAGE_UNHANDLED(ADD_FAILURE()) + IPC_END_MESSAGE_MAP() + + // Our super class deletes the message. + return RenderViewObserver::Send(message); +} + +} // namespace + +TEST_F(RenderViewTest, DidBlockContentType) { + MockContentSettingsObserver observer(view_); + EXPECT_CALL(observer, + OnContentBlocked(CONTENT_SETTINGS_TYPE_COOKIES, std::string())); + observer.DidBlockContentType(CONTENT_SETTINGS_TYPE_COOKIES, std::string()); + + // Blocking the same content type a second time shouldn't send a notification. + observer.DidBlockContentType(CONTENT_SETTINGS_TYPE_COOKIES, std::string()); + ::testing::Mock::VerifyAndClearExpectations(&observer); + + // Blocking two different plugins should send two notifications. + std::string kFooPlugin = "foo"; + std::string kBarPlugin = "bar"; + EXPECT_CALL(observer, + OnContentBlocked(CONTENT_SETTINGS_TYPE_PLUGINS, kFooPlugin)); + EXPECT_CALL(observer, + OnContentBlocked(CONTENT_SETTINGS_TYPE_PLUGINS, kBarPlugin)); + observer.DidBlockContentType(CONTENT_SETTINGS_TYPE_PLUGINS, kFooPlugin); + observer.DidBlockContentType(CONTENT_SETTINGS_TYPE_PLUGINS, kBarPlugin); +} + // Regression test for http://crbug.com/35011 TEST_F(RenderViewTest, JSBlockSentAfterPageLoad) { // 1. Load page with JS. std::string html = "<html>" - "<head>" - "<script>document.createElement('div');</script>" - "</head>" - "<body>" - "</body>" - "</html>"; + "<head>" + "<script>document.createElement('div');</script>" + "</head>" + "<body>" + "</body>" + "</html>"; render_thread_.sink().ClearMessages(); LoadHTML(html.c_str()); |