Reland "Send dropEffect attribute on drag and drop events"
This is a reland of commit 0542983115c4ccbaa2b1dd15faff2675d520bbeb
Reason for reland: This CL was erroneously assigned blame for flakiness
in some tests Drag and Drop browser tests in chromeos and linux. See
bug: https://crbug.com/442927728
Original change's description:
> Send dropEffect attribute on drag and drop events
>
> This CL implements the dropEffect attribute in the dataTransfer property
> in drag and drop event to match the spec.
> https://html.spec.whatwg.org/multipage/dnd.html
>
> The attribute is currently not being set, defaulting to "none" on all
> events.
>
> Many existing tests were updated to pass with the new implementation.
> Notably, the default dropEffect for some "effectAllowed" attributes has
> been changed to match the defaults in the table found in "6.11.4 The
> DragEvent interface" in the spec. (defaulting to copy whenever copy is
> available, and to link if link is available)
>
> Bug: 434151262
> Change-Id: Iaeaa7e0e4b9a44e89379b6adf72650ab89fe3dd3
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6803149
> Commit-Queue: Gaston Rodriguez <gastonr@microsoft.com>
> Reviewed-by: Avi Drissman <avi@chromium.org>
> Reviewed-by: Olga Gerchikov <gerchiko@microsoft.com>
> Reviewed-by: Kent Tamura <tkent@chromium.org>
> Cr-Commit-Position: refs/heads/main@{#1509844}
Bug: 434151262
Change-Id: Id77db2432864ce8ba8f27b7fd216fd21145791b0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6935426
Commit-Queue: Gaston Rodriguez <gastonr@microsoft.com>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Olga Gerchikov <gerchiko@microsoft.com>
Reviewed-by: Kent Tamura <tkent@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1513989}
diff --git a/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc b/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc
index d7e1418..504d750 100644
--- a/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc
+++ b/chrome/browser/ui/views/drag_and_drop_interactive_uitest.cc
@@ -1104,7 +1104,7 @@
// Setup test expectations.
DOMDragEventVerifier expected_dom_event_data;
expected_dom_event_data.set_expected_client_position("(155, 150)");
- expected_dom_event_data.set_expected_drop_effect("none");
+ expected_dom_event_data.set_expected_drop_effect("copy");
expected_dom_event_data.set_expected_effect_allowed("all");
expected_dom_event_data.set_expected_mime_types("text/plain");
expected_dom_event_data.set_expected_page_position("(155, 150)");
@@ -1703,6 +1703,7 @@
state->expected_dom_event_data.set_expected_client_position("(355, 150)");
state->expected_dom_event_data.set_expected_page_position("(355, 150)");
state->expected_dom_event_data.set_expected_file_names("");
+ state->expected_dom_event_data.set_expected_drop_effect("none");
state->expected_dom_event_data.set_expected_mime_types(
state->expect_image_accessible
? "Files,text/html,text/plain,text/uri-list"
@@ -1720,6 +1721,7 @@
// (these coordinates are relative to the right frame).
state->expected_dom_event_data.set_expected_client_position("(155, 150)");
state->expected_dom_event_data.set_expected_page_position("(155, 150)");
+ state->expected_dom_event_data.set_expected_drop_effect("copy");
EXPECT_TRUE(
dragenter_event_waiter.WaitForNextMatchingEvent(&dragenter_event));
@@ -1885,7 +1887,7 @@
// Setup test expectations.
DragAndDropBrowserTest::DragImageFromDisappearingFrame_TestState state;
- state.expected_dom_event_data.set_expected_drop_effect("none");
+ state.expected_dom_event_data.set_expected_drop_effect("copy");
// (dragstart event handler in image_source.html is asking for "copy" only).
state.expected_dom_event_data.set_expected_effect_allowed("copy");
state.expected_dom_event_data.set_expected_mime_types(
@@ -2262,7 +2264,7 @@
state.right_frame_events_counter =
std::make_unique<DOMDragEventCounter>(GetRightFrame(second_contents));
state.expected_dom_event_data.set_expected_client_position("(55, 50)");
- state.expected_dom_event_data.set_expected_drop_effect("none");
+ state.expected_dom_event_data.set_expected_drop_effect("copy");
// (dragstart event handler in image_source.html is asking for "copy" only).
state.expected_dom_event_data.set_expected_effect_allowed("copy");
state.expected_dom_event_data.set_expected_mime_types(
diff --git a/third_party/blink/renderer/core/clipboard/data_transfer.cc b/third_party/blink/renderer/core/clipboard/data_transfer.cc
index 455478c..f3d3ddb 100644
--- a/third_party/blink/renderer/core/clipboard/data_transfer.cc
+++ b/third_party/blink/renderer/core/clipboard/data_transfer.cc
@@ -60,6 +60,7 @@
#include "third_party/blink/renderer/platform/network/http_names.h"
#include "third_party/blink/renderer/platform/network/mime/mime_type_registry.h"
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
+#include "third_party/blink/renderer/platform/wtf/text/atomic_string.h"
#include "third_party/skia/include/core/SkSurface.h"
#include "ui/base/clipboard/clipboard_constants.h"
#include "ui/base/dragdrop/mojom/drag_drop_types.mojom-blink.h"
@@ -196,6 +197,27 @@
return std::nullopt;
}
+AtomicString ConvertEffectAllowedToDropEffect(
+ const AtomicString& effect_allowed) {
+ auto mask = ConvertEffectAllowedToDragOperationsMask(effect_allowed);
+ if (!mask.has_value()) {
+ return keywords::kNone;
+ }
+ // Defaults to copy if copy if present, then to link if link is present (this
+ // relevant in composite cases like copyMove). Defaults taken from the table
+ // in https://html.spec.whatwg.org/multipage/dnd.html#the-dragevent-interface
+ if ((mask.value() & kDragOperationCopy) || (mask == kDragOperationEvery)) {
+ return AtomicString("copy");
+ }
+ if (mask.value() & kDragOperationLink) {
+ return AtomicString("link");
+ }
+ if (mask.value() & kDragOperationMove) {
+ return AtomicString("move");
+ }
+ return keywords::kNone;
+}
+
AtomicString ConvertDragOperationsMaskToEffectAllowed(DragOperationsMask op) {
if (((op & kDragOperationMove) && (op & kDragOperationCopy) &&
(op & kDragOperationLink)) ||
@@ -596,9 +618,13 @@
effect_allowed_ = ConvertDragOperationsMaskToEffectAllowed(op);
}
+void DataTransfer::SetDestinationOperationFromEffectAllowed() {
+ setDropEffect(ConvertEffectAllowedToDropEffect(effect_allowed_));
+}
+
void DataTransfer::SetDestinationOperation(ui::mojom::blink::DragOperation op) {
- drop_effect_ = ConvertDragOperationsMaskToEffectAllowed(
- static_cast<DragOperationsMask>(op));
+ setDropEffect(ConvertDragOperationsMaskToEffectAllowed(
+ static_cast<DragOperationsMask>(op)));
}
DataTransferItemList* DataTransfer::items() {
diff --git a/third_party/blink/renderer/core/clipboard/data_transfer.h b/third_party/blink/renderer/core/clipboard/data_transfer.h
index 315f9ca..ef5f6045 100644
--- a/third_party/blink/renderer/core/clipboard/data_transfer.h
+++ b/third_party/blink/renderer/core/clipboard/data_transfer.h
@@ -132,6 +132,7 @@
DragOperationsMask SourceOperation() const;
ui::mojom::blink::DragOperation DestinationOperation() const;
void SetSourceOperation(DragOperationsMask);
+ void SetDestinationOperationFromEffectAllowed();
void SetDestinationOperation(ui::mojom::blink::DragOperation);
DataTransferItemList* items();
diff --git a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
index fd838577..88d13a2 100644
--- a/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
+++ b/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc
@@ -631,7 +631,7 @@
DragData drag_data(current_drag_data_.Get(),
ViewportToRootFrame(point_in_viewport), screen_point,
operations_allowed_, web_drag_data.ForceDefaultAction());
- GetPage()->GetDragController().PerformDrag(
+ GetPage()->GetDragController().PerformDrop(
&drag_data, *local_root_->GetFrame(), drag_operation_);
// Drops that initiated in the browser get reported via `DragSourceEndedAt`.
if (!GetPage()->GetDragController().did_initiate_drag()) {
diff --git a/third_party/blink/renderer/core/input/mouse_event_manager.cc b/third_party/blink/renderer/core/input/mouse_event_manager.cc
index 64c3818..4474b49 100644
--- a/third_party/blink/renderer/core/input/mouse_event_manager.cc
+++ b/third_party/blink/renderer/core/input/mouse_event_manager.cc
@@ -1043,6 +1043,15 @@
initializer->setRelatedTarget(related_target);
initializer->setView(frame_->GetDocument()->domWindow());
initializer->setComposed(true);
+ if (RuntimeEnabledFeatures::PreserveDropEffectEnabled()) {
+ if (event_type == event_type_names::kDragenter ||
+ event_type == event_type_names::kDragover) {
+ data_transfer->SetDestinationOperationFromEffectAllowed();
+ } else if (event_type == event_type_names::kDragleave) {
+ data_transfer->SetDestinationOperation(
+ ui::mojom::blink::DragOperation::kNone);
+ }
+ }
initializer->setGetDataTransfer(data_transfer);
initializer->setSourceCapabilities(
frame_->GetDocument()->domWindow()
diff --git a/third_party/blink/renderer/core/page/drag_controller.cc b/third_party/blink/renderer/core/page/drag_controller.cc
index 3851de4..39cc534 100644
--- a/third_party/blink/renderer/core/page/drag_controller.cc
+++ b/third_party/blink/renderer/core/page/drag_controller.cc
@@ -251,7 +251,7 @@
file_input_element_under_mouse_ = nullptr;
}
-void DragController::PerformDrag(DragData* drag_data,
+void DragController::PerformDrop(DragData* drag_data,
LocalFrame& local_root,
const Operation& browser_drag_operation) {
DCHECK(drag_data);
diff --git a/third_party/blink/renderer/core/page/drag_controller.h b/third_party/blink/renderer/core/page/drag_controller.h
index b86e2e8f..494e1780 100644
--- a/third_party/blink/renderer/core/page/drag_controller.h
+++ b/third_party/blink/renderer/core/page/drag_controller.h
@@ -84,7 +84,7 @@
Operation DragEnteredOrUpdated(DragData*, LocalFrame& local_root);
void DragExited(DragData*, LocalFrame& local_root);
- void PerformDrag(DragData*,
+ void PerformDrop(DragData*,
LocalFrame& local_root,
const Operation& browser_drag_operation);
diff --git a/third_party/blink/renderer/core/page/drag_controller_test.cc b/third_party/blink/renderer/core/page/drag_controller_test.cc
index 138bfe4..b653cef5 100644
--- a/third_party/blink/renderer/core/page/drag_controller_test.cc
+++ b/third_party/blink/renderer/core/page/drag_controller_test.cc
@@ -84,7 +84,7 @@
static_cast<DragOperationsMask>(kDragOperationMove), false);
GetFrame().GetPage()->GetDragController().DragEnteredOrUpdated(&data,
GetFrame());
- GetFrame().GetPage()->GetDragController().PerformDrag(
+ GetFrame().GetPage()->GetDragController().PerformDrop(
&data, GetFrame(), DragController::Operation());
}
@@ -194,7 +194,7 @@
->GetFrameView()
->SetLifecycleUpdatesThrottledForTesting();
- WebView().GetPage()->GetDragController().PerformDrag(
+ WebView().GetPage()->GetDragController().PerformDrop(
&data, *GetDocument().GetFrame(), DragController::Operation());
// Test passes if we don't crash.
diff --git a/third_party/blink/web_tests/external/wpt/html/editing/dnd/drop/001.xhtml b/third_party/blink/web_tests/external/wpt/html/editing/dnd/drop/001.xhtml
index c34aef9..32dd0f7 100644
--- a/third_party/blink/web_tests/external/wpt/html/editing/dnd/drop/001.xhtml
+++ b/third_party/blink/web_tests/external/wpt/html/editing/dnd/drop/001.xhtml
@@ -1,38 +1,78 @@
<?xml version="1.0" encoding="utf-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script src="/resources/testdriver.js"></script>
+<script src="/resources/testdriver-vendor.js"></script>
+<script src="/resources/testdriver-actions.js"></script>
+<script src="../resources/test-helper.js"></script>
<head>
-<title>Selection drag and drop: allowed effects 'copy','move','link'</title>
-<style type="text/css">
-div
- {display:inline-block;
- vertical-align:top;
- background-color:olive;
- color:white;
- padding:20px;
- width:100px;
- height:100px;}
-div:nth-child(2)
- {background-color:green;}
-div:nth-child(3)
- {background-color:teal;}
-</style>
-<script type="application/ecmascript">
-var effects = ['copy','move','link'], i = 0;
-function selectText()
- {window.getSelection().selectAllChildren(document.querySelector('p'))}
-function dropSelection(event)
- {event.target.appendChild(document.createTextNode((event.dataTransfer.dropEffect == effects[i] && event.dataTransfer.effectAllowed == effects[i])?' PASS ':' FAIL '));
- i = (i + 1)%3;
- selectText();}
-function start(event)
- {event.dataTransfer.effectAllowed = effects[i]}
-</script>
+ <title>dropEffect is correctly set when it matches effectAllowed</title>
+ <style type="text/css">
+ div {
+ display: inline-block;
+ vertical-align: top;
+ background-color: olive;
+ color: white;
+ padding: 20px;
+ width: 100px;
+ height: 100px;
+ }
+
+ div:nth-child(2) {
+ background-color: green;
+ }
+
+ div:nth-child(3) {
+ background-color: teal;
+ }
+
+ </style>
</head>
-<body onload="selectText()">
-<p ondragstart="start(event)">Drag me</p>
-<div ondragenter="event.preventDefault()" ondragover="return false" ondrop="dropSelection(event)"/>
-<div ondragenter="event.preventDefault()" ondragover="return false" ondrop="dropSelection(event)"/>
-<div ondragenter="event.preventDefault()" ondragover="return false" ondrop="dropSelection(event)"/>
-<p>You should be able to drag selection and drop it onto any of the green boxes.</p>
+<body>
+ <p>
+ Drag these boxes. Each box has a different effectAllowed.
+ </p>
+ <p>
+ <div id="copy-drag" draggable="true"
+ ondragstart="event.dataTransfer.effectAllowed = 'copy'">copy</div>
+ <div id="move-drag" draggable="true"
+ ondragstart="event.dataTransfer.effectAllowed = 'move'">move</div>
+ <div id="link-drag" draggable="true"
+ ondragstart="event.dataTransfer.effectAllowed = 'link'">link</div>
+ </p>
+ <p>
+ Drop on these boxes. Each box has a different dropEffect.
+ </p>
+ <p>
+ <div id="copy-drop" ondragover="onDragOver(event, 'copy')">copy</div>
+ <div id="move-drop" ondragover="onDragOver(event, 'move')">move</div>
+ <div id="link-drop" ondragover="onDragOver(event, 'link')">link</div>
+ </p>
</body>
+<script>
+ function onDragOver(event, effectAllowed) {
+ event.preventDefault();
+ event.dataTransfer.dropEffect = effectAllowed;
+ }
+
+ async function test() {
+ await new Promise(loaded => window.addEventListener("load", loaded));
+
+ function onDropCallBack(event) {
+ assert_equals(event.target.textContent, event.dataTransfer.dropEffect);
+ assert_equals(event.target.textContent, event.dataTransfer
+ .effectAllowed);
+ return true;
+ }
+ for (const effect of ['copy', 'move', 'link']) {
+ const dragDiv = document.getElementById(effect + '-drag');
+ const dropDiv = document.getElementById(effect + '-drop');
+ dragDropTest(
+ dragDiv, dropDiv, onDropCallBack,
+ 'dropEffect should match effectAllowed on drop for ' + effect);
+ }
+ }
+ test();
+</script>
</html>
diff --git a/third_party/blink/web_tests/fast/dnd/dropEffect-for-effectAllowed.html b/third_party/blink/web_tests/fast/dnd/dropEffect-for-effectAllowed.html
index 0f4ac84..fcaebca 100644
--- a/third_party/blink/web_tests/fast/dnd/dropEffect-for-effectAllowed.html
+++ b/third_party/blink/web_tests/fast/dnd/dropEffect-for-effectAllowed.html
@@ -85,9 +85,9 @@
{ allowed: 'uninitialized', drop: 'dummy', operation: 'copy' },
{ allowed: 'copy', drop: 'dummy', operation: 'copy' },
{ allowed: 'copyLink', drop: 'dummy', operation: 'copy' },
- { allowed: 'copyMove', drop: 'dummy', operation: 'move' },
+ { allowed: 'copyMove', drop: 'dummy', operation: 'copy' },
{ allowed: 'link', drop: 'dummy', operation: 'link' },
- { allowed: 'linkMove', drop: 'dummy', operation: 'move' },
+ { allowed: 'linkMove', drop: 'dummy', operation: 'link' },
{ allowed: 'move', drop: 'dummy', operation: 'move' },
{ allowed: 'all', drop: 'dummy', operation: 'copy' },
{ allowed: 'none', drop: 'dummy' },
diff --git a/third_party/blink/web_tests/fast/events/bogus-dropEffect-effectAllowed-expected.txt b/third_party/blink/web_tests/fast/events/bogus-dropEffect-effectAllowed-expected.txt
index 8b94492..945dfbf8 100644
--- a/third_party/blink/web_tests/fast/events/bogus-dropEffect-effectAllowed-expected.txt
+++ b/third_party/blink/web_tests/fast/events/bogus-dropEffect-effectAllowed-expected.txt
@@ -25,7 +25,7 @@
PASS event.dataTransfer.effectAllowed is "uninitialized"
PASS event.dataTransfer.effectAllowed is "uninitialized"
PASS event.dataTransfer.effectAllowed is "uninitialized"
-PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is "copy"
PASS event.dataTransfer.dropEffect is "copy"
PASS event.dataTransfer.dropEffect is "copy"
PASS event.dataTransfer.dropEffect is "copy"
@@ -44,7 +44,7 @@
PASS event.dataTransfer.dropEffect is "none"
PASS event.dataTransfer.dropEffect is "none"
PASS event.dataTransfer.dropEffect is "none"
-PASS event.dataTransfer.dropEffect is "none"
+PASS event.dataTransfer.dropEffect is "copy"
PASS event.dataTransfer.dropEffect is "copy"
PASS event.dataTransfer.dropEffect is "copy"
PASS event.dataTransfer.dropEffect is "copy"
diff --git a/third_party/blink/web_tests/fast/events/drag-and-drop-expected.txt b/third_party/blink/web_tests/fast/events/drag-and-drop-expected.txt
index 925ba7d..23c9ed18 100644
--- a/third_party/blink/web_tests/fast/events/drag-and-drop-expected.txt
+++ b/third_party/blink/web_tests/fast/events/drag-and-drop-expected.txt
@@ -75,7 +75,7 @@
PASS event.dataTransfer.dropEffect is "copy"
PASS event.dataTransfer.dropEffect is "move"
PASS event.dataTransfer.dropEffect is "none"
-PASS event.dataTransfer.dropEffect is "move"
+PASS event.dataTransfer.dropEffect is "copy"
When effectAllowed == "copyLink"
@@ -91,7 +91,7 @@
PASS event.dataTransfer.dropEffect is "none"
PASS event.dataTransfer.dropEffect is "move"
PASS event.dataTransfer.dropEffect is "link"
-PASS event.dataTransfer.dropEffect is "move"
+PASS event.dataTransfer.dropEffect is "link"
When effectAllowed == "dummy"
diff --git a/third_party/blink/web_tests/fast/events/drag-and-drop.html b/third_party/blink/web_tests/fast/events/drag-and-drop.html
index baf0ca2..54f403a 100644
--- a/third_party/blink/web_tests/fast/events/drag-and-drop.html
+++ b/third_party/blink/web_tests/fast/events/drag-and-drop.html
@@ -13,7 +13,7 @@
var dropEffectElem;
var consoleElm;
var event;
-
+
window.onload = function()
{
dragMe = document.getElementById("dragMe");
@@ -21,20 +21,20 @@
effectAllowedElem = document.getElementById("effectAllowed");
dropEffectElem = document.getElementById("dropEffect");
consoleElm = document.getElementById("console");
-
+
if (!dragMe || !dropTarget || !effectAllowedElem || !dropEffectElem || !consoleElm)
return;
-
+
dragMe.ondragstart = dragStart;
dragMe.ondragend = dragEnd;
-
+
dropTarget.ondragenter = dragEntered;
dropTarget.ondragover = dragOver;
dropTarget.ondrop = drop;
-
+
runTest();
}
-
+
function dragStart(e)
{
event = e;
@@ -43,35 +43,35 @@
e.dataTransfer.setData('Text', e.target.textContent);
}
-
+
function dragEnd(e)
{
checkDragState(e);
return;
}
-
+
function dragEntered(e)
{
dragEnteredAndUpdated(e);
}
-
+
function dragOver(e)
{
dragEnteredAndUpdated(e);
}
-
+
function dragEnteredAndUpdated(e)
{
event = e;
e.dataTransfer.dropEffect = dropEffectElem.options[dropEffectElem.selectedIndex].value;
cancelDrag(e);
}
-
+
function drop(e)
{
cancelDrag(e);
}
-
+
function cancelDrag(e)
{
if (e.preventDefault)
@@ -81,28 +81,28 @@
e.returnValue = false;
}
}
-
+
function checkDragState(e)
{
event = e;
var chosenDropEffect = dropEffectElem.options[dropEffectElem.selectedIndex].value;
var chosenEffectAllowed = effectAllowedElem.options[effectAllowedElem.selectedIndex].value;
var actualDropEffect = e.dataTransfer.dropEffect;
-
+
if (chosenEffectAllowed === "undefined") {
// If no effectAllowed is set, we should default to uninitialized. Make sure that's the case.
shouldBeEqualToString("event.dataTransfer.effectAllowed", "uninitialized");
-
+
// Then set the chosenEffectAllowed so isDropEffectAllowed matches the HTML5 spec, and
// doesn't need special cases for undefined.
chosenEffectAllowed = "uninitialized";
}
-
+
if (chosenEffectAllowed === "dummy") {
// If a bad effectAllowed is attempted to be set, it should never be set, and the
// effectAllowed should be uninitialized.
shouldBeEqualToString("event.dataTransfer.effectAllowed", "uninitialized");
-
+
// Then set the chosenEffectAllowed so isDropEffectAllowed matches the HTML5 spec, and
// doesn't need special cases for undefined.
chosenEffectAllowed = "uninitialized";
@@ -112,13 +112,15 @@
switch (chosenEffectAllowed) {
case "undefined":
case "copyLink":
+ case "copyMove":
case "uninitialized":
case "all":
expected = "copy";
break;
- case "copyMove":
- case "move":
case "linkMove":
+ expected = "link";
+ break;
+ case "move":
expected = "move";
break;
default:
@@ -129,9 +131,9 @@
shouldBeEqualToString('event.dataTransfer.dropEffect', expected);
else
shouldBeEqualToString('event.dataTransfer.dropEffect', 'none');
-
+
}
-
+
function isDropEffectAllowed(chosenDropEffect, allowedDropEffect) {
// Extracted from the HTML 5 drag-and-drop section, http://dev.w3.org/html5/spec/Overview.html#dnd
if (chosenDropEffect == "none")
@@ -143,7 +145,7 @@
if (chosenDropEffect == "link" && ["link", "copyLink", "linkMove", "uninitialized", "all"].indexOf(allowedDropEffect) != -1)
return true;
if (chosenDropEffect == "dummy" && ["copy", "link", "move", "copyLink", "copyMove", "linkMove", "uninitialized", "all"].indexOf(allowedDropEffect) != -1)
- return true;
+ return true;
return false;
}
@@ -151,18 +153,18 @@
{
if (!window.eventSender)
return;
-
+
if (window.testRunner)
testRunner.dumpAsText();
-
+
var startX = dragMe.offsetLeft + 10;
var startY = dragMe.offsetTop + dragMe.offsetHeight / 2;
var endX = dropTarget.offsetLeft + 10;
var endY = dropTarget.offsetTop + dropTarget.offsetHeight / 2;
-
+
var numEffectAllowed = effectAllowedElem.options.length;
var numEffects = dropEffectElem.options.length;
-
+
for (var i = 0; i < numEffectAllowed; ++i) {
effectAllowedElem.options[i].selected = true;
debug('<br />When effectAllowed == "' + effectAllowedElem.options[i].value + '"<br />');