[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