示例#1
0
/* 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 }) {
示例#2
0
 * 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"
};

/**
示例#3
0
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;
示例#5
0
'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)
示例#7
0
/* 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);
  }, {
示例#8
0
//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";
示例#9
0
 .then(null, function onError(aReason) {
   Cu.reportError("WebAudioEditorPanel open failed. " +
                  aReason.error + ": " + aReason.message);
 });
示例#10
0
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) {
示例#11
0
'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]
示例#12
0
 }).then(null, function onError(err) {
   Cu.reportError(err);
 });
示例#13
0
      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
示例#14
0
/* 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 "";
示例#15
0
文件: rdp.js 项目: Acidburn0zzz/gcli
 * 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) {
示例#16
0
/* -*- 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
示例#17
0
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(" ");
  }
示例#18
0
/* 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"
示例#19
0
文件: main.js 项目: 70599/Waterfox
/* 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);
示例#20
0
  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;
  },
示例#21
0
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" });
示例#22
0
 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;
示例#24
0
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 */
{
示例#25
0
文件: view.js 项目: MrAlex94/Waterfox
/* 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.";

示例#26
0
 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);
 },
示例#27
0
 stopAnimationPlayerUpdates: method(function() {
   if (this.observer && !Cu.isDeadWrapper(this.observer)) {
     this.observer.disconnect();
   }
 }, {
示例#28
0
/* 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() {
示例#29
0
 * 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) {
示例#30
0
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./);