mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-10 02:08:38 +09:00
pt 1 in reviving the android build (copied from pm 28a1, wish me luck)
This commit is contained in:
parent
efa9662725
commit
d7788a6d6d
4249 changed files with 468189 additions and 0 deletions
165
mobile/android/tests/browser/robocop/robocop_input.html
Normal file
165
mobile/android/tests/browser/robocop/robocop_input.html
Normal file
|
|
@ -0,0 +1,165 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Robocop Input</title>
|
||||
</head>
|
||||
<body>
|
||||
<p>Input: <input id="input" type="text"></p>
|
||||
<p>Text area: <textarea id="text-area"></textarea></p>
|
||||
<p>Content editable: <div id="content-editable" contentEditable="true"></div></p>
|
||||
<p>Design mode: <iframe id="design-mode" src="data:text/html;charset=utf-8,<html><body></body></html>"></iframe></p>
|
||||
<p>Resetting input: <input id="resetting-input" type="text"></p>
|
||||
<p>Hiding input: <input id="hiding-input" type="text"></p>
|
||||
<script type="application/javascript;version=1.8" src="robocop_head.js"></script>
|
||||
<script type="application/javascript;version=1.8">
|
||||
let input = document.getElementById("input");
|
||||
let textArea = document.getElementById("text-area");
|
||||
let contentEditable = document.getElementById("content-editable");
|
||||
|
||||
let designMode = document.getElementById("design-mode");
|
||||
try {
|
||||
designMode.contentDocument.designMode = "on";
|
||||
} catch (e) {
|
||||
// Setting designMode above sometimes fails, so try again later.
|
||||
setTimeout(function() { designMode.contentDocument.designMode = "on" }, 0);
|
||||
}
|
||||
|
||||
// Spatial navigation interferes with design-mode key event tests.
|
||||
SpecialPowers.setBoolPref("snav.enabled", false);
|
||||
|
||||
// An input that resets the editor on every input by resetting the value property.
|
||||
let resetting_input = document.getElementById("resetting-input");
|
||||
resetting_input.addEventListener('input', function() {
|
||||
this.value = this.value;
|
||||
});
|
||||
|
||||
// An input that hides on input.
|
||||
let hiding_input = document.getElementById("hiding-input");
|
||||
hiding_input.addEventListener('keydown', function(e) {
|
||||
if (e.key === "!") { // '!' key event as sent by testInputConnection.java.
|
||||
this.value = "";
|
||||
this.style.display = "none";
|
||||
}
|
||||
});
|
||||
|
||||
let getEditor, setValue, setSelection;
|
||||
|
||||
let test = {
|
||||
focus_input: function(val) {
|
||||
getEditor = function() {
|
||||
return SpecialPowers.wrap(input).QueryInterface(
|
||||
SpecialPowers.Ci.nsIDOMNSEditableElement).editor;
|
||||
};
|
||||
setValue = function(val) {
|
||||
input.value = val;
|
||||
};
|
||||
setSelection = function(pos) {
|
||||
input.setSelectionRange(pos, pos);
|
||||
};
|
||||
setValue(val);
|
||||
input.focus();
|
||||
},
|
||||
|
||||
focus_text_area: function(val) {
|
||||
getEditor = function() {
|
||||
return SpecialPowers.wrap(textArea).QueryInterface(
|
||||
SpecialPowers.Ci.nsIDOMNSEditableElement).editor;
|
||||
};
|
||||
setValue = function(val) {
|
||||
textArea.value = val;
|
||||
};
|
||||
setSelection = function(pos) {
|
||||
textArea.setSelectionRange(pos, pos);
|
||||
};
|
||||
setValue(val);
|
||||
textArea.focus();
|
||||
},
|
||||
|
||||
focus_content_editable: function(val) {
|
||||
getEditor = function() {
|
||||
return SpecialPowers.wrap(window).QueryInterface(
|
||||
SpecialPowers.Ci.nsIInterfaceRequestor).getInterface(
|
||||
SpecialPowers.Ci.nsIWebNavigation).QueryInterface(
|
||||
SpecialPowers.Ci.nsIDocShell).editor;
|
||||
};
|
||||
setValue = function(val) {
|
||||
contentEditable.innerHTML = val;
|
||||
};
|
||||
setSelection = function(pos) {
|
||||
window.getSelection().collapse(contentEditable.firstChild, pos);
|
||||
};
|
||||
setValue(val);
|
||||
contentEditable.focus();
|
||||
},
|
||||
|
||||
focus_design_mode: function(val) {
|
||||
getEditor = function() {
|
||||
return SpecialPowers.wrap(designMode.contentWindow).QueryInterface(
|
||||
SpecialPowers.Ci.nsIInterfaceRequestor).getInterface(
|
||||
SpecialPowers.Ci.nsIWebNavigation).QueryInterface(
|
||||
SpecialPowers.Ci.nsIDocShell).editor;
|
||||
};
|
||||
setValue = function(val) {
|
||||
designMode.contentDocument.body.innerHTML = val;
|
||||
};
|
||||
setSelection = function(pos) {
|
||||
designMode.contentWindow.getSelection().collapse(
|
||||
designMode.contentDocument.body.firstChild, pos);
|
||||
};
|
||||
setValue(val);
|
||||
designMode.contentWindow.focus();
|
||||
designMode.contentDocument.body.focus();
|
||||
},
|
||||
|
||||
test_reflush_changes: function() {
|
||||
let inputIme = getEditor().QueryInterface(SpecialPowers.Ci.nsIEditorIMESupport);
|
||||
do_check_true(inputIme.composing);
|
||||
|
||||
// Ending the composition then setting the input value triggers the bug.
|
||||
inputIme.forceCompositionEnd();
|
||||
setValue("good"); // Value that testInputConnection.java expects.
|
||||
setSelection(4);
|
||||
},
|
||||
|
||||
test_set_selection: function() {
|
||||
let inputIme = getEditor().QueryInterface(SpecialPowers.Ci.nsIEditorIMESupport);
|
||||
do_check_true(inputIme.composing);
|
||||
|
||||
// Ending the composition then setting the selection triggers the bug.
|
||||
inputIme.forceCompositionEnd();
|
||||
setSelection(3); // Offsets that testInputConnection.java expects.
|
||||
},
|
||||
|
||||
test_bug1123514: function() {
|
||||
document.activeElement.addEventListener('input', function test_bug1123514_listener() {
|
||||
this.removeEventListener('input', test_bug1123514_listener);
|
||||
|
||||
// Only works on input and textarea.
|
||||
if (this.value === 'b') {
|
||||
this.value = 'abc';
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
focus_resetting_input: function(val) {
|
||||
resetting_input.value = val;
|
||||
resetting_input.focus();
|
||||
},
|
||||
|
||||
focus_hiding_input: function(val) {
|
||||
hiding_input.value = val;
|
||||
hiding_input.style.display = "";
|
||||
hiding_input.focus();
|
||||
},
|
||||
|
||||
finish_test: function() {
|
||||
java.disconnect();
|
||||
},
|
||||
};
|
||||
|
||||
var java = new JavaBridge(test);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue