diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /dom/manifest/ValueExtractor.jsm | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'dom/manifest/ValueExtractor.jsm')
-rw-r--r-- | dom/manifest/ValueExtractor.jsm | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/dom/manifest/ValueExtractor.jsm b/dom/manifest/ValueExtractor.jsm new file mode 100644 index 000000000..f3dd25905 --- /dev/null +++ b/dom/manifest/ValueExtractor.jsm @@ -0,0 +1,65 @@ +/* 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 https://mozilla.org/MPL/2.0/. */ +/* + * Helper functions extract values from manifest members + * and reports conformance violations. + */ +/*globals Components*/ +'use strict'; +const { + classes: Cc, + interfaces: Ci +} = Components; + +function ValueExtractor(aConsole, aBundle) { + this.console = aConsole; + this.domBundle = aBundle; +} + +ValueExtractor.prototype = { + // This function takes a 'spec' object and destructures + // it to extract a value. If the value is of th wrong type, it + // warns the developer and returns undefined. + // expectType: is the type of a JS primitive (string, number, etc.) + // object: is the object from which to extract the value. + // objectName: string used to construct the developer warning. + // property: the name of the property being extracted. + // trim: boolean, if the value should be trimmed (used by string type). + extractValue({expectedType, object, objectName, property, trim}) { + const value = object[property]; + const isArray = Array.isArray(value); + // We need to special-case "array", as it's not a JS primitive. + const type = (isArray) ? 'array' : typeof value; + if (type !== expectedType) { + if (type !== 'undefined') { + this.console.warn(this.domBundle.formatStringFromName("ManifestInvalidType", + [objectName, property, expectedType], + 3)); + } + return undefined; + } + // Trim string and returned undefined if the empty string. + const shouldTrim = expectedType === 'string' && value && trim; + if (shouldTrim) { + return value.trim() || undefined; + } + return value; + }, + extractColorValue(spec) { + const value = this.extractValue(spec); + const DOMUtils = Cc['@mozilla.org/inspector/dom-utils;1'] + .getService(Ci.inIDOMUtils); + let color; + if (DOMUtils.isValidCSSColor(value)) { + color = value; + } else if (value) { + this.console.warn(this.domBundle.formatStringFromName("ManifestInvalidCSSColor", + [spec.property, value], + 2)); + } + return color; + } +}; +this.ValueExtractor = ValueExtractor; // jshint ignore:line +this.EXPORTED_SYMBOLS = ['ValueExtractor']; // jshint ignore:line |