[tbb-commits] [Git][tpo/applications/tor-browser][tor-browser-128.4.0esr-14.5-1] 3 commits: fixup! Bug 16940: After update, load local change notes.

morgan (@morgan) git at gitlab.torproject.org
Tue Oct 29 21:10:35 UTC 2024



morgan pushed to branch tor-browser-128.4.0esr-14.5-1 at The Tor Project / Applications / Tor Browser


Commits:
6d2b4add by Henry Wilkes at 2024-10-29T21:02:40+00:00
fixup! Bug 16940: After update, load local change notes.

Bug 42186: Revert the entire commit.

- - - - -
201d50e6 by Henry Wilkes at 2024-10-29T21:02:40+00:00
fixup! Add TorStrings module for localization

Bug 42186: Drop about:tbupdate.

- - - - -
b4b207fa by Henry Wilkes at 2024-10-29T21:02:40+00:00
fixup! Bug 7494: Create local home page for TBB.

Bug 42186: Move override page logic to about:tor commit.

- - - - -


15 changed files:

- − browser/actors/AboutTBUpdateChild.sys.mjs
- − browser/actors/AboutTBUpdateParent.sys.mjs
- browser/actors/moz.build
- − browser/base/content/abouttbupdate/aboutTBUpdate.css
- − browser/base/content/abouttbupdate/aboutTBUpdate.js
- − browser/base/content/abouttbupdate/aboutTBUpdate.xhtml
- browser/base/content/browser.js
- browser/base/jar.mn
- browser/components/BrowserContentHandler.sys.mjs
- browser/components/BrowserGlue.sys.mjs
- browser/components/about/AboutRedirector.cpp
- browser/components/about/components.conf
- toolkit/modules/RemotePageAccessManager.sys.mjs
- − toolkit/torbutton/chrome/locale/en-US/aboutTBUpdate.dtd
- toolkit/torbutton/jar.mn


Changes:

=====================================
browser/actors/AboutTBUpdateChild.sys.mjs deleted
=====================================
@@ -1,8 +0,0 @@
-// Copyright (c) 2020, The Tor Project, Inc.
-// See LICENSE for licensing information.
-//
-// vim: set sw=2 sts=2 ts=8 et syntax=javascript:
-
-import { RemotePageChild } from "resource://gre/actors/RemotePageChild.sys.mjs";
-
-export class AboutTBUpdateChild extends RemotePageChild {}


