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._copyToClipboard(expectedPastedHTML);
|
||||||
await this._pasteToTargetElement();
|
this._pasteToTargetElement();
|
||||||
|
|
||||||
const targetElement = document.getElementById(kTargetElementId);
|
const targetElement = document.getElementById(kTargetElementId);
|
||||||
is(targetElement.children.length, 1,
|
is(targetElement.children.length, 1,
|
||||||
|
|
@ -284,31 +284,34 @@
|
||||||
() => synthesizeKey("c", { accelKey: true } /* aEvent*/), flavor);
|
() => synthesizeKey("c", { accelKey: true } /* aEvent*/), flavor);
|
||||||
}
|
}
|
||||||
|
|
||||||
async _pasteToTargetElement() {
|
_pasteToTargetElement() {
|
||||||
const promiseTargetElementChanged = new Promise(resolve => {
|
const editingHost = (this._editabilityMode ==
|
||||||
const editingHost = (this._editabilityMode ==
|
kEditabilityModeContenteditable) ?
|
||||||
kEditabilityModeContenteditable) ?
|
document.getElementById(kTargetElementId) :
|
||||||
document.getElementById(kTargetElementId) :
|
document;
|
||||||
document;
|
|
||||||
|
|
||||||
function handleInputEvent(aEvent) {
|
let inputEvent;
|
||||||
if (aEvent.inputType == kInputEventInputTypeInsertFromPaste) {
|
function handleInputEvent(aEvent) {
|
||||||
editingHost.removeEventListener(kInputEventType, handleInputEvent);
|
if (aEvent.inputType == kInputEventInputTypeInsertFromPaste) {
|
||||||
SimpleTest.info(
|
editingHost.removeEventListener(kInputEventType, handleInputEvent);
|
||||||
'Listened to an "' + kInputEventInputTypeInsertFromPaste + '" "'
|
SimpleTest.info(
|
||||||
+ kInputEventType + ' event.');
|
'Listened to an "' + kInputEventInputTypeInsertFromPaste + '" "'
|
||||||
resolve();
|
+ kInputEventType + ' event.');
|
||||||
}
|
inputEvent = aEvent;
|
||||||
}
|
}
|
||||||
editingHost.addEventListener(kInputEventType, handleInputEvent);
|
}
|
||||||
});
|
editingHost.addEventListener(kInputEventType, handleInputEvent);
|
||||||
|
|
||||||
const targetElement = document.getElementById(kTargetElementId);
|
const targetElement = document.getElementById(kTargetElementId);
|
||||||
synthesizeMouseAtCenter(targetElement, {});
|
synthesizeMouseAtCenter(targetElement, {});
|
||||||
synthesizeKey("v", { accelKey: true } /* aEvent */);
|
synthesizeKey("v", { accelKey: true } /* aEvent */);
|
||||||
|
|
||||||
info("Waiting for paste...");
|
ok(
|
||||||
await promiseTargetElementChanged;
|
inputEvent != undefined,
|
||||||
|
`An ${kInputEventType} whose "inputType" is ${
|
||||||
|
kInputEventInputTypeInsertFromPaste
|
||||||
|
} should've been fired on ${editingHost.localName}`
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue