Пример #1
0
    exec: function (args, context) {
      let env = context.environment;
      let { document } = env;

      // Calling the command again after the measuring tool has been shown once,
      // hides it.
      if (highlighters.has(document)) {
        let { highlighter } = highlighters.get(document);
        highlighter.destroy();
        return false;
      }

      // Otherwise, display the measuring tool.
      let environment = new HighlighterEnvironment();
      environment.initFromWindow(env.window);
      let highlighter = new MeasuringToolHighlighter(environment);

      // Store the instance of the measuring tool highlighter for this document
      // so we can hide it later.
      highlighters.set(document, { highlighter, environment });

      // Listen to the highlighter's destroy event which may happen if the
      // window is refreshed or closed with the measuring tool shown.
      events.once(highlighter, "destroy", () => {
        if (highlighters.has(document)) {
          let { environment: toDestroy } = highlighters.get(document);
          toDestroy.destroy();
          highlighters.delete(document);
        }
      });

      highlighter.show();
      return true;
    }
Пример #2
0
    exec: function(args, context) {
      let env = context.environment;
      let { document } = env;
      let id = getOuterId(env.window);

      // Calling the command again after the rulers have been shown once hides
      // them.
      if (highlighters.has(document)) {
        let { highlighter } = highlighters.get(document);
        highlighter.destroy();
        return {visible: false, id};
      }

      // Otherwise, display the rulers.
      let environment = new HighlighterEnvironment();
      environment.initFromWindow(env.window);
      let highlighter = new RulersHighlighter(environment);

      // Store the instance of the rulers highlighter for this document so we
      // can hide it later.
      highlighters.set(document, { highlighter, environment });

      // Listen to the highlighter's destroy event which may happen if the
      // window is refreshed or closed with the rulers shown.
      events.once(highlighter, "destroy", () => {
        if (highlighters.has(document)) {
          let { environment } = highlighters.get(document);
          environment.destroy();
          highlighters.delete(document);
        }
      });

      highlighter.show();
      return {visible: true, id};
    }
Пример #3
0
  getStyleSheets: function () {
    let deferred = promise.defer();

    events.once(this, "document-load", (styleSheets) => {
      deferred.resolve(styleSheets);
    });
    this.newDocument();

    return deferred.promise;
  },
Пример #4
0
  getText: function() {
    let deferred = promise.defer();

    events.once(this, "source-load", (source) => {
      let longStr = new ShortLongString(source);
      deferred.resolve(longStr);
    });
    this.fetchSource();

    return deferred.promise;
  },
Пример #5
0
    exec: function(args, context) {
      let env = context.environment;
      let { target } = env;

      if (highlighters.has(env.document)) {
        highlighters.get(env.document).highlighter.destroy();
        return;
      }

      // Build a tab context for the highlighter (which normally takes a
      // TabActor as parameter to its constructor)
      let tabContext = {
        browser: env.chromeWindow.gBrowser.getBrowserForDocument(env.document),
        window: env.window
      };

      let emitToContext = (type, data) =>
        events.emit(tabContext, type, Object.assign({isTopLevel: true}, data))

      target.once("navigate", emitToContext);
      target.once("will-navigate", emitToContext);

      let highlighter = new RulersHighlighter(tabContext);

      highlighters.set(env.document, { highlighter, listener: emitToContext });

      events.once(highlighter, "destroy", () => {
        if (highlighters.has(env.document)) {
          let { highlighter, listener } = highlighters.get(env.document);

          target.off("navigate", listener);
          target.off("will-navigate", listener);

          highlighters.delete(env.document);
        }

        eventEmitter.emit("changed", { target });
      });

      highlighter.show();

      eventEmitter.emit("changed", { target });
    }
 once(...args) {
     once(this, ...args);
     return this;
 }