=====================================
browser/actors/AboutTBUpdateParent.sys.mjs deleted
=====================================
@@ -1,128 +0,0 @@
-// Copyright (c) 2020, The Tor Project, Inc.
-// See LICENSE for licensing information.
-//
-// vim: set sw=2 sts=2 ts=8 et syntax=javascript:
-
-import { AppConstants } from "resource://gre/modules/AppConstants.sys.mjs";
-
-const kRequestUpdateMessageName = "FetchUpdateData";
-
-/**
- * This code provides services to the about:tbupdate page. Whenever
- * about:tbupdate needs to do something chrome-privileged, it sends a
- * message that's handled here. It is modeled after Mozilla's about:home
- * implementation.
- */
-export class AboutTBUpdateParent extends JSWindowActorParent {
-  async receiveMessage(aMessage) {
-    if (aMessage.name == kRequestUpdateMessageName) {
-      return this.getReleaseNoteInfo();
-    }
-    return undefined;
-  }
-
-  get moreInfoURL() {
-    try {
-      return Services.prefs.getCharPref("torbrowser.post_update.url");
-    } catch (e) {}
-
-    // Use the default URL as a fallback.
-    return Services.urlFormatter.formatURLPref("startup.homepage_override_url");
-  }
-
-  // Read the text from the beginning of the changelog file that is located
-  // at TorBrowser/Docs/ChangeLog.txt (or,
-  // TorBrowser.app/Contents/Resources/TorBrowser/Docs/ on macOS, to support
-  // Gatekeeper signing) and return an object that contains the following
-  // properties:
-  //   version        e.g., Tor Browser 8.5
-  //   releaseDate    e.g., March 31 2019
-  //   releaseNotes   details of changes (lines 2 - end of ChangeLog.txt)
-  // We attempt to parse the first line of ChangeLog.txt to extract the
-  // version and releaseDate. If parsing fails, we return the entire first
-  // line in version and omit releaseDate.
-  async getReleaseNoteInfo() {
-    let info = { moreInfoURL: this.moreInfoURL };
-
-    try {
-      // "XREExeF".parent is the directory that contains firefox, i.e.,
-      // Browser/ or, TorBrowser.app/Contents/MacOS/ on macOS.
-      let f = Services.dirsvc.get("XREExeF", Ci.nsIFile).parent;
-      if (AppConstants.platform === "macosx") {
-        f = f.parent;
-        f.append("Resources");
-      }
-      f.append("TorBrowser");
-      f.append("Docs");
-      f.append("ChangeLog.txt");
-
-      // NOTE: We load in the entire file, but only use the first few lines
-      // before the first blank line.
-      const logLines = (await IOUtils.readUTF8(f.path))
-        .replace(/\n\r?\n.*/ms, "")
-        .split(/\n\r?/);
-
-      // Read the first line to get the version and date.
-      // Assume everything after the last "-" is the date.
-      const firstLine = logLines.shift();
-      const match = firstLine?.match(/(.*)-+(.*)/);
-      if (match) {
-        info.version = match[1].trim();
-        info.releaseDate = match[2].trim();
-      } else {
-        // No date.
-        info.version = firstLine?.trim();
-      }
-
-      // We want to read the rest of the release notes as a tree. Each entry
-      // will contain the text for that line.
-      // We choose a negative index for the top node of this tree to ensure no
-      // line will appear less indented.
-      const topEntry = { indent: -1, children: undefined };
-      let prevEntry = topEntry;
-
-      for (let line of logLines) {
-        const indent = line.match(/^ */)[0];
-        line = line.trim();
-        if (line.startsWith("*")) {
-          // Treat as a bullet point.
-          let entry = {
-            text: line.replace(/^\*\s/, ""),
-            indent: indent.length,
-          };
-          let parentEntry;
-          if (entry.indent > prevEntry.indent) {
-            // A sub-list of the previous item.
-            prevEntry.children = [];
-            parentEntry = prevEntry;
-          } else {
-            // Same list or end of sub-list.
-            // Search for the first parent whose indent comes before ours.
-            parentEntry = prevEntry.parent;
-            while (entry.indent <= parentEntry.indent) {
-              parentEntry = parentEntry.parent;
-            }
-          }
-          entry.parent = parentEntry;
-          parentEntry.children.push(entry);
-          prevEntry = entry;
-        } else if (prevEntry === topEntry) {
-          // Unexpected, missing bullet point on first line.
-          // Place as its own bullet point instead, and set as prevEntry for the
-          // next loop.
-          prevEntry = { text: line, indent: indent.length, parent: topEntry };
-          topEntry.children = [prevEntry];
-        } else {
-          // Append to the previous bullet point.
-          prevEntry.text += ` ${line}`;
-        }
-      }
-
-      info.releaseNotes = topEntry.children;
-    } catch (e) {
-      console.error(e);
-    }
-
-    return info;
-  }
-}


