forked from mirrors/gecko-dev
Bug 1721317 - part 2: Make _pasteToTargetElement() sync r=m_kato
The function tests whether `input` event whose `inputType` is `insertFromPaste` or not and it waits the event until timeout. This sometimes fails in my environment, and `input` event should be fired synchronously in this case. Therefore, it should just fail if the event isn't fired. Depends on D120424 Differential Revision: https://phabricator.services.mozilla.com/D120425
This commit is contained in:
parent
e21daf33c3
commit
dbc4e0135e
1 changed files with 22 additions and 19 deletions
|
|
@ -110,7 +110,7 @@
|
|||
}
|
||||
|
||||
await this._copyToClipboard(expectedPastedHTML);
|
||||
await this._pasteToTargetElement();
|
||||
this._pasteToTargetElement();
|
||||
|
||||
const targetElement = document.getElementById(kTargetElementId);
|
||||
is(targetElement.children.length, 1,
|
||||
|
|
@ -284,31 +284,34 @@
|
|||
() => synthesizeKey("c", { accelKey: true } /* aEvent*/), flavor);
|
||||
}
|
||||
|
||||
async _pasteToTargetElement() {
|
||||
const promiseTargetElementChanged = new Promise(resolve => {
|
||||
const editingHost = (this._editabilityMode ==
|
||||
kEditabilityModeContenteditable) ?
|
||||
document.getElementById(kTargetElementId) :
|
||||
document;
|
||||
_pasteToTargetElement() {
|
||||
const editingHost = (this._editabilityMode ==
|
||||
kEditabilityModeContenteditable) ?
|
||||
document.getElementById(kTargetElementId) :
|
||||
document;
|
||||
|
||||
function handleInputEvent(aEvent) {
|
||||
if (aEvent.inputType == kInputEventInputTypeInsertFromPaste) {
|
||||
editingHost.removeEventListener(kInputEventType, handleInputEvent);
|
||||
SimpleTest.info(
|
||||
'Listened to an "' + kInputEventInputTypeInsertFromPaste + '" "'
|
||||
+ kInputEventType + ' event.');
|
||||
resolve();
|
||||
}
|
||||
let inputEvent;
|
||||
function handleInputEvent(aEvent) {
|
||||
if (aEvent.inputType == kInputEventInputTypeInsertFromPaste) {
|
||||
editingHost.removeEventListener(kInputEventType, handleInputEvent);
|
||||
SimpleTest.info(
|
||||
'Listened to an "' + kInputEventInputTypeInsertFromPaste + '" "'
|
||||
+ kInputEventType + ' event.');
|
||||
inputEvent = aEvent;
|
||||
}
|
||||
editingHost.addEventListener(kInputEventType, handleInputEvent);
|
||||
});
|
||||
}
|
||||
editingHost.addEventListener(kInputEventType, handleInputEvent);
|
||||
|
||||
const targetElement = document.getElementById(kTargetElementId);
|
||||
synthesizeMouseAtCenter(targetElement, {});
|
||||
synthesizeKey("v", { accelKey: true } /* aEvent */);
|
||||
|
||||
info("Waiting for paste...");
|
||||
await promiseTargetElementChanged;
|
||||
ok(
|
||||
inputEvent != undefined,
|
||||
`An ${kInputEventType} whose "inputType" is ${
|
||||
kInputEventInputTypeInsertFromPaste
|
||||
} should've been fired on ${editingHost.localName}`
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue