Commit c8825f75 authored by Tomislav Jovanovic's avatar Tomislav Jovanovic
Browse files

Bug 1708243 - Part 2: stop using sender data from the child process r=robwu,agi

parent 34c90062
Loading
Loading
Loading
Loading
+0 −1
Original line number Diff line number Diff line
@@ -26,7 +26,6 @@ module.exports = {
    replaceUrlInTab: true,
    searchInitialized: true,
    sidebarActionFor: true,
    tabGetSender: true,
    tabTracker: true,
    waitForTabLoaded: true,
    windowTracker: true,
+0 −28
Original line number Diff line number Diff line
@@ -44,34 +44,6 @@ function isPrivateTab(nativeTab) {
  return PrivateBrowsingUtils.isBrowserPrivate(nativeTab.linkedBrowser);
}

// This function is pretty tightly tied to Extension.jsm.
// Its job is to fill in the |tab| property of the sender.
const getSender = (extension, target, sender) => {
  let tabId;
  if ("tabId" in sender) {
    // The message came from a privileged extension page running in a tab. In
    // that case, it should include a tabId property (which is filled in by the
    // page-open listener below).
    tabId = sender.tabId;
    delete sender.tabId;
  } else if (
    ExtensionCommon.instanceOf(target, "XULFrameElement") ||
    ExtensionCommon.instanceOf(target, "HTMLIFrameElement")
  ) {
    tabId = tabTracker.getBrowserData(target).tabId;
  }

  if (tabId) {
    let tab = extension.tabManager.get(tabId, null);
    if (tab) {
      sender.tab = tab.convert();
    }
  }
};

// Used by Extension.jsm
global.tabGetSender = getSender;

/* eslint-disable mozilla/balanced-listeners */
extensions.on("uninstalling", (msg, extension) => {
  if (extension.uninstallURL) {
+0 −25
Original line number Diff line number Diff line
@@ -599,31 +599,6 @@ extensions.on("startup", (type, extension) => {
  );
});

// This function is pretty tightly tied to Extension.jsm.
// Its job is to fill in the |tab| property of the sender.
const getSender = (extension, target, sender) => {
  let tabId = -1;
  if ("tabId" in sender) {
    // The message came from a privileged extension page running in a tab. In
    // that case, it should include a tabId property (which is filled in by the
    // page-open listener below).
    tabId = sender.tabId;
    delete sender.tabId;
  } else if (ChromeUtils.getClassName(target) == "XULFrameElement") {
    tabId = tabTracker.getBrowserData(target).tabId;
  }

  if (tabId != null && tabId >= 0) {
    const tab = extension.tabManager.get(tabId, null);
    if (tab) {
      sender.tab = tab.convert();
    }
  }
};

// Used by Extension.jsm
global.tabGetSender = getSender;

/* eslint-disable mozilla/balanced-listeners */
extensions.on("page-shutdown", (type, context) => {
  if (context.viewType == "tab") {
+2 −2
Original line number Diff line number Diff line
@@ -1228,8 +1228,8 @@ public class WebExtensionController {
        callback.resolveTo(response);
    }

    private GeckoResult<WebExtension> extensionFromBundle(final GeckoBundle message) {
        final String extensionId = message.getString("extensionId");
    private GeckoResult<WebExtension> extensionFromBundle(final GeckoBundle sender) {
        final String extensionId = sender.getString("id");
        return mExtensions.get(extensionId);
    }

+5 −6
Original line number Diff line number Diff line
@@ -219,24 +219,23 @@ class EmbedderPort {
}

class GeckoViewConnection {
  constructor(sender, nativeApp, allowContentMessaging) {
  constructor(sender, target, nativeApp, allowContentMessaging) {
    this.sender = sender;
    this.target = target;
    this.nativeApp = nativeApp;
    this.allowContentMessaging = allowContentMessaging;

    if (!this.allowContentMessaging && !sender.verified) {
    if (!allowContentMessaging && sender.envType !== "addon_child") {
      throw new Error(`Unexpected messaging sender: ${JSON.stringify(sender)}`);
    }
  }

  get dispatcher() {
    const target = this.sender.actor.browsingContext.top.embedderElement;

    if (this.sender.envType === "addon_child") {
      // If this is a WebExtension Page we will have a GeckoSession associated
      // to it and thus a dispatcher.
      const dispatcher = GeckoViewUtils.getDispatcherForWindow(
        target.ownerGlobal
        this.target.ownerGlobal
      );
      if (dispatcher) {
        return dispatcher;
@@ -252,7 +251,7 @@ class GeckoViewConnection {
      // If this message came from a content script, send the message to
      // the corresponding tab messenger so that GeckoSession can pick it
      // up.
      return GeckoViewUtils.getDispatcherForWindow(target.ownerGlobal);
      return GeckoViewUtils.getDispatcherForWindow(this.target.ownerGlobal);
    }

    throw new Error(`Uknown sender envType: ${this.sender.envType}`);
Loading