169 lines
5.2 KiB
JavaScript
169 lines
5.2 KiB
JavaScript
# -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
#
|
|
# The contents of this file are subject to the Mozilla Public
|
|
# License Version 1.1 (the "License"); you may not use this file
|
|
# except in compliance with the License. You may obtain a copy of
|
|
# the License at http://www.mozilla.org/MPL/
|
|
#
|
|
# Software distributed under the License is distributed on an "AS
|
|
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
# implied. See the License for the specific language governing
|
|
# rights and limitations under the License.
|
|
#
|
|
# The Original Code is mozilla.org code.
|
|
#
|
|
# The Initial Developer of the Original Code is Netscape
|
|
# Communications Corporation. Portions created by Netscape are
|
|
# Copyright (C) 1998 Netscape Communications Corporation. All
|
|
# Rights Reserved.
|
|
#
|
|
# Contributor(s):
|
|
# Blake Ross (original author)
|
|
#
|
|
|
|
var permissionsTree;
|
|
|
|
var permissions = [];
|
|
var deletedPermissions = [];
|
|
var permissionmanager = Components.classes["@mozilla.org/permissionmanager;1"].getService();
|
|
permissionmanager = permissionmanager.QueryInterface(Components.interfaces.nsIPermissionManager);
|
|
var permBundle;
|
|
|
|
const nsIPermissionManager = Components.interfaces.nsIPermissionManager;
|
|
|
|
function GetFields()
|
|
{
|
|
var dataObject = {};
|
|
dataObject.permissions = permissions;
|
|
dataObject.deletedPermissions = deletedPermissions;
|
|
return dataObject;
|
|
}
|
|
|
|
function SetFields(data)
|
|
{
|
|
var win;
|
|
if ('opener' in window && window.opener)
|
|
win = window.opener.top;
|
|
else
|
|
win = window.top;
|
|
|
|
if ('permissions' in data)
|
|
permissions = data.permissions;
|
|
|
|
if ('deletedPermissions' in data)
|
|
deletedPermissions = data.deletedPermissions;
|
|
}
|
|
|
|
var permissionsTreeView = {
|
|
rowCount : 0,
|
|
setTree : function(tree){},
|
|
getImageSrc : function(row,column) {},
|
|
getProgressMode : function(row,column) {},
|
|
getCellValue : function(row,column) {},
|
|
getCellText : function(row,column){
|
|
var rv="";
|
|
if (column=="siteCol") {
|
|
rv = permissions[row].rawHost;
|
|
} else if (column=="statusCol") {
|
|
rv = permissions[row].capability;
|
|
}
|
|
return rv;
|
|
},
|
|
isSeparator : function(index) {return false;},
|
|
isSorted: function() { return false; },
|
|
isContainer : function(index) {return false;},
|
|
cycleHeader : function(aColId, aElt) {},
|
|
getRowProperties : function(row,column,prop){},
|
|
getColumnProperties : function(column,columnElement,prop){},
|
|
getCellProperties : function(row,prop){}
|
|
};
|
|
|
|
function Permission(number, host, rawHost, type, capability, perm) {
|
|
this.number = number;
|
|
this.host = host;
|
|
this.rawHost = rawHost;
|
|
this.type = type;
|
|
this.capability = capability;
|
|
this.perm = perm;
|
|
}
|
|
|
|
function PermissionSelected() {
|
|
var selections = GetTreeSelections(permissionsTree);
|
|
document.getElementById("removePermission").disabled = (selections.length < 1);
|
|
}
|
|
|
|
function DeletePermission() {
|
|
DeleteSelectedItemFromTree(permissionsTree, permissionsTreeView,
|
|
permissions, deletedPermissions,
|
|
"removePermission", "removeAllPermissions");
|
|
}
|
|
|
|
function DeleteAllPermissions() {
|
|
DeleteAllFromTree(permissionsTree, permissionsTreeView,
|
|
permissions, deletedPermissions,
|
|
"removePermission", "removeAllPermissions");
|
|
}
|
|
|
|
function HandlePermissionKeyPress(e) {
|
|
if (e.keyCode == 46) {
|
|
DeletePermission();
|
|
}
|
|
}
|
|
|
|
var lastPermissionSortColumn = "";
|
|
var lastPermissionSortAscending = false;
|
|
|
|
function PermissionColumnSort(column, updateSelection) {
|
|
lastPermissionSortAscending =
|
|
SortTree(permissionsTree, permissionsTreeView, permissions,
|
|
column, lastPermissionSortColumn, lastPermissionSortAscending,
|
|
updateSelection);
|
|
lastPermissionSortColumn = column;
|
|
}
|
|
|
|
function loadPermissions() {
|
|
if (!permBundle)
|
|
permBundle = document.getElementById("permBundle");
|
|
|
|
if (!permissionsTree)
|
|
permissionsTree = document.getElementById("permissionsTree");
|
|
|
|
var win;
|
|
if ('opener' in window && window.opener)
|
|
win = window.opener.top;
|
|
else
|
|
win = window.top;
|
|
|
|
var dataObject = win.hPrefWindow.wsm.dataManager.pageData[window.location.href].userData;
|
|
|
|
// load permissions into a table
|
|
if (!('permissions' in dataObject)) {
|
|
var enumerator = permissionmanager.enumerator;
|
|
var count = 0;
|
|
while (enumerator.hasMoreElements()) {
|
|
var nextPermission = enumerator.getNext();
|
|
nextPermission = nextPermission.QueryInterface(Components.interfaces.nsIPermission);
|
|
if (nextPermission.type == permType) {
|
|
var host = nextPermission.host;
|
|
var capability = ( nextPermission.capability == nsIPermissionManager.ALLOW_ACTION ) ? true : false;
|
|
permissions[count] = new Permission(count++, host,
|
|
(host.charAt(0)==".") ? host.substring(1,host.length) : host,
|
|
nextPermission.type,
|
|
permBundle ? permBundle.getString(capability?"can":"cannot") : "", nextPermission.capability);
|
|
}
|
|
}
|
|
}
|
|
|
|
permissionsTreeView.rowCount = permissions.length;
|
|
|
|
// sort and display the table
|
|
permissionsTree.treeBoxObject.view = permissionsTreeView;
|
|
PermissionColumnSort('rawHost', false);
|
|
|
|
// disable "remove all" button if there are none
|
|
document.getElementById("removeAllPermissions").disabled = permissions.length == 0;
|
|
}
|
|
|
|
|
|
|