addon-sdk/source/test/traits/utils.js

Thu, 15 Jan 2015 15:59:08 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 15 Jan 2015 15:59:08 +0100
branch
TOR_BUG_9701
changeset 10
ac0c01689b40
permissions
-rw-r--r--

Implement a real Private Browsing Mode condition by changing the API/ABI;
This solves Tor bug #9701, complying with disk avoidance documented in
https://www.torproject.org/projects/torbrowser/design/#disk-avoidance.

michael@0 1 /* This Source Code Form is subject to the terms of the Mozilla Public
michael@0 2 * License, v. 2.0. If a copy of the MPL was not distributed with this
michael@0 3 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
michael@0 4
michael@0 5 "use strict";
michael@0 6
michael@0 7 var ERR_CONFLICT = "Remaining conflicting property: ";
michael@0 8 var ERR_REQUIRED = "Missing required property: ";
michael@0 9
michael@0 10 exports.Data = function Data(value, enumerable, configurable, writable) {
michael@0 11 return ({
michael@0 12 value: value,
michael@0 13 enumerable: enumerable !== false,
michael@0 14 configurable: configurable !== false,
michael@0 15 writable: writable !== false
michael@0 16 });
michael@0 17 };
michael@0 18
michael@0 19 exports.Method = function Method(method, enumerable, configurable, writable) {
michael@0 20 return ({
michael@0 21 value: method,
michael@0 22 enumerable: enumerable !== false,
michael@0 23 configurable: configurable !== false,
michael@0 24 writable: writable !== false
michael@0 25 });
michael@0 26 };
michael@0 27
michael@0 28 exports.Accessor = function Accessor(get, set, enumerable, configurable) {
michael@0 29 return ({
michael@0 30 get: get,
michael@0 31 set: set,
michael@0 32 enumerable: enumerable !== false,
michael@0 33 configurable: configurable !== false
michael@0 34 });
michael@0 35 };
michael@0 36
michael@0 37 exports.Required = function Required(name) {
michael@0 38 function required() { throw new Error(ERR_REQUIRED + name) }
michael@0 39
michael@0 40 return ({
michael@0 41 get: required,
michael@0 42 set: required,
michael@0 43 required: true
michael@0 44 });
michael@0 45 };
michael@0 46
michael@0 47 exports.Conflict = function Conflict(name) {
michael@0 48 function conflict() { throw new Error(ERR_CONFLICT + name) }
michael@0 49
michael@0 50 return ({
michael@0 51 get: conflict,
michael@0 52 set: conflict,
michael@0 53 conflict: true
michael@0 54 });
michael@0 55 };
michael@0 56

mercurial