=====================================
browser/actors/moz.build
=====================================
@@ -90,9 +90,3 @@ FINAL_TARGET_FILES.actors += [
 BROWSER_CHROME_MANIFESTS += [
     "test/browser/browser.toml",
 ]
-
-if CONFIG["BASE_BROWSER_UPDATE"]:
-    FINAL_TARGET_FILES.actors += [
-        "AboutTBUpdateChild.sys.mjs",
-        "AboutTBUpdateParent.sys.mjs",
-    ]


=====================================
browser/base/content/abouttbupdate/aboutTBUpdate.css deleted
=====================================
@@ -1,70 +0,0 @@
-/*
- * Copyright (c) 2019, The Tor Project, Inc.
- * See LICENSE for licensing information.
- *
- * vim: set sw=2 sts=2 ts=8 et syntax=css:
- */
-
-:root {
-  --abouttor-text-color: white;
-  --abouttor-bg-toron-color: #420C5D;
-}
-
-body {
-  font-family: Helvetica, Arial, sans-serif;
-  color: var(--abouttor-text-color);
-  background-color: var(--abouttor-bg-toron-color);
-  margin-block: 40px;
-  margin-inline: 50px;
-  display: grid;
-  grid-template-columns: auto auto;
-  align-items: baseline;
-  gap: 40px 50px;
-}
-
-body > *:not([hidden]) {
-  display: contents;
-}
-
-.label-column {
-  grid-column: 1;
-}
-
-.content {
-  grid-column: 2;
-}
-
-.content.en-US-content {
-  font-family: monospace;
-  line-height: 1.4;
-}
-
-.label-column, .content {
-  margin: 0;
-  padding: 0;
-  font-size: 1rem;
-  font-weight: normal;
-}
-
-a {
-  color: inherit;
-}
-
-.no-line-break {
-  white-space: nowrap;
-}
-
-ul {
-  padding-inline: 1em 0;
-}
-
-h3, h4 {
-  font-size: 1.1rem;
-  font-weight: bold;
-}
-
-h3.build-system-heading {
-  font-size: 1.5rem;
-  font-weight: normal;
-  margin-block-start: 3em;
-}


=====================================
browser/base/content/abouttbupdate/aboutTBUpdate.js deleted
=====================================
@@ -1,110 +0,0 @@
-// Copyright (c) 2020, The Tor Project, Inc.
-// See LICENSE for licensing information.
-//
-// vim: set sw=2 sts=2 ts=8 et syntax=javascript:
-
-/* eslint-env mozilla/remote-page */
-
-/**
- * An object representing a bullet point in the release notes.
- *
- * typedef {Object} ReleaseBullet
- * @property {string} text - The text for this bullet point.
- * @property {?Array<ReleaseBullet>} children - A sub-list of bullet points.
- */
-
-/**
- * Fill an element with the given list of release bullet points.
- *
- * @param {Element} container - The element to fill with bullet points.
- * @param {Array<ReleaseBullet>} bulletPoints - The list of bullet points.
- * @param {string} [childTag="h3"] - The element tag name to use for direct
- *   children. Initially, the children are h3 sub-headings.
- */
-function fillReleaseNotes(container, bulletPoints, childTag = "h3") {
-  for (const { text, children } of bulletPoints) {
-    const childEl = document.createElement(childTag);
-    // Keep dashes like "[tor-browser]" on the same line by nowrapping the word.
-    for (const [index, part] of text.split(/(\S+-\S+)/).entries()) {
-      if (!part) {
-        continue;
-      }
-      const span = document.createElement("span");
-      span.textContent = part;
-      span.classList.toggle("no-line-break", index % 2);
-      childEl.appendChild(span);
-    }
-    container.appendChild(childEl);
-    if (children) {
-      if (childTag == "h3" && text.toLowerCase() === "build system") {
-        // Special case: treat the "Build System" heading's children as
-        // sub-headings.
-        childEl.classList.add("build-system-heading");
-        fillReleaseNotes(container, children, "h4");
-      } else {
-        const listEl = document.createElement("ul");
-        fillReleaseNotes(listEl, children, "li");
-        if (childTag == "li") {
-          // Insert within the "li" element.
-          childEl.appendChild(listEl);
-        } else {
-          container.appendChild(listEl);
-        }
-      }
-    }
-  }
-}
-
-/**
- * Set the content for the specified container, or hide it if we have no
- * content.
- *
- * @template C
- * @param {string} containerId - The id for the container.
- * @param {?C} content - The content for this container, or a falsey value if
- *   the container has no content.
- * @param {function(contentEl: Elemenet, content: C)} [fillContent] - A function
- *   to fill the ".content" contentEl with the given 'content'. If unspecified,
- *   the 'content' will become the contentEl's textContent.
- */
-function setContent(containerId, content, fillContent) {
-  const container = document.getElementById(containerId);
-  if (!content) {
-    container.hidden = true;
-    return;
-  }
-  const contentEl = container.querySelector(".content");
-  // Release notes are only in English.
-  contentEl.setAttribute("lang", "en-US");
-  contentEl.setAttribute("dir", "ltr");
-  contentEl.classList.add("en-US-content");
-  if (fillContent) {
-    fillContent(contentEl, content);
-  } else {
-    contentEl.textContent = content;
-  }
-}
-
-/**
- * Callback when we receive the update details.
- *
- * @param {Object} aData - The update details.
- * @param {?string} aData.version - The update version.
- * @param {?string} aData.releaseDate - The release date.
- * @param {?string} aData.moreInfoURL - A URL for more info.
- * @param {?Array<ReleaseBullet>} aData.releaseNotes - Release notes as bullet
- *   points.
- */
-function onUpdate(aData) {
-  setContent("version-row", aData.version);
-  setContent("releasedate-row", aData.releaseDate);
-  setContent("releasenotes", aData.releaseNotes, fillReleaseNotes);
-
-  if (aData.moreInfoURL) {
-    document.getElementById("infolink").setAttribute("href", aData.moreInfoURL);
-  } else {
-    document.getElementById("fullinfo").hidden = true;
-  }
-}
-
-RPMSendQuery("FetchUpdateData").then(onUpdate);


=====================================
browser/base/content/abouttbupdate/aboutTBUpdate.xhtml deleted
=====================================
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!DOCTYPE html [ <!ENTITY % htmlDTD PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
-%htmlDTD;
-<!ENTITY % tbUpdateDTD SYSTEM "chrome://browser/locale/aboutTBUpdate.dtd">
-%tbUpdateDTD; ]>
-
-<html xmlns="http://www.w3.org/1999/xhtml">
-  <head>
-    <meta
-      http-equiv="Content-Security-Policy"
-      content="default-src chrome:; object-src 'none'"
-    />
-    <title>&aboutTBUpdate.changelogTitle;</title>
-    <link
-      rel="stylesheet"
-      type="text/css"
-      href="chrome://browser/content/abouttbupdate/aboutTBUpdate.css"
-    />
-    <script
-      src="chrome://browser/content/abouttbupdate/aboutTBUpdate.js"
-      type="text/javascript"
-    />
-    <!-- Hack: we are not using Fluent translations in this page (yet), but we use
-     - this tag so it sets up the page automatically for us. -->
-    <link rel="localization" href="branding/brand.ftl" />
-  </head>
-  <body>
-    <!-- NOTE: We don't use the <dl>, <dt> and <dd> elements to form name-value
-     - pairs because this semantics is relatively new, whilst firefox
-     - currently still maps these to the more limited "definitionlist", "term"
-     - and "definition" roles. -->
-    <div id="version-row">
-      <span class="label-column">&aboutTBUpdate.version;</span>
-      <span class="content"></span>
-    </div>
-    <div id="releasedate-row">
-      <span class="label-column">&aboutTBUpdate.releaseDate;</span>
-      <span class="content"></span>
-    </div>
-    <div id="fullinfo">
-      <p class="content">
-        &aboutTBUpdate.linkPrefix;<a id="infolink">&aboutTBUpdate.linkLabel;</a
-        >&aboutTBUpdate.linkSuffix;
-      </p>
-    </div>
-    <section id="releasenotes">
-      <h2 class="label-column">&aboutTBUpdate.releaseNotes;</h2>
-      <div class="content"></div>
-    </section>
-  </body>
-</html>


=====================================
browser/base/content/browser.js
=====================================
@@ -771,10 +771,6 @@ if (Services.prefs.getBoolPref("browser.profiles.enabled")) {
   gInitialPages.push("about:profilemanager");
 }
 
-if (AppConstants.BASE_BROWSER_UPDATE) {
-  gInitialPages.push("about:tbupdate");
-}
-
 function isInitialPage(url) {
   if (!(url instanceof Ci.nsIURI)) {
     try {


=====================================
browser/base/jar.mn
=====================================
@@ -33,11 +33,6 @@ browser.jar:
         content/browser/aboutTabCrashed.css           (content/aboutTabCrashed.css)
         content/browser/aboutTabCrashed.js            (content/aboutTabCrashed.js)
         content/browser/aboutTabCrashed.xhtml         (content/aboutTabCrashed.xhtml)
-#ifdef BASE_BROWSER_UPDATE
-        content/browser/abouttbupdate/aboutTBUpdate.xhtml    (content/abouttbupdate/aboutTBUpdate.xhtml)
-        content/browser/abouttbupdate/aboutTBUpdate.js       (content/abouttbupdate/aboutTBUpdate.js)
-        content/browser/abouttbupdate/aboutTBUpdate.css      (content/abouttbupdate/aboutTBUpdate.css)
-#endif
         content/browser/blanktab.html                 (content/blanktab.html)
         content/browser/browser.css                   (content/browser.css)
         content/browser/browser.js                    (content/browser.js)


=====================================
browser/components/BrowserContentHandler.sys.mjs
=====================================
@@ -783,16 +783,6 @@ nsBrowserContentHandler.prototype = {
             // into account because that requires waiting for the session file
             // to be read. If a crash occurs after updating, before restarting,
             // we may open the startPage in addition to restoring the session.
-            //
-            // Tor Browser: Instead of opening the post-update "override page"
-            // directly, we ensure that about:tor will be opened in a special
-            // mode that notifies the user that their browser was updated.
-            // The about:tor page will provide a link to the override page
-            // where the user can learn more about the update, as well as a
-            // link to the Tor Browser changelog page (about:tbupdate). The
-            // override page URL comes from the openURL attribute within the
-            // updates.xml file or, if no showURL action is present, from the
-            // startup.homepage_override_url pref.
             willRestoreSession =
               lazy.SessionStartup.isAutomaticRestoreEnabled();
 
@@ -887,6 +877,13 @@ nsBrowserContentHandler.prototype = {
               old_forkVersion
             );
             if (overridePage && AppConstants.BASE_BROWSER_UPDATE) {
+              // Tor Browser: Instead of opening the post-update "override page"
+              // directly, we ensure that about:tor will be opened, which should
+              // notify the user that their browser was updated.
+              //
+              // The overridePage comes from the openURL attribute within the
+              // updates.xml file or, if no showURL action is present, from the
+              // startup.homepage_override_url pref.
               Services.prefs.setCharPref(
                 "torbrowser.post_update.url",
                 overridePage


=====================================
browser/components/BrowserGlue.sys.mjs
=====================================
@@ -1022,21 +1022,6 @@ let JSWINDOWACTORS = {
   },
 };
 
-if (AppConstants.BASE_BROWSER_UPDATE) {
-  JSWINDOWACTORS.AboutTBUpdate = {
-    parent: {
-      esModuleURI: "resource:///actors/AboutTBUpdateParent.sys.mjs",
-    },
-    child: {
-      esModuleURI: "resource:///actors/AboutTBUpdateChild.sys.mjs",
-      events: {
-        DOMWindowCreated: { capture: true },
-      },
-    },
-    matches: ["about:tbupdate"],
-  };
-}
-
 ChromeUtils.defineLazyGetter(
   lazy,
   "WeaveService",


=====================================
browser/components/about/AboutRedirector.cpp
=====================================
@@ -166,13 +166,6 @@ static const RedirEntry kRedirMap[] = {
          nsIAboutModule::URI_MUST_LOAD_IN_CHILD | nsIAboutModule::ALLOW_SCRIPT |
          nsIAboutModule::URI_CAN_LOAD_IN_PRIVILEGEDABOUT_PROCESS |
          nsIAboutModule::HIDE_FROM_ABOUTABOUT},
-#ifdef BASE_BROWSER_UPDATE
-    {"tbupdate", "chrome://browser/content/abouttbupdate/aboutTBUpdate.xhtml",
-     nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |
-         nsIAboutModule::URI_MUST_LOAD_IN_CHILD | nsIAboutModule::ALLOW_SCRIPT |
-         nsIAboutModule::HIDE_FROM_ABOUTABOUT |
-         nsIAboutModule::IS_SECURE_CHROME_UI},
-#endif
     // The correct URI must be obtained by GetManualChromeURI
     {"manual", "about:blank",
      nsIAboutModule::URI_SAFE_FOR_UNTRUSTED_CONTENT |


=====================================
browser/components/about/components.conf
=====================================
@@ -35,9 +35,6 @@ pages = [
     'welcomeback',
 ]
 
-if defined('BASE_BROWSER_UPDATE'):
-    pages.append('tbupdate')
-
 Classes = [
     {
         'cid': '{7e4bb6ad-2fc4-4dc6-89ef-23e8e5ccf980}',


=====================================
toolkit/modules/RemotePageAccessManager.sys.mjs
=====================================
@@ -237,9 +237,6 @@ export let RemotePageAccessManager = {
       RPMAddMessageListener: ["*"],
       RPMRemoveMessageListener: ["*"],
     },
-    "about:tbupdate": {
-      RPMSendQuery: ["FetchUpdateData"],
-    },
     "about:torconnect": {
       RPMAddMessageListener: [
         "torconnect:state-change",


=====================================
toolkit/torbutton/chrome/locale/en-US/aboutTBUpdate.dtd deleted
=====================================
@@ -1,18 +0,0 @@
-<!-- Copyright (c) 2022, The Tor Project, Inc.
-   - 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/. -->
-
-<!ENTITY aboutTBUpdate.changelogTitle "Tor Browser Changelog">
-<!ENTITY aboutTBUpdate.version "Version">
-<!ENTITY aboutTBUpdate.releaseDate "Release Date">
-<!ENTITY aboutTBUpdate.releaseNotes "Release Notes">
-<!-- LOCALIZATION NOTE: the following entities are used to create the link to
-  -  obtain more information about the latest update.
-  -  The markup on the page looks like this:
-  -  &aboutTBUpdate.linkPrefix;<a href="...">&aboutTBUpdate.linkLabel;</a>&aboutTBUpdate.linkSuffix;
-  -  So, linkPrefix is what precedes the link, linkLabel is the link itself,
-  -  and linkSuffix is a text after the link. -->
-<!ENTITY aboutTBUpdate.linkPrefix "For the most up-to-date information about this release, ">
-<!ENTITY aboutTBUpdate.linkLabel  "visit our website">
-<!ENTITY aboutTBUpdate.linkSuffix ".">


=====================================
toolkit/torbutton/jar.mn
=====================================
@@ -7,8 +7,5 @@ torbutton.jar:
 # browser branding
 % override chrome://branding/locale/brand.properties chrome://torbutton/locale/brand.properties
 
-# Strings for the about:tbupdate page
-% override chrome://browser/locale/aboutTBUpdate.dtd chrome://torbutton/locale/aboutTBUpdate.dtd
-
 % locale torbutton en-US %locale/en-US/
   locale/en-US/ (chrome/locale/en-US/*)



View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/50cede2acdc7be01648dcd0e560a7726e3e3d140...b4b207fad998264e70bef16f187bb5533d39940e

-- 
View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/50cede2acdc7be01648dcd0e560a7726e3e3d140...b4b207fad998264e70bef16f187bb5533d39940e
You're receiving this email because of your account on gitlab.torproject.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.torproject.org/pipermail/tbb-commits/attachments/20241029/52134e1a/attachment-0001.htm>


More information about the tbb-commits mailing list