Bug 920831 - MozInputMethod's init should only return undefined. r=bz

This commit is contained in:
Yuan Xulei 2013-09-26 15:10:56 +08:00
parent f6cb3edc83
commit 97f4b3d326
5 changed files with 16 additions and 22 deletions

View File

@ -1786,6 +1786,17 @@ bool Navigator::HasPushNotificationsSupport(JSContext* /* unused */,
return win && Preferences::GetBool("services.push.enabled", false) && CheckPermission(win, "push");
}
#ifdef MOZ_B2G
/* static */
bool Navigator::HasInputMethodSupport(JSContext* /* unused */,
JSObject* aGlobal)
{
nsCOMPtr<nsPIDOMWindow> win = GetWindowFromGlobal(aGlobal);
return Preferences::GetBool("dom.mozInputMethod.testing", false) ||
(win && CheckPermission(win, "keyboard"));
}
#endif
/* static */
already_AddRefed<nsPIDOMWindow>
Navigator::GetWindowFromGlobal(JSObject* aGlobal)

View File

@ -300,6 +300,10 @@ public:
static bool HasPushNotificationsSupport(JSContext* /* unused */,
JSObject* aGlobal);
#ifdef MOZ_B2G
static bool HasInputMethodSupport(JSContext* /* unused */, JSObject* aGlobal);
#endif
nsPIDOMWindow* GetParentObject() const
{
return GetWindow();

View File

@ -199,8 +199,6 @@ MozKeyboard.prototype = {
}
};
const TESTING_ENABLED_PREF = "dom.mozInputMethod.testing";
/*
* A WeakMap to map input method iframe window to its active status.
*/
@ -317,24 +315,6 @@ MozInputMethod.prototype = {
}),
init: function mozInputMethodInit(win) {
// Check if we're in testing mode.
let isTesting = false;
try {
isTesting = Services.prefs.getBoolPref(TESTING_ENABLED_PREF);
} catch (e) {}
// Don't bypass the permission check if not in testing mode.
if (!isTesting) {
let principal = win.document.nodePrincipal;
let perm = Services.perms
.testExactPermissionFromPrincipal(principal, "keyboard");
if (perm != Ci.nsIPermissionManager.ALLOW_ACTION) {
dump("No permission to use the keyboard API for " +
principal.origin + "\n");
return;
}
}
this._window = win;
this._mgmt = new MozInputMethodManager(win);
this.innerWindowID = win.QueryInterface(Ci.nsIInterfaceRequestor)

View File

@ -324,7 +324,6 @@ var interfaceNamesInGlobalScope =
{name: "MozEmergencyCbModeEvent", b2g: true},
{name: "MozIccManager", b2g: true},
{name: "MozInputContext", b2g: true},
{name: "MozInputMethod", b2g: true},
{name: "MozInputMethodManager", b2g: true},
"MozMmsEvent",
"MozMmsMessage",

View File

@ -6,7 +6,7 @@
[JSImplementation="@mozilla.org/b2g-inputmethod;1",
NavigatorProperty="mozInputMethod",
Pref="dom.mozInputMethod.enabled"]
Func="Navigator::HasInputMethodSupport"]
interface MozInputMethod : EventTarget {
// Input Method Manager contain a few global methods expose to apps
readonly attribute MozInputMethodManager mgmt;