Title: [111956] releases/WebKitGTK/webkit-1.8

Diff

Modified: releases/WebKitGTK/webkit-1.8/LayoutTests/ChangeLog (111955 => 111956)


--- releases/WebKitGTK/webkit-1.8/LayoutTests/ChangeLog	2012-03-24 01:07:10 UTC (rev 111955)
+++ releases/WebKitGTK/webkit-1.8/LayoutTests/ChangeLog	2012-03-24 01:08:17 UTC (rev 111956)
@@ -1,3 +1,15 @@
+2012-03-23  Andy Estes  <[email protected]>
+
+        REGRESSION (r105396): Dragging an iWork document into icloud.com opens it in the Mac app instead of uploading it to icloud.com
+        https://bugs.webkit.org/show_bug.cgi?id=79443
+
+        Reviewed by Ryosuke Niwa.
+
+        * fast/events/file-input-hidden-in-ondrop-expected.txt: Added.
+        * fast/events/file-input-hidden-in-ondrop.html: Added.
+        * platform/wk2/Skipped: WebKitTestRunner doesn't support
+        EventSender.beginDragWithFiles().
+
 2012-03-23  Dan Bernstein  <[email protected]>
 
         <rdar://problem/10923294> REGRESSION (r100847): Entries are clipped out in Day One

Added: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/events/file-input-hidden-in-ondrop-expected.txt (0 => 111956)


--- releases/WebKitGTK/webkit-1.8/LayoutTests/fast/events/file-input-hidden-in-ondrop-expected.txt	                        (rev 0)
+++ releases/WebKitGTK/webkit-1.8/LayoutTests/fast/events/file-input-hidden-in-ondrop-expected.txt	2012-03-24 01:08:17 UTC (rev 111956)
@@ -0,0 +1,2 @@
+PASS dropTarget.value is "C:\\fakepath\\abe.png"
+
Property changes on: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/events/file-input-hidden-in-ondrop-expected.txt
___________________________________________________________________

Added: svn:eol-style

Added: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/events/file-input-hidden-in-ondrop.html (0 => 111956)


--- releases/WebKitGTK/webkit-1.8/LayoutTests/fast/events/file-input-hidden-in-ondrop.html	                        (rev 0)
+++ releases/WebKitGTK/webkit-1.8/LayoutTests/fast/events/file-input-hidden-in-ondrop.html	2012-03-24 01:08:17 UTC (rev 111956)
@@ -0,0 +1,38 @@
+<!DOCTYPE html>
+<html>
+<head>
+    <script src=""
+    <script>
+        if (window.layoutTestController) {
+            layoutTestController.dumpAsText();
+            layoutTestController.waitUntilDone();
+        }
+        
+        var dropTarget;
+        
+        function test()
+        {
+            dropTarget = document.getElementById("drop-target");
+            dropTarget.addEventListener("drop", function() {
+                dropTarget.style.display = "none";
+                setTimeout(function() {
+                    shouldBeEqualToString("dropTarget.value", "C:\\fakepath\\abe.png");
+                    if (window.layoutTestController)
+                        layoutTestController.notifyDone();
+                }, 0);
+            }, false);
+            
+            if (window.eventSender) {
+                eventSender.beginDragWithFiles(["resources/abe.png"]);
+                var x = dropTarget.offsetLeft + dropTarget.offsetWidth / 2;
+                var y = dropTarget.offsetTop + dropTarget.offsetHeight / 2;
+                eventSender.mouseMoveTo(x, y);
+                eventSender.mouseUp();
+            }
+        }
+    </script>
+</head>
+<body _onload_="test()">
+    <input type="file" id="drop-target">
+</body>
+</html>
\ No newline at end of file
Property changes on: releases/WebKitGTK/webkit-1.8/LayoutTests/fast/events/file-input-hidden-in-ondrop.html
___________________________________________________________________

Added: svn:eol-style

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/ChangeLog (111955 => 111956)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/ChangeLog	2012-03-24 01:07:10 UTC (rev 111955)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/ChangeLog	2012-03-24 01:08:17 UTC (rev 111956)
@@ -1,3 +1,32 @@
+2012-03-23  Andy Estes  <[email protected]>
+
+        REGRESSION (r105396): Dragging an iWork document into icloud.com opens it in the Mac app instead of uploading it to icloud.com
+        https://bugs.webkit.org/show_bug.cgi?id=79443
+
+        Reviewed by Ryosuke Niwa.
+
+        icloud.com registers a drop event handler that sets display:none on the
+        file input element receiving the drop. After dispatching the drop event,
+        DragController hit tests the position under the mouse to see if it is a
+        file input element in need of receiving files. Since the file input
+        element has lost its renderer, it cannot be found by hit testing, so
+        the dropped file is never attached to the file input element, no change
+        event fires, and no upload commences. We want these things to happen
+        even if the element is no longer visible.
+
+        Since we already keep track of the file input element under the mouse
+        via m_fileInputElementUnderMouse, this additional hit test is
+        unnecessary. Use m_fileInputElementUnderMouse in concludeEditDrag()
+        when dropping files.
+
+        Test: fast/events/file-input-hidden-in-ondrop.html
+
+        * page/DragController.cpp:
+        (WebCore::DragController::concludeEditDrag): Use
+        m_fileInputElementUnderMouse instead of the element returned by hit
+        testing. Assert that m_fileInputElementUnderMouse equals the hit tested
+        element unless m_fileInputElementUnderMouse doesn't have a renderer.
+
 2012-03-23  Mikkel Kruse Johnsen  <[email protected]>
 
         WebKitGtk+ fails to build on win32 against GTK3

Modified: releases/WebKitGTK/webkit-1.8/Source/WebCore/page/DragController.cpp (111955 => 111956)


--- releases/WebKitGTK/webkit-1.8/Source/WebCore/page/DragController.cpp	2012-03-24 01:07:10 UTC (rev 111955)
+++ releases/WebKitGTK/webkit-1.8/Source/WebCore/page/DragController.cpp	2012-03-24 01:08:17 UTC (rev 111956)
@@ -424,6 +424,7 @@
     ASSERT(dragData);
     ASSERT(!m_isHandlingDrag);
 
+    RefPtr<HTMLInputElement> fileInput = m_fileInputElementUnderMouse;
     if (m_fileInputElementUnderMouse) {
         m_fileInputElementUnderMouse->setCanReceiveDroppedFiles(false);
         m_fileInputElementUnderMouse = 0;
@@ -456,18 +457,13 @@
         return true;
     }
 
-    if (!m_page->dragController()->canProcessDrag(dragData)) {
-        m_page->dragCaretController()->clear();
-        return false;
-    }
-
-    if (HTMLInputElement* fileInput = asFileInput(element)) {
+    if (dragData->containsFiles() && fileInput) {
+        // fileInput should be the element we hit tested for, unless it was made
+        // display:none in a drop event handler.
+        ASSERT(fileInput == element || !fileInput->renderer());
         if (fileInput->disabled())
             return false;
 
-        if (!dragData->containsFiles())
-            return false;
-
         Vector<String> filenames;
         dragData->asFilenames(filenames);
         if (filenames.isEmpty())
@@ -477,6 +473,11 @@
         return true;
     }
 
+    if (!m_page->dragController()->canProcessDrag(dragData)) {
+        m_page->dragCaretController()->clear();
+        return false;
+    }
+
     VisibleSelection dragCaret = m_page->dragCaretController()->caretPosition();
     m_page->dragCaretController()->clear();
     RefPtr<Range> range = dragCaret.toNormalizedRange();
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to