зеркало из https://github.com/mozilla/gecko-dev.git
Backout Bug 1352852 due to windows non-e10s test_drag_empty.html timeouts, a=backout
This commit is contained in:
Родитель
0504ed64c3
Коммит
109b94bc7f
|
@ -38,7 +38,6 @@
|
||||||
#include "mozilla/dom/BindingUtils.h"
|
#include "mozilla/dom/BindingUtils.h"
|
||||||
#include "mozilla/dom/OSFileSystem.h"
|
#include "mozilla/dom/OSFileSystem.h"
|
||||||
#include "mozilla/dom/Promise.h"
|
#include "mozilla/dom/Promise.h"
|
||||||
#include "mozilla/storage/Variant.h"
|
|
||||||
#include "nsNetUtil.h"
|
#include "nsNetUtil.h"
|
||||||
|
|
||||||
namespace mozilla {
|
namespace mozilla {
|
||||||
|
@ -1574,28 +1573,5 @@ DataTransfer::FillInExternalCustomTypes(nsIVariant* aData, uint32_t aIndex,
|
||||||
} while (type != eCustomClipboardTypeId_None);
|
} while (type != eCustomClipboardTypeId_None);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
|
||||||
DataTransfer::AddDummyHiddenData()
|
|
||||||
{
|
|
||||||
RefPtr<nsVariantCC> variant = new nsVariantCC();
|
|
||||||
variant->SetAsAString(EmptyString());
|
|
||||||
|
|
||||||
ErrorResult rv;
|
|
||||||
RefPtr<DataTransferItem> item =
|
|
||||||
mItems->SetDataWithPrincipal(NS_LITERAL_STRING(kDummyTypeMime),
|
|
||||||
variant,
|
|
||||||
/* aIndex = */ 0,
|
|
||||||
nsContentUtils::GetSystemPrincipal(),
|
|
||||||
/* aInsertOnly = */ true,
|
|
||||||
/* aHidden = */ true,
|
|
||||||
rv);
|
|
||||||
MOZ_ASSERT(item->ChromeOnly());
|
|
||||||
|
|
||||||
// We might have gotten a NS_ERROR_DOM_NOT_SUPPORTED_ERROR because we've
|
|
||||||
// already added an application/x-moz-dummy-data. We want to ignore that
|
|
||||||
// error.
|
|
||||||
rv.SuppressException();
|
|
||||||
}
|
|
||||||
|
|
||||||
} // namespace dom
|
} // namespace dom
|
||||||
} // namespace mozilla
|
} // namespace mozilla
|
||||||
|
|
|
@ -270,10 +270,6 @@ public:
|
||||||
nsIPrincipal* aPrincipal,
|
nsIPrincipal* aPrincipal,
|
||||||
bool aHidden);
|
bool aHidden);
|
||||||
|
|
||||||
// Adds a dummy type to the DataTransfer which is hidden from the user to
|
|
||||||
// allow the drag to run. This type is not visible to content code.
|
|
||||||
void AddDummyHiddenData();
|
|
||||||
|
|
||||||
// returns a weak reference to the drag image
|
// returns a weak reference to the drag image
|
||||||
Element* GetDragImage(int32_t* aX, int32_t* aY) const
|
Element* GetDragImage(int32_t* aX, int32_t* aY) const
|
||||||
{
|
{
|
||||||
|
|
|
@ -1798,23 +1798,6 @@ EventStateManager::GenerateDragGesture(nsPresContext* aPresContext,
|
||||||
|
|
||||||
WidgetDragEvent* event = &startEvent;
|
WidgetDragEvent* event = &startEvent;
|
||||||
|
|
||||||
// If we didn't get any data in the dataTransfer, yet the targetContent is
|
|
||||||
// a draggable HTML element draggable, we need to fire the drag event
|
|
||||||
// anyway. We'll add a custom dummy data type to the DataTransfer to make
|
|
||||||
// this possible. This data type will be marked as hidden so that content
|
|
||||||
// can't see it. This does not apply to non-HTML elements.
|
|
||||||
uint32_t count = 0;
|
|
||||||
dataTransfer->GetMozItemCount(&count);
|
|
||||||
if (count == 0) {
|
|
||||||
nsCOMPtr<nsIDOMHTMLElement> htmlDragTarget = do_QueryInterface(targetContent);
|
|
||||||
bool draggable = false;
|
|
||||||
if (htmlDragTarget &&
|
|
||||||
NS_SUCCEEDED(htmlDragTarget->GetDraggable(&draggable)) &&
|
|
||||||
draggable) {
|
|
||||||
dataTransfer->AddDummyHiddenData();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
nsCOMPtr<nsIObserverService> observerService =
|
nsCOMPtr<nsIObserverService> observerService =
|
||||||
mozilla::services::GetObserverService();
|
mozilla::services::GetObserverService();
|
||||||
// Emit observer event to allow addons to modify the DataTransfer object.
|
// Emit observer event to allow addons to modify the DataTransfer object.
|
||||||
|
|
|
@ -177,4 +177,3 @@ skip-if = toolkit == 'android' #CRASH_DUMP, RANDOM
|
||||||
[test_bug1332699.html]
|
[test_bug1332699.html]
|
||||||
[test_bug1339758.html]
|
[test_bug1339758.html]
|
||||||
[test_dnd_with_modifiers.html]
|
[test_dnd_with_modifiers.html]
|
||||||
[test_drag_empty.html]
|
|
||||||
|
|
|
@ -1,78 +0,0 @@
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<title>Tests for the dragstart event</title>
|
|
||||||
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css">
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/SpawnTask.js"></script>
|
|
||||||
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<!--
|
|
||||||
This test checks the behaviour of the dragstart event when no data is added to the DataTransfer.
|
|
||||||
-->
|
|
||||||
<style>
|
|
||||||
#droptarget { width: 100px; height: 100px; background-color: #550000; }
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<div id="draggable" draggable="true" ondragstart="onDragStart(event)">This is a bit of text.</div>
|
|
||||||
|
|
||||||
<div id="droptarget" ondragover="onDragOver(event)" ondrop="onDrop(event)">THIS IS A DROP TARGET?!?!?</div>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
let dragStartFired = false;
|
|
||||||
function onDragStart(event) {
|
|
||||||
dragStartFired = true;
|
|
||||||
info("dragstart fired");
|
|
||||||
}
|
|
||||||
|
|
||||||
let dragOverFired = false;
|
|
||||||
function onDragOver(event) {
|
|
||||||
dragOverFired = true;
|
|
||||||
event.preventDefault();
|
|
||||||
info("dragover fired");
|
|
||||||
}
|
|
||||||
|
|
||||||
let dropFired = false;
|
|
||||||
function onDrop(event) {
|
|
||||||
dropFired = true;
|
|
||||||
is(event.dataTransfer.types.length, 0,
|
|
||||||
"There shouldn't be any data on the DataTransfer");
|
|
||||||
info("drop fired");
|
|
||||||
}
|
|
||||||
|
|
||||||
let loaded = new Promise(resolve => document.body.onload = resolve);
|
|
||||||
|
|
||||||
add_task(function*() {
|
|
||||||
var ds = SpecialPowers.Cc["@mozilla.org/widget/dragservice;1"].
|
|
||||||
getService(SpecialPowers.Ci.nsIDragService);
|
|
||||||
ok(!ds.getCurrentSession(), "There should be no drag session in progress");
|
|
||||||
|
|
||||||
// XXX: Make sure that we've finished loading the document before we start
|
|
||||||
// trying to do work with drag events.
|
|
||||||
yield loaded;
|
|
||||||
|
|
||||||
var draggable = $("draggable");
|
|
||||||
var droptarget = $("droptarget");
|
|
||||||
// Fire the dragstart event - this should start a drag session
|
|
||||||
synthesizeMouse(draggable, 6, 6, { type: "mousedown" });
|
|
||||||
synthesizeMouse(draggable, 14, 14, { type: "mousemove" });
|
|
||||||
// drags are asynchronous on Linux, so this extra event is needed to make
|
|
||||||
// sure the drag gets processed
|
|
||||||
synthesizeMouse(draggable, 15, 15, { type: "mousemove" });
|
|
||||||
|
|
||||||
ok(dragStartFired, "dragstart should have fired");
|
|
||||||
ok(ds.getCurrentSession(), "The drag session should have started");
|
|
||||||
|
|
||||||
// Synthesize the dragover and drop events on the target node.
|
|
||||||
var [result, dataTransfer] = synthesizeDragOver(draggable, droptarget);
|
|
||||||
synthesizeDropAfterDragOver(result, dataTransfer, droptarget);
|
|
||||||
ds.endDragSession(true);
|
|
||||||
|
|
||||||
ok(dropFired, "drop should have been fired");
|
|
||||||
ok(dragOverFired, "dragover should have been fired");
|
|
||||||
ok(!ds.getCurrentSession(), "The drag session should have ended");
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -50,15 +50,8 @@ interface nsIPrincipal;
|
||||||
// a synthetic flavor, put into the transferable once we know the destination directory of a file drag
|
// a synthetic flavor, put into the transferable once we know the destination directory of a file drag
|
||||||
#define kFilePromiseDirectoryMime "application/x-moz-file-promise-dir"
|
#define kFilePromiseDirectoryMime "application/x-moz-file-promise-dir"
|
||||||
|
|
||||||
// A custom data type used by DataTransfer for securely transferring arbitrary
|
|
||||||
// data through the drag or clipboard object without allowing websites to set
|
|
||||||
// arbitrary data types.
|
|
||||||
#define kCustomTypesMime "application/x-moz-custom-clipdata"
|
#define kCustomTypesMime "application/x-moz-custom-clipdata"
|
||||||
|
|
||||||
// A custom data type used during drag events to allow them to occur even when
|
|
||||||
// no data has been attached to the drag event's Transferrable.
|
|
||||||
#define kDummyTypeMime "application/x-moz-dummy-data"
|
|
||||||
|
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче