Bug 769569 - Check that navigator.id.request was called as a result of user input. r=benadida

This commit is contained in:
Mounir Lamouri 2012-10-08 14:03:14 +01:00
Родитель 4f484eed65
Коммит 5ab3b6cc6e
3 изменённых файлов: 26 добавлений и 8 удалений

Просмотреть файл

@ -98,7 +98,13 @@ nsDOMIdentity.prototype = {
},
request: function nsDOMIdentity_request(aOptions) {
// TODO: Bug 769569 - "must be invoked from within a click handler"
let util = this._window.QueryInterface(Ci.nsIInterfaceRequestor)
.getInterface(Ci.nsIDOMWindowUtils);
// Do not allow call of request() outside of a user input handler.
if (!util.isHandlingUserInput) {
return;
}
// Has the caller called watch() before this?
if (!this._rpWatcher) {

Просмотреть файл

@ -12,8 +12,8 @@
<body>
<a target="_blank">navigator.id RP basics</a>
<p id="display"></p>
<div id="content" style="display: none">
<div id="content">
<button id='request'>request</button>
</div>
<pre id="test">
<script type="application/javascript;version=1.8">
@ -49,8 +49,13 @@ let steps = [
// test request before watch throws an exception
function requestBeforeWatch() {
expectException(function() {
identity.request();
var button = document.getElementById('request');
button.addEventListener('click', function requestHandler() {
button.removeEventListener('click', requestHandler);
expectException(function() {
identity.request();
});
});
SimpleTest.executeSoon(next);
},

Просмотреть файл

@ -7,14 +7,15 @@ Test of Relying Party (RP) using the DOM APIs
<meta charset="utf-8">
<title>Test of Relying Party (RP) using the DOM APIs</title>
<script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
<script type="application/javascript;version=1.8" src="head_identity.js"></script>
</head>
<body onload="run_next_test()">
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=753238">Test of Relying Party (RP) using the DOM APIs</a>
<p id="display"></p>
<div id="content" style="display: none">
<div id="content">
<button id='request'>request</button>
</div>
<pre id="test">
<script type="application/javascript;version=1.8">
@ -163,7 +164,13 @@ function test_request() {
run_next_rp_test();
});
identity.request();
var button = document.getElementById('request');
button.addEventListener('click', function requestHandler() {
button.removeEventListener('click', requestHandler);
identity.request();
});
synthesizeMouseAtCenter(button, {});
}
function test_logout() {