mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-10-14 11:17:31 +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
123
toolkit/components/contentprefs/ContentPrefStore.jsm
Normal file
123
toolkit/components/contentprefs/ContentPrefStore.jsm
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
/* 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/. */
|
||||
|
||||
var EXPORTED_SYMBOLS = [
|
||||
"ContentPrefStore",
|
||||
];
|
||||
|
||||
function ContentPrefStore() {
|
||||
this._groups = new Map();
|
||||
this._globalNames = new Map();
|
||||
}
|
||||
|
||||
ContentPrefStore.prototype = {
|
||||
|
||||
set: function CPS_set(group, name, val) {
|
||||
if (group) {
|
||||
if (!this._groups.has(group))
|
||||
this._groups.set(group, new Map());
|
||||
this._groups.get(group).set(name, val);
|
||||
}
|
||||
else {
|
||||
this._globalNames.set(name, val);
|
||||
}
|
||||
},
|
||||
|
||||
setWithCast: function CPS_setWithCast(group, name, val) {
|
||||
if (typeof(val) == "boolean")
|
||||
val = val ? 1 : 0;
|
||||
else if (val === undefined)
|
||||
val = null;
|
||||
this.set(group, name, val);
|
||||
},
|
||||
|
||||
has: function CPS_has(group, name) {
|
||||
if (group) {
|
||||
return this._groups.has(group) &&
|
||||
this._groups.get(group).has(name);
|
||||
}
|
||||
return this._globalNames.has(name);
|
||||
},
|
||||
|
||||
get: function CPS_get(group, name) {
|
||||
if (group && this._groups.has(group))
|
||||
return this._groups.get(group).get(name);
|
||||
return this._globalNames.get(name);
|
||||
},
|
||||
|
||||
remove: function CPS_remove(group, name) {
|
||||
if (group) {
|
||||
if (this._groups.has(group)) {
|
||||
this._groups.get(group).delete(name);
|
||||
if (this._groups.get(group).size == 0)
|
||||
this._groups.delete(group);
|
||||
}
|
||||
}
|
||||
else {
|
||||
this._globalNames.delete(name);
|
||||
}
|
||||
},
|
||||
|
||||
removeGroup: function CPS_removeGroup(group) {
|
||||
if (group) {
|
||||
this._groups.delete(group);
|
||||
}
|
||||
else {
|
||||
this._globalNames.clear();
|
||||
}
|
||||
},
|
||||
|
||||
removeAllGroups: function CPS_removeAllGroups() {
|
||||
this._groups.clear();
|
||||
},
|
||||
|
||||
removeAll: function CPS_removeAll() {
|
||||
this.removeAllGroups();
|
||||
this._globalNames.clear();
|
||||
},
|
||||
|
||||
groupsMatchIncludingSubdomains: function CPS_groupsMatchIncludingSubdomains(group, group2) {
|
||||
let idx = group2.indexOf(group);
|
||||
return (idx == group2.length - group.length &&
|
||||
(idx == 0 || group2[idx - 1] == "."));
|
||||
},
|
||||
|
||||
* [Symbol.iterator]() {
|
||||
for (let [group, names] of this._groups) {
|
||||
for (let [name, val] of names) {
|
||||
yield [group, name, val];
|
||||
}
|
||||
}
|
||||
for (let [name, val] of this._globalNames) {
|
||||
yield [null, name, val];
|
||||
}
|
||||
},
|
||||
|
||||
* match(group, name, includeSubdomains) {
|
||||
for (let sgroup of this.matchGroups(group, includeSubdomains)) {
|
||||
if (this.has(sgroup, name))
|
||||
yield [sgroup, this.get(sgroup, name)];
|
||||
}
|
||||
},
|
||||
|
||||
* matchGroups(group, includeSubdomains) {
|
||||
if (group) {
|
||||
if (includeSubdomains) {
|
||||
for (let [sgroup, , ] of this) {
|
||||
if (sgroup) {
|
||||
if (this.groupsMatchIncludingSubdomains(group, sgroup)) {
|
||||
yield sgroup;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (this._groups.has(group)) {
|
||||
yield group;
|
||||
}
|
||||
}
|
||||
else if (this._globalNames.size) {
|
||||
yield null;
|
||||
}
|
||||
},
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue