summaryrefslogtreecommitdiff
path: root/Source/WebKit/chromium/tests/WebPluginContainerTest.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-11-22 09:09:45 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-22 09:10:13 +0100
commit470286ecfe79d59df14944e5b5d34630fc739391 (patch)
tree43983212872e06cebefd2ae474418fa2908ca54c /Source/WebKit/chromium/tests/WebPluginContainerTest.cpp
parent23037105e948c2065da5a937d3a2396b0ff45c1e (diff)
downloadqtwebkit-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.cpp117
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();
+}
+
+}