diff options
author | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-01 23:26:06 +0000 |
---|---|---|
committer | jochen@chromium.org <jochen@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-06-01 23:26:06 +0000 |
commit | 566fa0f2d549d5eb499aefbed9bbeb8d2a11adc2 (patch) | |
tree | f169be53d8bcf0f3d3107912de5fd3d2e875b1d4 /chrome/renderer/content_settings_observer_browsertest.cc | |
parent | eb7f6abf44e7c88fb9c4470b003d608fee70016f (diff) | |
download | chromium_src-566fa0f2d549d5eb499aefbed9bbeb8d2a11adc2.zip chromium_src-566fa0f2d549d5eb499aefbed9bbeb8d2a11adc2.tar.gz chromium_src-566fa0f2d549d5eb499aefbed9bbeb8d2a11adc2.tar.bz2 |
Cached response ContentSettingsObserver::AllowStorage
BUG=84554
TEST=RenderViewTest
Review URL: http://codereview.chromium.org/7106001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87544 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 | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/chrome/renderer/content_settings_observer_browsertest.cc b/chrome/renderer/content_settings_observer_browsertest.cc index 920f50c..391bc30 100644 --- a/chrome/renderer/content_settings_observer_browsertest.cc +++ b/chrome/renderer/content_settings_observer_browsertest.cc @@ -10,6 +10,10 @@ #include "ipc/ipc_message_macros.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" + +using testing::_; +using testing::DeleteArg; namespace { @@ -21,6 +25,9 @@ class MockContentSettingsObserver : public ContentSettingsObserver { MOCK_METHOD2(OnContentBlocked, void(ContentSettingsType, const std::string&)); + + MOCK_METHOD5(OnAllowDOMStorage, + void(int, const GURL&, const GURL&, bool, IPC::Message*)); }; MockContentSettingsObserver::MockContentSettingsObserver( @@ -31,6 +38,8 @@ MockContentSettingsObserver::MockContentSettingsObserver( bool MockContentSettingsObserver::Send(IPC::Message* message) { IPC_BEGIN_MESSAGE_MAP(MockContentSettingsObserver, *message) IPC_MESSAGE_HANDLER(ViewHostMsg_ContentBlocked, OnContentBlocked) + IPC_MESSAGE_HANDLER_DELAY_REPLY(ViewHostMsg_AllowDOMStorage, + OnAllowDOMStorage) IPC_MESSAGE_UNHANDLED(ADD_FAILURE()) IPC_END_MESSAGE_MAP() @@ -61,6 +70,23 @@ TEST_F(RenderViewTest, DidBlockContentType) { observer.DidBlockContentType(CONTENT_SETTINGS_TYPE_PLUGINS, kBarPlugin); } +// Tests that multiple invokations of AllowDOMStorage result in a single IPC. +TEST_F(RenderViewTest, AllowDOMStorage) { + // Load some HTML, so we have a valid security origin. + LoadHTML("<html></html>"); + MockContentSettingsObserver observer(view_); + ON_CALL(observer, + OnAllowDOMStorage(_, _, _, _, _)).WillByDefault(DeleteArg<4>()); + EXPECT_CALL(observer, + OnAllowDOMStorage(_, _, _, _, _)); + observer.AllowStorage(view_->webview()->focusedFrame(), true); + + // Accessing localStorage from the same origin again shouldn't result in a + // new IPC. + observer.AllowStorage(view_->webview()->focusedFrame(), true); + ::testing::Mock::VerifyAndClearExpectations(&observer); +} + // Regression test for http://crbug.com/35011 TEST_F(RenderViewTest, JSBlockSentAfterPageLoad) { // 1. Load page with JS. |