Index: Source/web/tests/WebFrameTest.cpp |
diff --git a/Source/web/tests/WebFrameTest.cpp b/Source/web/tests/WebFrameTest.cpp |
index aea50cc6e42b7ef5c439679e625a94f4f36614c0..ed11fc78f0b8e24011ba46f929469af072f9df80 100644 |
--- a/Source/web/tests/WebFrameTest.cpp |
+++ b/Source/web/tests/WebFrameTest.cpp |
@@ -57,6 +57,7 @@ |
#include "core/rendering/RenderView.h" |
#include "core/rendering/TextAutosizer.h" |
#include "core/rendering/compositing/RenderLayerCompositor.h" |
+#include "platform/DragImage.h" |
#include "platform/UserGestureIndicator.h" |
#include "platform/geometry/FloatRect.h" |
#include "platform/network/ResourceError.h" |
@@ -5395,4 +5396,42 @@ TEST_F(WebFrameTest, NotifyManifestChange) |
EXPECT_EQ(14, webFrameClient.manifestChangeCount()); |
} |
+TEST_F(WebFrameTest, DragDropTest) |
+{ |
+ UseMockScrollbarSettings mockScrollbarSettings; |
+ registerMockedHttpURLLoad("drag-drop.html"); |
+ |
+ FixedLayoutTestWebViewClient client; |
+ client.m_screenInfo.deviceScaleFactor = 1; |
+ int viewportWidth = 200; |
+ int viewportHeight = 200; |
+ |
+ FrameTestHelpers::WebViewHelper webViewHelper; |
+ webViewHelper.initializeAndLoad(m_baseURL + "drag-drop.html", true, 0, &client); |
+ // FIXME: This test breaks if the viewport is enabled before loading the page due to the paint |
+ // calls below not working on composited layers. For some reason, enabling the viewport here |
+ // doesn't cause compositing |
+ webViewHelper.webView()->settings()->setViewportEnabled(true); |
+ webViewHelper.webView()->resize(WebSize(viewportWidth, viewportHeight)); |
+ webViewHelper.webView()->layout(); |
+ |
+ SkBitmap bitmap; |
+ ASSERT_TRUE(bitmap.allocN32Pixels(80, 80)); |
+ SkCanvas canvas(bitmap); |
+ canvas.drawColor(SK_ColorGREEN); |
+ |
+ RefPtr<WebCore::LocalFrame> frame = webViewHelper.webViewImpl()->page()->mainFrame(); |
+ WebCore::Element* element = frame->document()->getElementById("drag"); |
+ OwnPtr<WebCore::DragImage> dragImage = frame->nodeImage(*element); |
+ EXPECT_TRUE(dragImage); |
+ EXPECT_EQ(80, dragImage->size().width()); |
+ EXPECT_EQ(80, dragImage->size().height()); |
+ const SkBitmap& dragBitmap = dragImage->bitmap(); |
+ ASSERT_EQ(bitmap.bytesPerPixel(), dragBitmap.bytesPerPixel()); |
+ SkAutoLockPixels lockPixel(dragBitmap); |
+ ASSERT_TRUE(bitmap.getPixels()); |
+ EXPECT_FALSE(dragBitmap.drawsNothing()); |
+ EXPECT_EQ(0, memcmp(bitmap.getPixels(), dragBitmap.getPixels(), bitmap.rowBytes() * 80)); |
+} |
+ |
} // namespace |