mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-25 11:15:34 +00:00
2a55d065b7
This change renames OriginAttributes.mInBrowser to mInIsolatedMozBrowser and nsIPrincipal::GetIsInBrowserElement to GetIsInIsolatedMozBrowserElement. Other methods that pass these values around also have name changes. Tokens such as "inBrowser" have previously been serialized into cache keys, used as DB column names, stored in app registries, etc. No changes are made to any serialization formats. Only runtime method and variable names are updated. No behavior changes are made in this patch, so some renamed methods may have nonsensical implementations. These are corrected in subsequent patches focused on behavior. MozReview-Commit-ID: 66HfMlsXFLs
119 lines
3.4 KiB
HTML
119 lines
3.4 KiB
HTML
<!DOCTYPE HTML>
|
|
<html>
|
|
<!--
|
|
https://bugzilla.mozilla.org/show_bug.cgi?id=944397
|
|
-->
|
|
<head>
|
|
<title>Basic test for InputMethod API.</title>
|
|
<script type="application/javascript;version=1.7" src="/tests/SimpleTest/SimpleTest.js"></script>
|
|
<script type="application/javascript;version=1.7" src="inputmethod_common.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
|
|
</head>
|
|
<body>
|
|
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=944397">Mozilla Bug 944397</a>
|
|
<p id="display"></p>
|
|
<pre id="test">
|
|
<script class="testbody" type="application/javascript;version=1.7">
|
|
|
|
SimpleTest.requestFlakyTimeout("untriaged");
|
|
|
|
inputmethod_setup(function() {
|
|
runTest();
|
|
});
|
|
|
|
// The frame script running in file_test_app.html.
|
|
function appFrameScript() {
|
|
let input = content.document.getElementById('test-input');
|
|
input.oninput = function() {
|
|
sendAsyncMessage('test:InputMethod:oninput', {
|
|
value: input.value
|
|
});
|
|
};
|
|
}
|
|
|
|
function runTest() {
|
|
let app, keyboard;
|
|
|
|
/**
|
|
* So this test does the following:
|
|
* 1. Create a mozbrowser iframe with a text field in it, and focus the text field
|
|
* 2. 100ms. after loading we create new keyboard iframe, that will try to execute
|
|
* replaceSurroundingText on the current active inputcontext
|
|
* 3. That should trigger 'input' event on the said text field
|
|
* 4. And if that happens we know everything is OK
|
|
*/
|
|
|
|
let path = location.pathname;
|
|
let basePath = location.protocol + '//' + location.host +
|
|
path.substring(0, path.lastIndexOf('/'));
|
|
|
|
// STEP 1: Create an app frame to recieve keyboard inputs.
|
|
function step1() {
|
|
app = document.createElement('iframe');
|
|
app.src = basePath + '/file_test_app.html';
|
|
app.setAttribute('mozbrowser', true);
|
|
document.body.appendChild(app);
|
|
app.addEventListener('mozbrowserloadend', function() {
|
|
let mm = SpecialPowers.getBrowserFrameMessageManager(app);
|
|
mm.loadFrameScript('data:,(' + appFrameScript.toString() + ')();', false);
|
|
mm.addMessageListener("test:InputMethod:oninput", function(ev) {
|
|
step4(SpecialPowers.wrap(ev).json.value);
|
|
});
|
|
|
|
step2();
|
|
});
|
|
}
|
|
|
|
function step2() {
|
|
// STEP 2a: Create a browser frame to load the input method app.
|
|
keyboard = document.createElement('iframe');
|
|
keyboard.setAttribute('mozbrowser', true);
|
|
document.body.appendChild(keyboard);
|
|
|
|
// STEP 2b: Grant input privileges to the keyboard iframe
|
|
let imeUrl = basePath + '/file_inputmethod.html#data';
|
|
|
|
SpecialPowers.pushPermissions([{
|
|
type: 'input',
|
|
allow: true,
|
|
context: {
|
|
url: imeUrl,
|
|
originAttributes: {
|
|
inIsolatedMozBrowser: true
|
|
}
|
|
}
|
|
}], function() {
|
|
// STEP 2c: Tell Gecko to use this iframe as its keyboard app
|
|
let req = keyboard.setInputMethodActive(true);
|
|
|
|
req.onsuccess = function() {
|
|
ok(true, 'setInputMethodActive succeeded.');
|
|
};
|
|
|
|
req.onerror = function() {
|
|
ok(false, 'setInputMethodActive failed: ' + this.error.name);
|
|
inputmethod_cleanup();
|
|
};
|
|
|
|
// STEP 3: Loads the input method app to the browser frame after a delay.
|
|
setTimeout(function() {
|
|
keyboard.src = imeUrl;
|
|
}, 100);
|
|
});
|
|
}
|
|
|
|
function step4(val) {
|
|
ok(true, 'Keyboard input was received.');
|
|
is(val, '#dataYuan', 'Input value');
|
|
inputmethod_cleanup();
|
|
}
|
|
|
|
step1();
|
|
}
|
|
|
|
</script>
|
|
</pre>
|
|
</body>
|
|
</html>
|
|
|