/* 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'; module.metadata = { "stability": "unstable" }; const { Cc, Ci, Cu } = require('chrome'); const { on } = require('../system/events'); const { id, preferencesBranch } = require('../self'); const { localizeInlineOptions } = require('../l10n/prefs'); const { AddonManager } = Cu.import("resource://gre/modules/AddonManager.jsm"); const DEFAULT_OPTIONS_URL = 'data:text/xml,<placeholder/>'; const VALID_PREF_TYPES = ['bool', 'boolint', 'integer', 'string', 'color', 'file', 'directory', 'control', 'menulist', 'radio']; function enable(preferences) { validate(preferences); setDefaults(preferences, preferencesBranch); // allow the use of custom options.xul AddonManager.getAddonByID(id, (addon) => { if (addon.optionsURL === DEFAULT_OPTIONS_URL) on('addon-options-displayed', onAddonOptionsDisplayed, true); }) function onAddonOptionsDisplayed({ subject: doc, data }) {
* The |AnimationPlayer| actor provides attributes and methods to inspect an * animation as well as pause/resume/seek it. * * The Web Animation spec implementation is ongoing in Gecko, and so this set * of actors should evolve when the implementation progresses. * * References: * - WebAnimation spec: * http://w3c.github.io/web-animations/ * - WebAnimation WebIDL files: * /dom/webidl/Animation*.webidl */ const {Cu} = require("chrome"); const promise = require("promise"); const {Task} = Cu.import("resource://gre/modules/Task.jsm", {}); const protocol = require("devtools/server/protocol"); const {ActorClass, Actor, FrontClass, Front, Arg, method, RetVal, types} = protocol; // Make sure the nodeActor type is know here. const {NodeActor} = require("devtools/server/actors/inspector"); const events = require("sdk/event/core"); // Types of animations. const ANIMATION_TYPES = { CSS_ANIMATION: "cssanimation", CSS_TRANSITION: "csstransition", UNKNOWN: "unknown" }; /**
const { Cc, Ci, Cu } = require("chrome"); const repo = require("./repo"); const main = require("./main"); const windowUtil = require("sdk/window/utils"); const tabs = require("sdk/tabs"); const tabUtil = require("sdk/tabs/utils"); const promise = require("sdk/core/promise"); const timers = require("sdk/timers"); const tools = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}).devtools; const TargetFactory = tools.TargetFactory; let httpServer = createServer(); httpServer.start(-1); let tab1 = tabs.activeTab; let tab2 = null; // fixme: navigateToOtherPage -> navigateToNoScriptPage exports["test add-on"] = function(assert, done) { assert.ok(getToolbarButtonEl() != null, "Retire toolbarbutton should exist"); repo.download().then(() => { createTabAndMakeRequest(assert) .then(waitForScanner) .then(test_toolbarbuttonBadgeShouldShowVulnerableCount) .then(test_toolbarbuttonShouldOpenWebConsole) .then(test_thereShouldBeSixEntriesInWebConsoleLog) .then(activateTab1) .then(test_toolbarbuttonBadgeShouldBeHidden) .then(activateTab2) .then(test_toolbarbuttonBadgeShouldBeVisible)
/* See license.txt for terms of usage */ "use strict"; const { Cu, Ci } = require("chrome"); const { gDevTools } = Cu.import("resource:///modules/devtools/gDevTools.jsm", {}); var self = require("sdk/self"); function main(options, callbacks) { let styleUrl = self.data.url("theme.css"); // Register new developer tools theme. gDevTools.registerTheme({ id: "custom-theme", label: "Custom theme", stylesheets: [ "chrome://browser/skin/devtools/light-theme.css", styleUrl ], classList: ["theme-light", "custom-theme"], }); } function onUnload(reason) { gDevTools.unregisterTheme("custom-theme"); } exports.main = main; exports.onUnload = onUnload;
'use strict'; var utils = require('./utils'); var config; const { Cc, Ci, Cr, Cu, CC} = require('chrome'); Cu.import('resource://gre/modules/Services.jsm'); let settings; function readFileAsDataURL(file, mimetype, callback) { let XMLHttpRequest = CC('@mozilla.org/xmlextras/xmlhttprequest;1'); let req = new XMLHttpRequest(); let url = Services.io.newFileURI(file).spec; req.open('GET', url, false); req.responseType = 'blob'; try { req.send(null); } catch (e) { dump('XMLHttpRequest.send error: ' + e + '\n'); } // Convert the blob to a base64 encoded data URI let FileReader = CC('@mozilla.org/files/filereader;1'); let reader = new FileReader(); reader.onload = function() { let dataURL = reader.result; // There is a bug in XMLHttpRequest and file:// URL, // the mimetype ends up always being application/xml... dataURL = dataURL.replace('application/xml', mimetype); callback(dataURL); };
"use strict"; // LIBRARY const {Cu} = require("chrome"); const { addDebuggerToGlobal } = Cu.import("resource://gre/modules/jsdebugger.jsm"); addDebuggerToGlobal(this); const P = Object.getPrototypeOf; //console.log('Debugger:', typeof Debugger, Object.getOwnPropertyNames(Debugger), Object.getOwnPropertyNames(P(Debugger))) // Safer and more declarative replacement for resumption value Debugger.Resumption = { return : function(value){ return {return: value}; }, yield : function(value){ return {yield: value}; }, throw : function(value){ return {throw: value}; }, stop : null, continue : undefined }; function allKeys(o){ console.group() while(o !== null){ console.log(Object.getOwnPropertyNames(o)) o = P(o)
/* 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/. */ const {Cc, Ci, Cu, CC} = require("chrome"); const protocol = require("devtools/server/protocol"); const {Arg, method, RetVal} = protocol; const {Promise: promise} = Cu.import("resource://gre/modules/Promise.jsm", {}); Cu.import("resource://gre/modules/Services.jsm"); exports.register = function(handle) { handle.addGlobalActor(PreferenceActor, "preferenceActor"); }; exports.unregister = function(handle) { }; let PreferenceActor = exports.PreferenceActor = protocol.ActorClass({ typeName: "preference", getBoolPref: method(function(name) { return Services.prefs.getBoolPref(name); }, { request: { value: Arg(0) }, response: { value: RetVal("boolean") } }), getCharPref: method(function(name) { return Services.prefs.getCharPref(name); }, {
//define contstants const {Cu} = require("chrome"); //import LightweightThemeManager - the one responsible for handling Personas. const Iservices = Cu.import('resource://gre/modules/Services.jsm').Services; const econsole = Iservices.console; //define class element var JSimpleDebugger = { //define function element write: function (args) { econsole.logStringMessage(args); }, dump: function(obj,level) { //based on http://binnyva.blogspot.com/2005/10/dump-function-javascript-equivalent-of.html var dumped_text = ""; if(!level) level = 0; //The padding given at the beginning of the line. var level_padding = ""; for(var j=0;j<level+1;j++) level_padding += " "; if(typeof(obj) == 'object') { for(var item in obj) { var value = obj[item]; if(typeof(value) == 'object') { dumped_text += level_padding + "'" + item + "' ...\n";
.then(null, function onError(aReason) { Cu.reportError("WebAudioEditorPanel open failed. " + aReason.error + ": " + aReason.message); });
const {Cu} = require("chrome"); const {DebuggerClient} = Cu.import("resource://gre/modules/devtools/dbg-client.jsm", {}); const {Devices} = Cu.import("resource://gre/modules/devtools/Devices.jsm"); let {gDevTools} = Cu.import("resource:///modules/devtools/gDevTools.jsm", {}); let {devtools} = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}); Cu.import("resource://gre/modules/Services.jsm"); const gcli = require("./devtools/gcli"); const task = require("./util/task"); const server = require("./chromium/server"); const timers = require("sdk/timers"); const { notify } = require("sdk/notifications"); const {ConnectionManager} = devtools.require("devtools/client/connection-manager"); const {USBRuntime} = devtools.require("devtools/webide/runtimes"); const {AppManager} = devtools.require("devtools/webide/app-manager"); let winObserver = function(win, topic) { if (topic == "domwindowopened") { win.addEventListener("load", function onLoadWindow() { win.removeEventListener("load", onLoadWindow, false); if (win.document.documentURI == "chrome://webide/content/webide.xul") { win.setTimeout(() => onWebIDEWindowOpen(win), 0); } }, false); } } Services.ww.registerNotification(winObserver); function onWebIDEWindowOpen(window) {
'use strict'; const { Cc, Ci, Cr, Cu } = require('chrome'); Cu.import('resource://gre/modules/osfile.jsm'); const utils = require('./utils'); const webappZip = require('./webapp-zip'); const RE_SECTION_LINE = /\[(.*)\]/; const RE_IMPORT_LINE = /@import url\((.*)\)/; const RE_PROPERTY_LINE = /(.*)\s*[:=]\s*(.*)/; const RE_INI_FILE = /locales[\/\\].+\.ini$/; const MODNAME = 'multilocale'; // Make all timestamps the same so we always generate the same // output zip file for the same inputs const DEFAULT_TIME = 0; function L10nManager(gaiaDir, sharedDir, localesFilePath, localeBasedir) { function checkArg(arg) { return new Boolean(arg); } if (arguments.length !== 4 && !Array.prototype.every.call(arguments, checkArg)) { throw new TypeError('Illegal constructor'); } var self = this; var localesFile = utils.resolve(localesFilePath, gaiaDir); var baseDir = utils.resolve(localeBasedir, gaiaDir); [utils.getFile(gaiaDir), utils.getFile(sharedDir), localesFile, baseDir]
}).then(null, function onError(err) { Cu.reportError(err); });
removeEventListener: (type, handler) => { return this.removeEventListenerForElement(id, type, handler); }, computedStyle: { getPropertyValue: property => this.getComputedStylePropertyValue(id, property) }, classList }; this.elements.set(id, element); return element; }, get content() { if (!this._content || Cu.isDeadWrapper(this._content)) { return null; } return this._content; }, /** * The canvasFrame anonymous content container gets zoomed in/out with the * page. If this is unwanted, i.e. if you want the inserted element to remain * unzoomed, then this method can be used. * * Consumers of the CanvasFrameAnonymousContentHelper should call this method, * it isn't executed automatically. Typically, AutoRefreshHighlighter can call * it when _update is executed. * * The matching element will be scaled down or up by 1/zoomLevel (using css
/* See license.txt for terms of usage */ "use strict"; module.metadata = { "stability": "unstable" }; const DEFAULT_LOCALE = "en-US"; const { Cu, Ci, Cc } = require("chrome"); const { Trace, TraceError } = require("../core/trace.js"); const { prefs } = require("sdk/simple-prefs"); Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource://gre/modules/PluralForm.jsm"); const stringBundleService = Services.strings; const categoryManager = Cc["@mozilla.org/categorymanager;1"]. getService(Ci.nsICategoryManager); let Locale = {}; Locale.$STR = function(name, bundle) { return Locale.$STRF(name, [], bundle); }; Locale.$STRF = function(name, args, bundle) { if (!name) return "";
* You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 'use strict'; var Cu = require('chrome').Cu; var debuggerSocketConnect = Cu.import('resource://gre/modules/devtools/dbg-client.jsm', {}).debuggerSocketConnect; var DebuggerClient = Cu.import('resource://gre/modules/devtools/dbg-client.jsm', {}).DebuggerClient; var Promise = require('../util/promise').Promise; var Connection = require('./connectors').Connection; /** * What port should we use by default? */ Object.defineProperty(exports, 'defaultPort', { get: function() { var Services = Cu.import('resource://gre/modules/Services.jsm', {}).Services; try { return Services.prefs.getIntPref('devtools.debugger.chrome-debugging-port'); } catch (ex) {
/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- * vim:set ts=2 sw=2 sts=2 et filetype=javascript * 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"; const {Cc,Ci,Cu,components} = require("chrome"); var NetUtil = {}; Cu.import("resource://gre/modules/NetUtil.jsm", NetUtil); NetUtil = NetUtil.NetUtil; // NetUtil.asyncCopy() uses this buffer length, and since we call it, for best // performance we use it, too. const BUFFER_BYTE_LEN = 0x8000; const PR_UINT32_MAX = 0xffffffff; const DEFAULT_CHARSET = "UTF-8"; exports.TextReader = TextReader; exports.TextWriter = TextWriter; /** * An input stream that reads text from a backing stream using a given text * encoding. * * @param inputStream * The stream is backed by this nsIInputStream. It must already be * opened. * @param charset * Text in inputStream is expected to be in this character encoding. If
const {Cc, Ci, Cu, ChromeWorker} = require("chrome"); Cu.import("resource://gre/modules/Task.jsm"); const {data} = require("sdk/self"); const test = require("sdk/test"); const {LWCAClassifier} = require("lwca_refined"); let scriptLoader = Cc["@mozilla.org/moz/jssubscript-loader;1"].getService(Ci.mozIJSSubScriptLoader); scriptLoader.loadSubScript(data.url("test/cnn_docs.js")); scriptLoader.loadSubScript(data.url("test/edRules_docs.js")); let useWhiteList = false; let whiteList = { "hobbies & interests": true, //"sports": true, //"politics": true, }; let useUrlSplitting = false; let urlSplitPattern = /[\/-]/; let outputSingleDoc = false; let outputSubSet = false; function testVisit(visit, doFulleTest=false) { if (!visit || !visit[0] || !visit[1]) return null; //console.log("Categorizing: ", visit[0], visit[1]); let titleCat, fulltextCat; let urlParts = ""; if (useUrlSplitting) { urlParts = visit[0].split(urlSplitPattern).join(" "); }
/* Any copyright is dedicated to the Public Domain. http://creativecommons.org/publicdomain/zero/1.0/ */ "use strict"; // Tests the Filter Editor Widget's add button const TEST_URI = "chrome://browser/content/devtools/filter-frame.xhtml"; const { Cu } = require("chrome"); const {CSSFilterEditorWidget} = require("devtools/shared/widgets/FilterWidget"); const { ViewHelpers } = Cu.import("resource:///modules/devtools/ViewHelpers.jsm", {}); const STRINGS_URI = "chrome://browser/locale/devtools/filterwidget.properties"; const L10N = new ViewHelpers.L10N(STRINGS_URI); add_task(function*() { yield promiseTab("about:blank"); let [host, win, doc] = yield createHost("bottom", TEST_URI); const container = doc.querySelector("#container"); let widget = new CSSFilterEditorWidget(container, "none"); const select = widget.el.querySelector("select"), add = widget.el.querySelector("#add-filter"); const TEST_DATA = [ { name: "blur", unit: "px", type: "length"
/* 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"; const { Cu } = require('chrome'); const { PageMod } = require('sdk/page-mod'); const tabs = require('sdk/tabs'); const { closeTab } = require('sdk/tabs/utils'); const promise = require('sdk/core/promise') const { getMostRecentBrowserWindow } = require('sdk/window/utils'); const { data } = require('sdk/self'); const { set } = require('sdk/preferences/service'); const { require: devtoolsRequire } = Cu.import("resource://devtools/shared/Loader.jsm", {}); const { DebuggerServer } = devtoolsRequire("devtools/server/main"); const { DebuggerClient } = devtoolsRequire("devtools/shared/client/main"); var gClient; var ok; var testName = 'testDebugger'; var iframeURL = 'data:text/html;charset=utf-8,' + testName; var TAB_URL = 'data:text/html;charset=utf-8,' + encodeURIComponent('<iframe src="' + iframeURL + '" />'); TAB_URL = data.url('index.html'); var mod; exports.testDebugger = function(assert, done) { ok = assert.ok.bind(assert); assert.pass('starting test'); set('devtools.debugger.log', true);
onStopRequest: function(request, context, statusCode) { let headers = { response: [], request: [] }; let win = NetworkHelper.getWindowForRequest(request); let Locale = { $STR: key => { try { return jsonViewStrings.GetStringFromName(key); } catch (err) { Cu.reportError(err); } } }; JsonViewUtils.exportIntoContentScope(win, Locale, "Locale"); Events.once(win, "DOMContentLoaded", event => { Cu.exportFunction(this.postChromeMessage.bind(this), win, { defineAs: "postChromeMessage" }); }); // The request doesn't have to be always nsIHttpChannel // (e.g. in case of data: URLs) if (request instanceof Ci.nsIHttpChannel) { request.visitResponseHeaders({ visitHeader: function(name, value) { headers.response.push({name: name, value: value}); } }); request.visitRequestHeaders({ visitHeader: function(name, value) { headers.request.push({name: name, value: value}); } }); } let outputDoc = ""; try { headers = JSON.stringify(headers); outputDoc = this.toHTML(this.data, headers, this.uri); } catch (e) { Cu.reportError("JSON Viewer ERROR " + e); outputDoc = this.toErrorPage(e, this.data, this.uri); } let storage = Cc["@mozilla.org/storagestream;1"] .createInstance(Ci.nsIStorageStream); storage.init(SEGMENT_SIZE, 0xffffffff, null); let out = storage.getOutputStream(0); let binout = Cc["@mozilla.org/binaryoutputstream;1"] .createInstance(Ci.nsIBinaryOutputStream); binout.setOutputStream(out); binout.writeUtf8Z(outputDoc); binout.close(); // We need to trim 4 bytes off the front (this could be underlying bug). let trunc = 4; let instream = storage.newInputStream(trunc); // Pass the data to the main content listener this.listener.onDataAvailable(this.channel, context, instream, 0, instream.available()); this.listener.onStopRequest(this.channel, context, statusCode); this.listener = null; },
const {Cc,Ci,Cu,Cr} = require("chrome"); const ObservableObject = require("devtools/shared/observable-object"); const promise = require("devtools/toolkit/deprecated-sync-thenables"); const {EventEmitter} = Cu.import("resource://gre/modules/devtools/event-emitter.js"); const {generateUUID} = Cc['@mozilla.org/uuid-generator;1'].getService(Ci.nsIUUIDGenerator); const {FileUtils} = Cu.import("resource://gre/modules/FileUtils.jsm"); const { indexedDB } = require("sdk/indexed-db"); /** * IndexedDB wrapper that just save project objects * * The only constraint is that project objects have to have * a unique `location` object. */ const IDB = { _db: null, databaseName: "AppProjects", open: function () { let deferred = promise.defer(); let request = indexedDB.open(IDB.databaseName, 5); request.onerror = function(event) { deferred.reject("Unable to open AppProjects indexedDB: " + this.error.name + " - " + this.error.message ); }; request.onupgradeneeded = function(event) { let db = event.target.result; db.createObjectStore("projects", { keyPath: "location" });
Events.once(win, "DOMContentLoaded", event => { Cu.exportFunction(this.postChromeMessage.bind(this), win, { defineAs: "postChromeMessage" }); });
var { Cc, Ci, Cu, Cr, components } = require("chrome"); var { atob, btoa } = Cu.import("resource://gre/modules/Services.jsm", {}); exports.DatawakeHTTPHelper = DatawakeHTTPHelper; function DatawakeHTTPHelper() { this.wrappedJSObject = this; this.handlers = []; } DatawakeHTTPHelper.proxyProtocolService = Cc["@mozilla.org/network/protocol-proxy-service;1"].getService(Ci.nsIProtocolProxyService); DatawakeHTTPHelper.ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService); DatawakeHTTPHelper.httpProtocolHandler = DatawakeHTTPHelper.ioService.getProtocolHandler("http").QueryInterface(Ci.nsIHttpProtocolHandler); DatawakeHTTPHelper.buildProxyInfo = function(spec) { var flags = Ci.nsIProxyInfo.TRANSPARENT_PROXY_RESOLVES_HOST; if (spec.type === "http") { return DatawakeHTTPHelper.proxyProtocolService.newProxyInfo("http", spec.host, spec.port, flags, 0xffffffff, null); } return null; }; DatawakeHTTPHelper.LocalConnectionHandler = function(callback) { this.callback = callback; this.channel = null; this.listener = null;
const { EventTarget } = require("sdk/event/target"); const { Class } = require("sdk/core/heritage"); const { Locale } = require("../core/locale.js"); const { DomTree } = require("../dom/domTree.js"); const { DomProvider } = require("../dom/domProvider.js"); const { BaseOverlay } = require("../chrome/base-overlay.js"); const { Theme } = require("../chrome/theme.js"); const { Win } = require("../core/window.js"); const { DomSidePanel } = require("../dom/domSidePanel.js"); const { ToggleSideBarButton } = require("../chrome/toggle-sidebar-button.js"); const { RuleViewOverlay } = require("./rule-view-overlay.js"); const { ComputedViewOverlay } = require("./computed-view-overlay.js"); const { FontInspectorOverlay } = require("./font-inspector-overlay.js"); const { LayoutViewOverlay } = require("./layout-view-overlay.js"); const { Services } = Cu.import("resource://gre/modules/Services.jsm", {}); const { devtools } = Cu.import("resource://gre/modules/devtools/Loader.jsm", {}); const { SelectorSearch } = devtools["require"]("devtools/inspector/selector-search"); /** * @overlay This object is responsible for the Inspector panel * customization. * * It should append DOM side panel displaying properties of the * selected node (if Firebug theme is activated). Blocked by: * New API: WalkerFront.getObjectActorFromNodeActor() * https://bugzilla.mozilla.org/show_bug.cgi?id=1035742 */ const InspectorOverlay = Class( /** @lends InspectorOverlay */ {
/* 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"; module.metadata = { "stability": "experimental", "engines": { "Firefox": "> 28" } }; const { Cu } = require("chrome"); const { CustomizableUI } = Cu.import('resource:///modules/CustomizableUI.jsm', {}); const { subscribe, send, Reactor, foldp, lift, merges } = require("../../event/utils"); const { InputPort } = require("../../input/system"); const { OutputPort } = require("../../output/system"); const { Interactive } = require("../../input/browser"); const { CustomizationInput } = require("../../input/customizable-ui"); const { pairs, map, isEmpty, object, each, keys, values } = require("../../util/sequence"); const { curry, flip } = require("../../lang/functional"); lazyRequire(this, "diffpatcher/index", "patch", "diff"); const prefs = require("../../preferences/service"); lazyRequire(this, "../../window/utils", "getByOuterId"); lazyRequire(this, '../../private-browsing/utils', "ignoreWindow"); const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; const PREF_ROOT = "extensions.sdk-toolbar-collapsed.";
eval: function (js) { // We have to use a sandbox, as CSP prevent us from using eval on apps... let sb = Cu.Sandbox(this.content, { sandboxPrototype: this.content }); return Cu.evalInSandbox(js, sb); },
stopAnimationPlayerUpdates: method(function() { if (this.observer && !Cu.isDeadWrapper(this.observer)) { this.observer.disconnect(); } }, {
/* 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/. */ const { components, Cc, Ci, Cu } = require("chrome"); const unload = require("sdk/system/unload"); const {TextEncoder, OS} = Cu.import("resource://gre/modules/osfile.jsm", {}); const PERMS_DIRECTORY = parseInt("0755", 8); function Logger(aOptions) { aOptions = aOptions || {}; this._dir = null; this._file = null; this._active = false; this._firstLog = false; this.dir = aOptions.dir; unload.ensure(this, 'unload'); this._encoder = new TextEncoder(); } Logger.prototype = { get file() { return this._file; }, get active() {
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */ "use strict"; const MAX_ORDINAL = 99; const ZOOM_PREF = "devtools.toolbox.zoomValue"; const MIN_ZOOM = 0.5; const MAX_ZOOM = 2; let {Cc, Ci, Cu} = require("chrome"); let {Promise: promise} = require("resource://gre/modules/Promise.jsm"); let EventEmitter = require("devtools/toolkit/event-emitter"); let Telemetry = require("devtools/shared/telemetry"); let HUDService = require("devtools/webconsole/hudservice"); Cu.import("resource://gre/modules/XPCOMUtils.jsm"); Cu.import("resource://gre/modules/Services.jsm"); Cu.import("resource:///modules/devtools/gDevTools.jsm"); Cu.import("resource:///modules/devtools/scratchpad-manager.jsm"); Cu.import("resource:///modules/devtools/DOMHelpers.jsm"); Cu.import("resource://gre/modules/Task.jsm"); loader.lazyGetter(this, "Hosts", () => require("devtools/framework/toolbox-hosts").Hosts); loader.lazyImporter(this, "CommandUtils", "resource:///modules/devtools/DeveloperToolbar.jsm"); loader.lazyGetter(this, "toolboxStrings", () => { let bundle = Services.strings.createBundle("chrome://browser/locale/devtools/toolbox.properties"); return (name, ...args) => { try { if (!args.length) {
const { Request } = require("sdk/request"); const { pathFor } = require("sdk/system"); const file = require("sdk/io/file"); const { URL } = require("sdk/url"); const { extend } = require("sdk/util/object"); const { Loader } = require("sdk/test/loader"); const options = require("sdk/test/options"); const loader = Loader(module); const httpd = loader.require("./lib/httpd"); if (options.parseable || options.verbose) loader.sandbox("./lib/httpd").DEBUG = true; const { startServerAsync } = httpd; const { Cc, Ci, Cu } = require("chrome"); const { Services } = Cu.import("resource://gre/modules/Services.jsm"); // Use the profile directory for the temporary files as that will be deleted // when tests are complete const basePath = pathFor("ProfD"); const port = 8099; exports.testOptionsValidator = function(assert) { // First, a simple test to make sure we didn't break normal functionality. assert.throws(function () { Request({ url: null }); }, /The option "url" is invalid./);