| Index: third_party/WebKit/Source/web/tests/WebPluginContainerTest.cpp
|
| diff --git a/third_party/WebKit/Source/web/tests/WebPluginContainerTest.cpp b/third_party/WebKit/Source/web/tests/WebPluginContainerTest.cpp
|
| index 29aff42298915527e30d3d5a3dfe03607b0b85c1..4a8440ff47e6d0e4c930cc83ca1ada1b9d817f81 100644
|
| --- a/third_party/WebKit/Source/web/tests/WebPluginContainerTest.cpp
|
| +++ b/third_party/WebKit/Source/web/tests/WebPluginContainerTest.cpp
|
| @@ -72,6 +72,11 @@ public:
|
| Platform::current()->unitTestSupport()->unregisterAllMockedURLs();
|
| }
|
|
|
| + void calculateGeometry(WebPluginContainerImpl* pluginContainerImpl, IntRect& windowRect, IntRect& clipRect, IntRect& unobscuredRect, Vector<IntRect>& cutOutRects)
|
| + {
|
| + pluginContainerImpl->calculateGeometry(windowRect, clipRect, unobscuredRect, cutOutRects);
|
| + }
|
| +
|
| protected:
|
| std::string m_baseURL;
|
| };
|
| @@ -402,6 +407,46 @@ TEST_F(WebPluginContainerTest, IsRectTopmostTest)
|
| EXPECT_FALSE(pluginContainerImpl->isRectTopmost(rect));
|
| }
|
|
|
| +#define EXPECT_RECT_EQ(expected, actual) \
|
| + do { \
|
| + const IntRect& actualRect = actual; \
|
| + EXPECT_EQ(expected.x(), actualRect.x()); \
|
| + EXPECT_EQ(expected.y(), actualRect.y()); \
|
| + EXPECT_EQ(expected.width(), actualRect.width()); \
|
| + EXPECT_EQ(expected.height(), actualRect.height()); \
|
| + } while (false)
|
| +
|
| +TEST_F(WebPluginContainerTest, ClippedRectsForIframedElement)
|
| +{
|
| + URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("plugin_container.html"));
|
| + URLTestHelpers::registerMockedURLFromBaseURL(WebString::fromUTF8(m_baseURL.c_str()), WebString::fromUTF8("plugin_containing_page.html"));
|
| +
|
| + TestPluginWebFrameClient pluginWebFrameClient; // Must outlive webViewHelper.
|
| + FrameTestHelpers::WebViewHelper webViewHelper;
|
| + WebView* webView = webViewHelper.initializeAndLoad(m_baseURL + "plugin_containing_page.html", true, &pluginWebFrameClient);
|
| + ASSERT(webView);
|
| + webView->settings()->setPluginsEnabled(true);
|
| + webView->resize(WebSize(300, 300));
|
| + webView->updateAllLifecyclePhases();
|
| + runPendingTasks();
|
| +
|
| + WebElement pluginElement = webView->mainFrame()->firstChild()->document().getElementById("translated-plugin");
|
| + RefPtrWillBeRawPtr<WebPluginContainerImpl> pluginContainerImpl = toWebPluginContainerImpl(pluginElement.pluginContainer());
|
| +
|
| + ASSERT(pluginContainerImpl.get());
|
| + pluginContainerImpl->setFrameRect(IntRect(0, 0, 300, 300));
|
| +
|
| + IntRect windowRect, clipRect, unobscuredRect;
|
| + Vector<IntRect> cutOutRects;
|
| + calculateGeometry(pluginContainerImpl.get(), windowRect, clipRect, unobscuredRect, cutOutRects);
|
| + EXPECT_RECT_EQ(IntRect(10, 210, 300, 300), windowRect);
|
| + EXPECT_RECT_EQ(IntRect(0, 0, 240, 90), clipRect);
|
| + EXPECT_RECT_EQ(IntRect(0, 0, 240, 160), unobscuredRect);
|
| +
|
| + // Cause the plugin's frame to be detached.
|
| + webViewHelper.reset();
|
| +}
|
| +
|
| TEST_F(WebPluginContainerTest, TopmostAfterDetachTest)
|
| {
|
| static WebRect topmostRect(10, 10, 40, 40);
|
|
|