diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-22 09:09:45 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@digia.com> | 2012-11-22 09:10:13 +0100 |
commit | 470286ecfe79d59df14944e5b5d34630fc739391 (patch) | |
tree | 43983212872e06cebefd2ae474418fa2908ca54c /Source/WebKit/chromium/tests/WebPluginContainerTest.cpp | |
parent | 23037105e948c2065da5a937d3a2396b0ff45c1e (diff) | |
download | qtwebkit-470286ecfe79d59df14944e5b5d34630fc739391.tar.gz |
Imported WebKit commit e89504fa9195b2063b2530961d4b73dd08de3242 (http://svn.webkit.org/repository/webkit/trunk@135485)
Change-Id: I03774e5ac79721c13ffa30d152537a74d0b12e66
Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Source/WebKit/chromium/tests/WebPluginContainerTest.cpp')
-rw-r--r-- | Source/WebKit/chromium/tests/WebPluginContainerTest.cpp | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/Source/WebKit/chromium/tests/WebPluginContainerTest.cpp b/Source/WebKit/chromium/tests/WebPluginContainerTest.cpp new file mode 100644 index 000000000..50089c9d4 --- /dev/null +++ b/Source/WebKit/chromium/tests/WebPluginContainerTest.cpp @@ -0,0 +1,117 @@ +/* + * Copyright (C) 2012 Google Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include "config.h" +#include "WebPluginContainer.h" + +#include "Element.h" +#include "FakeWebPlugin.h" +#include "FrameTestHelpers.h" +#include "URLTestHelpers.h" +#include "WebDocument.h" +#include "WebElement.h" +#include "WebFrame.h" +#include "WebFrameClient.h" +#include "WebFrameImpl.h" +#include "WebPluginContainerImpl.h" +#include "WebPluginParams.h" +#include "WebSettings.h" +#include "WebView.h" +#include "WebViewImpl.h" +#include <gtest/gtest.h> +#include <webkit/support/webkit_support.h> + +using namespace WebKit; + +namespace { + +class WebPluginContainerTest : public testing::Test { +public: + WebPluginContainerTest() + : m_baseURL("http://www.test.com/") + { + } + + virtual void TearDown() + { + webkit_support::UnregisterAllMockedURLs(); + } + +protected: + std::string m_baseURL; +}; + +class TestPluginWebFrameClient : public WebFrameClient { + virtual WebPlugin* createPlugin(WebFrame* frame, const WebPluginParams& params) OVERRIDE + { + if (params.mimeType == WebString::fromUTF8("application/x-webkit-test-webplugin")) + return new FakeWebPlugin(frame, params); + return WebFrameClient::createPlugin(frame, params); + } +}; + +WebPluginContainer* getWebPluginContainer(WebView* webView, const WebString& id) +{ + WebElement element = webView->mainFrame()->document().getElementById(id); + return element.pluginContainer(); +} + +TEST_F(WebPluginContainerTest, WindowToLocalPointTest) +{ + URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("plugin_container.html")); + WebView* webView = FrameTestHelpers::createWebViewAndLoad(m_baseURL + "plugin_container.html", true, new TestPluginWebFrameClient()); + ASSERT(webView); + webView->settings()->setPluginsEnabled(true); + webView->resize(WebSize(300, 300)); + webView->layout(); + webkit_support::RunAllPendingMessages(); + + WebPluginContainer* pluginContainerOne = getWebPluginContainer(webView, WebString::fromUTF8("translated-plugin")); + ASSERT(pluginContainerOne); + WebPoint point1 = pluginContainerOne->windowToLocalPoint(WebPoint(10, 10)); + ASSERT_EQ(0, point1.x); + ASSERT_EQ(0, point1.y); + WebPoint point2 = pluginContainerOne->windowToLocalPoint(WebPoint(100, 100)); + ASSERT_EQ(90, point2.x); + ASSERT_EQ(90, point2.y); + + WebPluginContainer* pluginContainerTwo = getWebPluginContainer(webView, WebString::fromUTF8("rotated-plugin")); + ASSERT(pluginContainerTwo); + WebPoint point3 = pluginContainerTwo->windowToLocalPoint(WebPoint(0, 10)); + ASSERT_EQ(10, point3.x); + ASSERT_EQ(0, point3.y); + WebPoint point4 = pluginContainerTwo->windowToLocalPoint(WebPoint(-10, 10)); + ASSERT_EQ(10, point4.x); + ASSERT_EQ(10, point4.y); + + webView->close(); +} + +} |