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