summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/content_settings_observer_browsertest.cc
diff options
context:
space:
mode:
authorbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-27 15:44:52 +0000
committerbauerb@chromium.org <bauerb@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-27 15:44:52 +0000
commit4dad4a8367a040019074ed97d7307487b2832c8c (patch)
treefb29e32f8ce80251543f1eafcd712f6a105b3b91 /chrome/renderer/content_settings_observer_browsertest.cc
parent79e75fa9e0b140636bbaafdc36a8fcab4a0cf3df (diff)
downloadchromium_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.cc64
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());