mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-05 14:57:30 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
95
dom/permission/PermissionPromptService.js
Normal file
95
dom/permission/PermissionPromptService.js
Normal file
|
|
@ -0,0 +1,95 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
|
||||
* You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
"use strict";
|
||||
|
||||
/* static functions */
|
||||
var DEBUG = 0;
|
||||
var debug;
|
||||
if (DEBUG) {
|
||||
debug = function (s) { dump("-*- PermissionPromptService: " + s + "\n"); };
|
||||
}
|
||||
else {
|
||||
debug = function (s) {};
|
||||
}
|
||||
|
||||
const Cc = Components.classes;
|
||||
const Ci = Components.interfaces;
|
||||
const Cu = Components.utils;
|
||||
|
||||
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
||||
Cu.import("resource://gre/modules/Services.jsm");
|
||||
Cu.import("resource://gre/modules/PermissionsInstaller.jsm");
|
||||
|
||||
const PERMISSIONPROMPTSERVICE_CONTRACTID = "@mozilla.org/permission-prompt-service;1";
|
||||
const PERMISSIONPROMPTSERVICE_CID = Components.ID("{e5f953b3-a6ca-444e-a88d-cdc81383741c}");
|
||||
const permissionPromptService = Ci.nsIPermissionPromptService;
|
||||
|
||||
var permissionManager = Cc["@mozilla.org/permissionmanager;1"].getService(Ci.nsIPermissionManager);
|
||||
var secMan = Cc["@mozilla.org/scriptsecuritymanager;1"].getService(Ci.nsIScriptSecurityManager);
|
||||
|
||||
function makePrompt()
|
||||
{
|
||||
return Cc["@mozilla.org/content-permission/prompt;1"].createInstance(Ci.nsIContentPermissionPrompt);
|
||||
}
|
||||
|
||||
function PermissionPromptService()
|
||||
{
|
||||
debug("Constructor");
|
||||
}
|
||||
|
||||
PermissionPromptService.prototype = {
|
||||
|
||||
classID : PERMISSIONPROMPTSERVICE_CID,
|
||||
|
||||
QueryInterface : XPCOMUtils.generateQI([permissionPromptService, Ci.nsIObserver]),
|
||||
|
||||
classInfo : XPCOMUtils.generateCI({classID: PERMISSIONPROMPTSERVICE_CID,
|
||||
contractID: PERMISSIONPROMPTSERVICE_CONTRACTID,
|
||||
classDescription: "PermissionPromptService",
|
||||
interfaces: [permissionPromptService]
|
||||
}),
|
||||
/**
|
||||
* getPermission
|
||||
* Ask for permission for an API, device, etc.
|
||||
* @param nsIContentPermissionRequest aRequest
|
||||
* @returns void
|
||||
**/
|
||||
getPermission: function PS_getPermission(aRequest)
|
||||
{
|
||||
if (!(aRequest instanceof Ci.nsIContentPermissionRequest)) {
|
||||
throw new Error("PermissionService.getPermission: "
|
||||
+ "2nd argument must be type 'nsIContentPermissionRequest'");
|
||||
}
|
||||
|
||||
// Only allow exactly one permission request here.
|
||||
let types = aRequest.types.QueryInterface(Ci.nsIArray);
|
||||
if (types.length != 1) {
|
||||
aRequest.cancel();
|
||||
return;
|
||||
}
|
||||
let reqType = types.queryElementAt(0, Ci.nsIContentPermissionType);
|
||||
|
||||
let type = reqType.access !== "unused" ? reqType.type + "-" + reqType.access
|
||||
: reqType.type;
|
||||
let perm =
|
||||
permissionManager.testExactPermissionFromPrincipal(aRequest.principal, type);
|
||||
|
||||
switch (perm) {
|
||||
case Ci.nsIPermissionManager.ALLOW_ACTION:
|
||||
aRequest.allow();
|
||||
break;
|
||||
case Ci.nsIPermissionManager.PROMPT_ACTION:
|
||||
makePrompt().prompt(aRequest);
|
||||
break;
|
||||
case Ci.nsIPermissionManager.DENY_ACTION:
|
||||
case Ci.nsIPermissionManager.UNKNOWN_ACTION:
|
||||
default:
|
||||
aRequest.cancel();
|
||||
break;
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
this.NSGetFactory = XPCOMUtils.generateNSGetFactory([PermissionPromptService]);
|
||||
Loading…
Add table
Add a link
Reference in a new issue