Commit efe5fb38 authored by henry's avatar henry Committed by richard
Browse files

fixup! Bug 7494: Create local home page for TBB.

Bug 42072: Pass whether the browser is the stable version to the
about:tor window. This is to be used by the year end campaign, but we
also use it outside of the campaign as well.

Moreover, we can avoid the preprocessor, and this makes it easier to
test what the about:tor page would look like in the release, alpha or
nightly build using just the dev build.
parent 68e353d0
Loading
Loading
Loading
Loading
+5 −17
Original line number Diff line number Diff line
@@ -15,24 +15,12 @@ export class AboutTorChild extends JSWindowActorChild {
  handleEvent(event) {
    switch (event.type) {
      case "DOMContentLoaded":
        this.sendQuery("AboutTor:GetSearchOnionize").then(searchOnionize => {
          const onionizeEvent = new this.contentWindow.CustomEvent(
            "InitialSearchOnionize",
            {
              detail: Cu.cloneInto(searchOnionize, this.contentWindow),
            }
          );
          this.contentWindow.dispatchEvent(onionizeEvent);
        });

        this.sendQuery("AboutTor:GetMessage").then(messageData => {
          const messageEvent = new this.contentWindow.CustomEvent(
            "MessageData",
            {
              detail: Cu.cloneInto(messageData, this.contentWindow),
            }
        this.sendQuery("AboutTor:GetInitialData").then(data => {
          const initialDataEvent = new this.contentWindow.CustomEvent(
            "InitialData",
            { detail: Cu.cloneInto(data, this.contentWindow) }
          );
          this.contentWindow.dispatchEvent(messageEvent);
          this.contentWindow.dispatchEvent(initialDataEvent);
        });
        break;
      case "SubmitSearchOnionize":
+8 −4
Original line number Diff line number Diff line
import { AppConstants } from "resource://gre/modules/AppConstants.sys.mjs";

const lazy = {};

ChromeUtils.defineESModuleGetters(lazy, {
@@ -8,10 +10,12 @@ export class AboutTorParent extends JSWindowActorParent {
  receiveMessage(message) {
    const onionizePref = "torbrowser.homepage.search.onionize";
    switch (message.name) {
      case "AboutTor:GetMessage":
        return Promise.resolve(lazy.AboutTorMessage.getNext());
      case "AboutTor:GetSearchOnionize":
        return Promise.resolve(Services.prefs.getBoolPref(onionizePref, false));
      case "AboutTor:GetInitialData":
        return Promise.resolve({
          messageData: lazy.AboutTorMessage.getNext(),
          isStable: AppConstants.MOZ_UPDATE_CHANNEL === "release",
          searchOnionize: Services.prefs.getBoolPref(onionizePref, false),
        });
      case "AboutTor:SetSearchOnionize":
        Services.prefs.setBoolPref(onionizePref, message.data);
        break;
+5 −12
Original line number Diff line number Diff line
@@ -35,11 +35,7 @@
        alt=""
        src="chrome://branding/content/tor-browser-logo.svg"
      />
      #if MOZ_UPDATE_CHANNEL == release
      <span data-l10n-id="tor-browser-home-heading-stable"></span>
      #else
      <span data-l10n-id="tor-browser-home-heading-testing"></span>
      #endif
      <span id="tor-browser-home-heading-text"></span>
    </h1>
    <form id="search-form" method="get" rel="noreferrer">
      <img
@@ -70,11 +66,10 @@
        <a data-l10n-name="update-link" target="_blank"></a>
      </span>
    </p>
    #if MOZ_UPDATE_CHANNEL == release
    <p class="home-message home-message-rotating">
    <p class="home-message home-message-rotating-stable">
      <span data-l10n-id="tor-browser-home-message-introduction"></span>
    </p>
    <p class="home-message home-message-rotating">
    <p class="home-message home-message-rotating-stable">
      <img
        class="message-emoji"
        alt=""
@@ -88,7 +83,7 @@
        ></a>
      </span>
    </p>
    <p class="home-message home-message-rotating">
    <p class="home-message home-message-rotating-stable">
      <img
        class="message-emoji"
        alt=""
@@ -102,8 +97,7 @@
        ></a>
      </span>
    </p>
    #else
    <p class="home-message home-message-rotating">
    <p class="home-message home-message-rotating-testing">
      <img
        class="message-emoji"
        alt=""
@@ -117,6 +111,5 @@
        ></a>
      </span>
    </p>
    #endif
  </body>
</html>
+85 −24
Original line number Diff line number Diff line
@@ -4,6 +4,9 @@ const SearchWidget = {
  _initialized: false,
  _initialOnionize: false,

  /**
   * Initialize the search form elements.
   */
  init() {
    this._initialized = true;

@@ -74,6 +77,12 @@ const SearchWidget = {
    );
  },

  /**
   * Set what the "Onionize" toggle state.
   *
   * @param {boolean} state - Whether the "Onionize" toggle should be switched
   *   on.
   */
  setOnionizeState(state) {
    if (!this._initialized) {
      this._initialOnionize = state;
@@ -84,21 +93,57 @@ const SearchWidget = {
  },
};

window.addEventListener("DOMContentLoaded", () => {
  SearchWidget.init();
});
const MessageArea = {
  _initialized: false,
  _messageData: null,
  _isStable: null,

window.addEventListener("InitialSearchOnionize", event => {
  SearchWidget.setOnionizeState(!!event.detail);
});
  /**
   * Initialize the message area and heading once elements are available.
   */
  init() {
    this._initialized = true;
    this._update();
  },

  /**
   * Set the message data and stable release flag.
   *
   * @param {MessageData} messageData - The message data, indicating which
   *   message to show.
   * @param {boolean} isStable - Whether this is the stable release version.
   */
  setMessageData(messageData, isStable) {
    this._messageData = messageData;
    this._isStable = isStable;
    this._update();
  },

  _update() {
    if (!this._initialized) {
      return;
    }

window.addEventListener("MessageData", event => {
  const updatedElement = document.getElementById("home-message-updated");
  const { updateVersion, updateURL, number } = event.detail;
    document
      .querySelector(".home-message.shown-message")
      ?.classList.remove("shown-message");

    if (!this._messageData) {
      return;
    }

    // Set heading.
    document.l10n.setAttributes(
      document.getElementById("tor-browser-home-heading-text"),
      this._isStable
        ? "tor-browser-home-heading-stable"
        : "tor-browser-home-heading-testing"
    );

    const { updateVersion, updateURL, number } = this._messageData;

    if (updateVersion) {
      const updatedElement = document.getElementById("home-message-updated");
      updatedElement.querySelector("a").href = updateURL;
      document.l10n.setAttributes(
        updatedElement.querySelector("span"),
@@ -107,9 +152,25 @@ window.addEventListener("MessageData", event => {
      );
      updatedElement.classList.add("shown-message");
    } else {
    const messageElements = document.querySelectorAll(".home-message-rotating");
      const messageElements = document.querySelectorAll(
        this._isStable
          ? ".home-message-rotating-stable"
          : ".home-message-rotating-testing"
      );
      messageElements[number % messageElements.length].classList.add(
        "shown-message"
      );
    }
  },
};

window.addEventListener("DOMContentLoaded", () => {
  SearchWidget.init();
  MessageArea.init();
});

window.addEventListener("InitialData", event => {
  const { isStable, searchOnionize, messageData } = event.detail;
  SearchWidget.setOnionizeState(!!searchOnionize);
  MessageArea.setMessageData(messageData, !!isStable);
});
+1 −1
Original line number Diff line number Diff line
browser.jar:
  content/browser/abouttor/aboutTor.css           (content/aboutTor.css)
  content/browser/abouttor/aboutTor.js            (content/aboutTor.js)
* content/browser/abouttor/aboutTor.html          (content/aboutTor.html)
  content/browser/abouttor/aboutTor.html          (content/aboutTor.html)
  content/browser/abouttor/dax-logo.svg           (content/dax-logo.svg)
  content/browser/abouttor/1f4e3-megaphone.svg    (content/1f4e3-megaphone.svg)
  content/browser/abouttor/26a1-high-voltage.svg  (content/26a1-high-voltage.svg)