lists.torproject.org
Sign In Sign Up
Manage this list Sign In Sign Up

Keyboard Shortcuts

Thread View

  • j: Next unread message
  • k: Previous unread message
  • j a: Jump to all threads
  • j l: Jump to MailingList overview

tbb-commits

Thread Start a new thread
Threads by month
  • ----- 2025 -----
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2024 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2023 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2022 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2021 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2020 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2019 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2018 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2017 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2016 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2015 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
  • January
  • ----- 2014 -----
  • December
  • November
  • October
  • September
  • August
  • July
  • June
  • May
  • April
  • March
  • February
tbb-commits@lists.torproject.org

  • 1 participants
  • 19499 discussions
[Git][tpo/applications/tor-browser][tor-browser-128.2.0esr-14.0-1] 2 commits: fixup! Firefox preference overrides.
by morgan (@morgan) 18 Sep '24

18 Sep '24
morgan pushed to branch tor-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: c28ee632 by Henry Wilkes at 2024-09-18T18:05:17+00:00 fixup! Firefox preference overrides. Bug 42718: Drop unused browser.tabs.firefox-view preference. - - - - - 4869b835 by Henry Wilkes at 2024-09-18T18:05:17+00:00 fixup! Bug 42037: Disable about:firefoxview page Bug 42718: Always hide the firefox view button. Also, ensure that `FirefoxViewHandler.openTab` returns early rather than throwing. - - - - - 3 changed files: - browser/app/profile/001-base-profile.js - browser/base/content/browser.js - browser/themes/shared/tabbrowser/tabs.css Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -17,9 +17,6 @@ pref("startup.homepage_welcome_url.additional", ""); // Disable Firefox Welcome Dialog pref("browser.aboutwelcome.enabled", false); -// Disable the Firefox View tab (tor-browser#41876) -pref("browser.tabs.firefox-view", false, locked); - #if MOZ_UPDATE_CHANNEL == release // tor-browser#42640: Disable Firefox Flame buttond due to unknown interactions with New Identity pref("browser.privatebrowsing.resetPBM.enabled", false, locked); ===================================== browser/base/content/browser.js ===================================== @@ -8121,6 +8121,11 @@ var FirefoxViewHandler = { } }, openTab(section) { + if (AppConstants.BASE_BROWSER_VERSION) { + // about:firefoxview is disabled. tor-browser#42037. + return; + } + if (!CustomizableUI.getPlacementOfWidget(this.BUTTON_ID)) { CustomizableUI.addWidgetToArea( this.BUTTON_ID, ===================================== browser/themes/shared/tabbrowser/tabs.css ===================================== @@ -747,17 +747,28 @@ /* Firefox View button and menu item */ -:root:not([privatebrowsingmode], [firefoxviewhidden]) :is(toolbarbutton, toolbarpaletteitem) + #tabbrowser-tabs, -:root[privatebrowsingmode]:not([firefoxviewhidden]) :is( +/* about:firefoxview is disabled in Base Browser. See tor-browser#42037. + * Therefore we always hide #firefox-view-button, regardless of private + * browsing. Here we only want to draw the border if there is a non-hidden + * toolbar item before the tabs. + * NOTE: Expect merge conflict from bugzilla bug 1917595 and bug 1917599. In + * these cases we want to keep our selector as-is. */ +:root :is( toolbarbutton:not(#firefox-view-button), toolbarpaletteitem:not(#wrapper-firefox-view-button) -) + #tabbrowser-tabs { +) ~ #tabbrowser-tabs { border-inline-start: 1px solid color-mix(in srgb, currentColor 25%, transparent); padding-inline-start: calc(var(--tab-overflow-pinned-tabs-width) + 2px); margin-inline-start: 2px; } -:root[privatebrowsingmode] :is(#firefox-view-button, #menu_openFirefoxView) { +/* about:firefoxview is disabled in Base Browser. Always hide the toolbar button + * and menu item regardless of private browsing. See tor-browser#42037. + * NOTE: We also hide #wrapper-firefox-view-button, which is used during + * customization. + * NOTE: Expect merge conflict from bugzilla bug 1903812 and bug 1917599. In + * these cases we want to keep our selector as-is. */ +#firefox-view-button, #wrapper-firefox-view-button, #menu_openFirefoxView { display: none; } View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/06801c… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/06801c… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-128.2.0esr-14.0-1] Bug 42220: Allow for more file types to be forced-inline.
by Pier Angelo Vendrame (@pierov) 18 Sep '24

18 Sep '24
Pier Angelo Vendrame pushed to branch mullvad-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Mullvad Browser Commits: a64e84bc by Pier Angelo Vendrame at 2024-09-18T15:37:35+02:00 Bug 42220: Allow for more file types to be forced-inline. Firefox allows to open some files in the browser without any confirmation, but this will result in a disk leak, because the file will be downloaded to the temporary directory first (and not deleted, in some cases). A preference allows PDFs to be opened without being downloaded to disk. So, we introduce a similar one to do the same for all the files that are set to be opened automatically in the browser. - - - - - 2 changed files: - modules/libpref/init/StaticPrefList.yaml - uriloader/base/nsURILoader.cpp Changes: ===================================== modules/libpref/init/StaticPrefList.yaml ===================================== @@ -1446,6 +1446,12 @@ value: false mirror: always +# tor-browser#42220 +- name: browser.download.ignore_content_disposition + type: bool + value: true + mirror: always + # See bug 1811830 - name: browser.download.force_save_internally_handled_attachments type: bool ===================================== uriloader/base/nsURILoader.cpp ===================================== @@ -292,34 +292,42 @@ nsresult nsDocumentOpenInfo::DispatchContent(nsIRequest* request) { LOG((" forceExternalHandling: %s", forceExternalHandling ? "yes" : "no")); if (forceExternalHandling && - mozilla::StaticPrefs::browser_download_open_pdf_attachments_inline()) { + (mozilla::StaticPrefs::browser_download_open_pdf_attachments_inline() || + mozilla::StaticPrefs::browser_download_ignore_content_disposition())) { // Check if this is a PDF which should be opened internally. We also handle // octet-streams that look like they might be PDFs based on their extension. bool isPDF = mContentType.LowerCaseEqualsASCII(APPLICATION_PDF); - if (!isPDF && - (mContentType.LowerCaseEqualsASCII(APPLICATION_OCTET_STREAM) || - mContentType.IsEmpty())) { + nsAutoCString ext; + if (mContentType.LowerCaseEqualsASCII(APPLICATION_OCTET_STREAM) || + mContentType.IsEmpty()) { nsAutoString flname; aChannel->GetContentDispositionFilename(flname); - isPDF = StringEndsWith(flname, u".pdf"_ns); - if (!isPDF) { + if (!flname.IsEmpty()) { + int32_t extStart = flname.RFindChar(u'.'); + if (extStart != kNotFound) { + CopyUTF16toUTF8(Substring(flname, extStart + 1), ext); + } + } + if (ext.IsEmpty() || (!mozilla::StaticPrefs:: + browser_download_ignore_content_disposition() && + !ext.EqualsLiteral("pdf"))) { nsCOMPtr<nsIURI> uri; aChannel->GetURI(getter_AddRefs(uri)); nsCOMPtr<nsIURL> url(do_QueryInterface(uri)); if (url) { - nsAutoCString ext; url->GetFileExtension(ext); - isPDF = ext.EqualsLiteral("pdf"); } } + isPDF = ext.EqualsLiteral("pdf"); } - // For a PDF, check if the preference is set that forces attachments to be - // opened inline. If so, treat it as a non-attachment by clearing - // 'forceExternalHandling' again. This allows it open a PDF directly - // instead of downloading it first. It may still end up being handled by - // a helper app depending anyway on the later checks. - if (isPDF) { + // One of the preferences to forces attachments to be opened inline is set. + // If so, treat it as a non-attachment by clearing 'forceExternalHandling' + // again. This allows it open a file directly instead of downloading it + // first. It may still end up being handled by a helper app depending anyway + // on the later checks. + if (mozilla::StaticPrefs::browser_download_ignore_content_disposition() || + isPDF) { nsCOMPtr<nsILoadInfo> loadInfo; aChannel->GetLoadInfo(getter_AddRefs(loadInfo)); @@ -328,8 +336,13 @@ nsresult nsDocumentOpenInfo::DispatchContent(nsIRequest* request) { nsCOMPtr<nsIMIMEService> mimeSvc( do_GetService(NS_MIMESERVICE_CONTRACTID)); NS_ENSURE_TRUE(mimeSvc, NS_ERROR_FAILURE); - mimeSvc->GetFromTypeAndExtension(nsLiteralCString(APPLICATION_PDF), ""_ns, - getter_AddRefs(mimeInfo)); + if (isPDF) { + mimeSvc->GetFromTypeAndExtension(nsLiteralCString(APPLICATION_PDF), + ""_ns, getter_AddRefs(mimeInfo)); + } else { + mimeSvc->GetFromTypeAndExtension(mContentType, ext, + getter_AddRefs(mimeInfo)); + } if (mimeInfo) { int32_t action = nsIMIMEInfo::saveToDisk; View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/a64… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/a64… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-128.2.0esr-14.0-1] Bug 42220: Allow for more file types to be forced-inline.
by Pier Angelo Vendrame (@pierov) 18 Sep '24

18 Sep '24
Pier Angelo Vendrame pushed to branch base-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: d72c2984 by Pier Angelo Vendrame at 2024-09-18T15:36:07+02:00 Bug 42220: Allow for more file types to be forced-inline. Firefox allows to open some files in the browser without any confirmation, but this will result in a disk leak, because the file will be downloaded to the temporary directory first (and not deleted, in some cases). A preference allows PDFs to be opened without being downloaded to disk. So, we introduce a similar one to do the same for all the files that are set to be opened automatically in the browser. - - - - - 2 changed files: - modules/libpref/init/StaticPrefList.yaml - uriloader/base/nsURILoader.cpp Changes: ===================================== modules/libpref/init/StaticPrefList.yaml ===================================== @@ -1446,6 +1446,12 @@ value: false mirror: always +# tor-browser#42220 +- name: browser.download.ignore_content_disposition + type: bool + value: true + mirror: always + # See bug 1811830 - name: browser.download.force_save_internally_handled_attachments type: bool ===================================== uriloader/base/nsURILoader.cpp ===================================== @@ -292,34 +292,42 @@ nsresult nsDocumentOpenInfo::DispatchContent(nsIRequest* request) { LOG((" forceExternalHandling: %s", forceExternalHandling ? "yes" : "no")); if (forceExternalHandling && - mozilla::StaticPrefs::browser_download_open_pdf_attachments_inline()) { + (mozilla::StaticPrefs::browser_download_open_pdf_attachments_inline() || + mozilla::StaticPrefs::browser_download_ignore_content_disposition())) { // Check if this is a PDF which should be opened internally. We also handle // octet-streams that look like they might be PDFs based on their extension. bool isPDF = mContentType.LowerCaseEqualsASCII(APPLICATION_PDF); - if (!isPDF && - (mContentType.LowerCaseEqualsASCII(APPLICATION_OCTET_STREAM) || - mContentType.IsEmpty())) { + nsAutoCString ext; + if (mContentType.LowerCaseEqualsASCII(APPLICATION_OCTET_STREAM) || + mContentType.IsEmpty()) { nsAutoString flname; aChannel->GetContentDispositionFilename(flname); - isPDF = StringEndsWith(flname, u".pdf"_ns); - if (!isPDF) { + if (!flname.IsEmpty()) { + int32_t extStart = flname.RFindChar(u'.'); + if (extStart != kNotFound) { + CopyUTF16toUTF8(Substring(flname, extStart + 1), ext); + } + } + if (ext.IsEmpty() || (!mozilla::StaticPrefs:: + browser_download_ignore_content_disposition() && + !ext.EqualsLiteral("pdf"))) { nsCOMPtr<nsIURI> uri; aChannel->GetURI(getter_AddRefs(uri)); nsCOMPtr<nsIURL> url(do_QueryInterface(uri)); if (url) { - nsAutoCString ext; url->GetFileExtension(ext); - isPDF = ext.EqualsLiteral("pdf"); } } + isPDF = ext.EqualsLiteral("pdf"); } - // For a PDF, check if the preference is set that forces attachments to be - // opened inline. If so, treat it as a non-attachment by clearing - // 'forceExternalHandling' again. This allows it open a PDF directly - // instead of downloading it first. It may still end up being handled by - // a helper app depending anyway on the later checks. - if (isPDF) { + // One of the preferences to forces attachments to be opened inline is set. + // If so, treat it as a non-attachment by clearing 'forceExternalHandling' + // again. This allows it open a file directly instead of downloading it + // first. It may still end up being handled by a helper app depending anyway + // on the later checks. + if (mozilla::StaticPrefs::browser_download_ignore_content_disposition() || + isPDF) { nsCOMPtr<nsILoadInfo> loadInfo; aChannel->GetLoadInfo(getter_AddRefs(loadInfo)); @@ -328,8 +336,13 @@ nsresult nsDocumentOpenInfo::DispatchContent(nsIRequest* request) { nsCOMPtr<nsIMIMEService> mimeSvc( do_GetService(NS_MIMESERVICE_CONTRACTID)); NS_ENSURE_TRUE(mimeSvc, NS_ERROR_FAILURE); - mimeSvc->GetFromTypeAndExtension(nsLiteralCString(APPLICATION_PDF), ""_ns, - getter_AddRefs(mimeInfo)); + if (isPDF) { + mimeSvc->GetFromTypeAndExtension(nsLiteralCString(APPLICATION_PDF), + ""_ns, getter_AddRefs(mimeInfo)); + } else { + mimeSvc->GetFromTypeAndExtension(mContentType, ext, + getter_AddRefs(mimeInfo)); + } if (mimeInfo) { int32_t action = nsIMIMEInfo::saveToDisk; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d72c298… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/d72c298… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-128.2.0esr-14.0-1] Bug 42220: Allow for more file types to be forced-inline.
by Pier Angelo Vendrame (@pierov) 18 Sep '24

18 Sep '24
Pier Angelo Vendrame pushed to branch tor-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: 06801c8d by Pier Angelo Vendrame at 2024-09-18T15:21:28+02:00 Bug 42220: Allow for more file types to be forced-inline. Firefox allows to open some files in the browser without any confirmation, but this will result in a disk leak, because the file will be downloaded to the temporary directory first (and not deleted, in some cases). A preference allows PDFs to be opened without being downloaded to disk. So, we introduce a similar one to do the same for all the files that are set to be opened automatically in the browser. - - - - - 2 changed files: - modules/libpref/init/StaticPrefList.yaml - uriloader/base/nsURILoader.cpp Changes: ===================================== modules/libpref/init/StaticPrefList.yaml ===================================== @@ -1446,6 +1446,12 @@ value: false mirror: always +# tor-browser#42220 +- name: browser.download.ignore_content_disposition + type: bool + value: true + mirror: always + # See bug 1811830 - name: browser.download.force_save_internally_handled_attachments type: bool ===================================== uriloader/base/nsURILoader.cpp ===================================== @@ -292,34 +292,42 @@ nsresult nsDocumentOpenInfo::DispatchContent(nsIRequest* request) { LOG((" forceExternalHandling: %s", forceExternalHandling ? "yes" : "no")); if (forceExternalHandling && - mozilla::StaticPrefs::browser_download_open_pdf_attachments_inline()) { + (mozilla::StaticPrefs::browser_download_open_pdf_attachments_inline() || + mozilla::StaticPrefs::browser_download_ignore_content_disposition())) { // Check if this is a PDF which should be opened internally. We also handle // octet-streams that look like they might be PDFs based on their extension. bool isPDF = mContentType.LowerCaseEqualsASCII(APPLICATION_PDF); - if (!isPDF && - (mContentType.LowerCaseEqualsASCII(APPLICATION_OCTET_STREAM) || - mContentType.IsEmpty())) { + nsAutoCString ext; + if (mContentType.LowerCaseEqualsASCII(APPLICATION_OCTET_STREAM) || + mContentType.IsEmpty()) { nsAutoString flname; aChannel->GetContentDispositionFilename(flname); - isPDF = StringEndsWith(flname, u".pdf"_ns); - if (!isPDF) { + if (!flname.IsEmpty()) { + int32_t extStart = flname.RFindChar(u'.'); + if (extStart != kNotFound) { + CopyUTF16toUTF8(Substring(flname, extStart + 1), ext); + } + } + if (ext.IsEmpty() || (!mozilla::StaticPrefs:: + browser_download_ignore_content_disposition() && + !ext.EqualsLiteral("pdf"))) { nsCOMPtr<nsIURI> uri; aChannel->GetURI(getter_AddRefs(uri)); nsCOMPtr<nsIURL> url(do_QueryInterface(uri)); if (url) { - nsAutoCString ext; url->GetFileExtension(ext); - isPDF = ext.EqualsLiteral("pdf"); } } + isPDF = ext.EqualsLiteral("pdf"); } - // For a PDF, check if the preference is set that forces attachments to be - // opened inline. If so, treat it as a non-attachment by clearing - // 'forceExternalHandling' again. This allows it open a PDF directly - // instead of downloading it first. It may still end up being handled by - // a helper app depending anyway on the later checks. - if (isPDF) { + // One of the preferences to forces attachments to be opened inline is set. + // If so, treat it as a non-attachment by clearing 'forceExternalHandling' + // again. This allows it open a file directly instead of downloading it + // first. It may still end up being handled by a helper app depending anyway + // on the later checks. + if (mozilla::StaticPrefs::browser_download_ignore_content_disposition() || + isPDF) { nsCOMPtr<nsILoadInfo> loadInfo; aChannel->GetLoadInfo(getter_AddRefs(loadInfo)); @@ -328,8 +336,13 @@ nsresult nsDocumentOpenInfo::DispatchContent(nsIRequest* request) { nsCOMPtr<nsIMIMEService> mimeSvc( do_GetService(NS_MIMESERVICE_CONTRACTID)); NS_ENSURE_TRUE(mimeSvc, NS_ERROR_FAILURE); - mimeSvc->GetFromTypeAndExtension(nsLiteralCString(APPLICATION_PDF), ""_ns, - getter_AddRefs(mimeInfo)); + if (isPDF) { + mimeSvc->GetFromTypeAndExtension(nsLiteralCString(APPLICATION_PDF), + ""_ns, getter_AddRefs(mimeInfo)); + } else { + mimeSvc->GetFromTypeAndExtension(mContentType, ext, + getter_AddRefs(mimeInfo)); + } if (mimeInfo) { int32_t action = nsIMIMEInfo::saveToDisk; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/06801c8… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/06801c8… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-128.2.0esr-14.0-1] Bug 1436462 - Use "Open in new private window" for bookmarks when in PBM. r=places-reviewers, mak
by morgan (@morgan) 17 Sep '24

17 Sep '24
morgan pushed to branch mullvad-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Mullvad Browser Commits: ffc25ae2 by Henry Wilkes at 2024-09-17T18:40:23+00:00 Bug 1436462 - Use &quot;Open in new private window&quot; for bookmarks when in PBM. r=places-reviewers,mak This makes the bookmark menu consistent with the &quot;File&quot; and context menu when using private browsing mode. We also share the same hide item logic for these &quot;open&quot; items in one place in PlacesUIUtils so that they can be shared between the two consumers (regular bookmarks and managed bookmarks). This ensures that the &quot;Open in container&quot; item if hidden for managed bookmarks in a private window. Differential Revision: https://phabricator.services.mozilla.com/D220120 - - - - - 5 changed files: - browser/components/places/PlacesUIUtils.sys.mjs - browser/components/places/content/controller.js - browser/components/places/content/placesContextMenu.inc.xhtml - browser/components/places/tests/browser/browser_bookmark_context_menu_contents.js - browser/components/places/tests/browser/head.js Changes: ===================================== browser/components/places/PlacesUIUtils.sys.mjs ===================================== @@ -1514,6 +1514,40 @@ export var PlacesUIUtils = { } }, + /** + * Determines whether the given "placesContext" menu item would open a link + * under some special conditions, but those special conditions cannot be met. + * + * @param {Element} item The menu or menu item to decide for. + * + * @returns {boolean} Whether the item is an "open" item that should be + * hidden. + */ + shouldHideOpenMenuItem(item) { + if ( + item.hasAttribute("hide-if-disabled-private-browsing") && + !lazy.PrivateBrowsingUtils.enabled + ) { + return true; + } + + if ( + item.hasAttribute("hide-if-private-browsing") && + lazy.PrivateBrowsingUtils.isWindowPrivate(item.ownerGlobal) + ) { + return true; + } + + if ( + item.hasAttribute("hide-if-usercontext-disabled") && + !Services.prefs.getBoolPref("privacy.userContext.enabled", false) + ) { + return true; + } + + return false; + }, + async managedPlacesContextShowing(event) { let menupopup = event.target; let document = menupopup.ownerDocument; @@ -1528,12 +1562,6 @@ export var PlacesUIUtils = { menupopup.triggerNode.menupopup ); } - let linkItems = [ - "placesContext_open:newtab", - "placesContext_open:newwindow", - "placesContext_openSeparator", - "placesContext_copy", - ]; // Hide everything. We'll unhide the things we need. Array.from(menupopup.children).forEach(function (child) { child.hidden = true; @@ -1555,12 +1583,18 @@ export var PlacesUIUtils = { openContainerInTabs_menuitem.disabled = !openContainerInTabs; openContainerInTabs_menuitem.hidden = false; } else { - linkItems.forEach(id => (document.getElementById(id).hidden = false)); - document.getElementById("placesContext_open:newprivatewindow").hidden = - lazy.PrivateBrowsingUtils.isWindowPrivate(window) || - !lazy.PrivateBrowsingUtils.enabled; - document.getElementById("placesContext_open:newcontainertab").hidden = - !Services.prefs.getBoolPref("privacy.userContext.enabled", false); + for (let id of [ + "placesContext_open:newtab", + "placesContext_open:newcontainertab", + "placesContext_open:newwindow", + "placesContext_open:newprivatewindow", + ]) { + let item = document.getElementById(id); + item.hidden = this.shouldHideOpenMenuItem(item); + } + for (let id of ["placesContext_openSeparator", "placesContext_copy"]) { + document.getElementById(id).hidden = false; + } } event.target.ownerGlobal.updateCommands("places"); ===================================== browser/components/places/content/controller.js ===================================== @@ -465,17 +465,7 @@ PlacesController.prototype = { * and the item can be displayed, false otherwise. */ _shouldShowMenuItem(aMenuItem, aMetaData) { - if ( - aMenuItem.hasAttribute("hide-if-private-browsing") && - !PrivateBrowsingUtils.enabled - ) { - return false; - } - - if ( - aMenuItem.hasAttribute("hide-if-usercontext-disabled") && - !Services.prefs.getBoolPref("privacy.userContext.enabled", false) - ) { + if (PlacesUIUtils.shouldHideOpenMenuItem(aMenuItem)) { return false; } @@ -566,8 +556,12 @@ PlacesController.prototype = { * menuitem when there's no insertion point. An insertion point represents * a point in the view where a new item can be inserted. * 9) The boolean `hide-if-private-browsing` attribute may be set to hide a - * menuitem in private browsing mode - * 10) The boolean `hide-if-single-click-opens` attribute may be set to hide a + * menuitem in private browsing mode. + * 10) The boolean `hide-if-disabled-private-browsing` attribute may be set to + * hide a menuitem if private browsing is not enabled. + * 11) The boolean `hide-if-usercontext-disabled` attribute may be set to + * hide a menuitem if containers are disabled. + * 12) The boolean `hide-if-single-click-opens` attribute may be set to hide a * menuitem in views opening entries with a single click. * * @param {object} aPopup @@ -593,9 +587,6 @@ PlacesController.prototype = { item.getAttribute("hide-if-no-insertion-point") == "true" && noIp && !(ip && ip.isTag && item.id == "placesContext_paste"); - let hideIfPrivate = - item.getAttribute("hide-if-private-browsing") == "true" && - PrivateBrowsingUtils.isWindowPrivate(window); // Hide `Open` if the primary action on click is opening. let hideIfSingleClickOpens = item.getAttribute("hide-if-single-click-opens") == "true" && @@ -610,7 +601,6 @@ PlacesController.prototype = { let shouldHideItem = hideIfNoIP || - hideIfPrivate || hideIfSingleClickOpens || hideIfNotSearch || !this._shouldShowMenuItem(item, metadata); ===================================== browser/components/places/content/placesContextMenu.inc.xhtml ===================================== @@ -52,13 +52,14 @@ command="placesCmd_open:window" data-l10n-id="places-open-in-window" selection-type="single" - node-type="link"/> + node-type="link" + hide-if-private-browsing="true"/> <menuitem id="placesContext_open:newprivatewindow" command="placesCmd_open:privatewindow" data-l10n-id="places-open-in-private-window" selection-type="single" node-type="link" - hide-if-private-browsing="true"/> + hide-if-disabled-private-browsing="true"/> <menuitem id="placesContext_showInFolder" data-l10n-id="places-show-in-folder" command="placesCmd_showInFolder" ===================================== browser/components/places/tests/browser/browser_bookmark_context_menu_contents.js ===================================== @@ -814,3 +814,118 @@ add_task(async function test_library_noselection_contextmenu_contents() { ); }); }); + +add_task(async function test_private_browsing_window() { + // Test the context menu when in a private browsing window. + + let win = await BrowserTestUtils.openNewBrowserWindow({ + private: true, + }); + + let optionItems = [ + "placesContext_open:newtab", + // Hidden in private window "placesContext_open:newcontainertab" + // Hidden in private window "placesContext_open:newwindow" + "placesContext_open:newprivatewindow", + "placesContext_show_bookmark:info", + "placesContext_deleteBookmark", + "placesContext_cut", + "placesContext_copy", + "placesContext_paste_group", + "placesContext_new:bookmark", + "placesContext_new:folder", + "placesContext_new:separator", + ]; + + // Test toolbar. + await checkContextMenu( + async function () { + let toolbarBookmark = await PlacesUtils.bookmarks.insert({ + parentGuid: PlacesUtils.bookmarks.toolbarGuid, + title: "Bookmark Title", + url: TEST_URL, + }); + + let toolbarNode = getToolbarNodeForItemGuid(toolbarBookmark.guid, win); + + let contextMenu = win.document.getElementById("placesContext"); + let popupShownPromise = BrowserTestUtils.waitForEvent( + contextMenu, + "popupshown" + ); + + EventUtils.synthesizeMouseAtCenter( + toolbarNode, + { button: 2, type: "contextmenu" }, + win + ); + await popupShownPromise; + return contextMenu; + }, + [ + ...optionItems, + "placesContext_showAllBookmarks", + "toggle_PersonalToolbar", + "show-other-bookmarks_PersonalToolbar", + ], + win.document + ); + + // Test side bar. + await withSidebarTree( + "bookmarks", + async tree => { + await checkContextMenu( + async bookmark => { + tree.selectItems([bookmark.guid]); + + let contextMenu = + win.SidebarController.browser.contentDocument.getElementById( + "placesContext" + ); + let popupShownPromise = BrowserTestUtils.waitForEvent( + contextMenu, + "popupshown" + ); + synthesizeClickOnSelectedTreeCell(tree, { type: "contextmenu" }, win); + await popupShownPromise; + return contextMenu; + }, + optionItems, + win.SidebarController.browser.contentDocument + ); + }, + win + ); + + // Test library window opened when using private browsing window. + optionItems.splice( + optionItems.indexOf("placesContext_show_bookmark:info"), + 1 + ); + optionItems.splice(0, 0, "placesContext_open"); + + await withLibraryWindow( + "BookmarksToolbar", + async ({ right }) => { + await checkContextMenu( + async bookmark => { + let contextMenu = right.ownerDocument.getElementById("placesContext"); + let popupShownPromise = BrowserTestUtils.waitForEvent( + contextMenu, + "popupshown" + ); + right.selectItems([bookmark.guid]); + synthesizeClickOnSelectedTreeCell(right, { type: "contextmenu" }); + await popupShownPromise; + return contextMenu; + }, + optionItems, + right.ownerDocument + ); + }, + win + ); + + await BrowserTestUtils.closeWindow(win); +}); ===================================== browser/components/places/tests/browser/head.js ===================================== @@ -6,8 +6,8 @@ ChromeUtils.defineLazyGetter(this, "gFluentStrings", function () { return new Localization(["branding/brand.ftl", "browser/browser.ftl"], true); }); -function openLibrary(callback, aLeftPaneRoot) { - let library = window.openDialog( +function openLibrary(callback, aLeftPaneRoot, win = window) { + let library = win.openDialog( "chrome://browser/content/places/places.xhtml", "", "chrome,toolbar=yes,dialog=no,resizable", @@ -27,10 +27,12 @@ function openLibrary(callback, aLeftPaneRoot) { * * @param {object} aLeftPaneRoot * Hierarchy to open and select in the left pane. + * @param {Window} [win] + * The window to use to open the library. * @returns {Promise} * Resolves to the handle to the library window. */ -function promiseLibrary(aLeftPaneRoot) { +function promiseLibrary(aLeftPaneRoot, win = window) { return new Promise(resolve => { let library = Services.wm.getMostRecentWindow("Places:Organizer"); if (library && !library.closed) { @@ -42,7 +44,7 @@ function promiseLibrary(aLeftPaneRoot) { checkLibraryPaneVisibility(library, aLeftPaneRoot); resolve(library); } else { - openLibrary(resolve, aLeftPaneRoot); + openLibrary(resolve, aLeftPaneRoot, win); } }); } @@ -380,9 +382,11 @@ function fillBookmarkTextField(id, text, win, blur = true) { * @param {Function} taskFn * The task to execute once the sidebar is ready. Will get the Places * tree view as input. + * @param {Window} [win] + * The window to open the sidebar in, else uses the default window. */ -var withSidebarTree = async function (type, taskFn) { - let sidebar = document.getElementById("sidebar"); +var withSidebarTree = async function (type, taskFn, win = window) { + let sidebar = win.document.getElementById("sidebar"); info("withSidebarTree: waiting sidebar load"); let sidebarLoadedPromise = new Promise(resolve => { sidebar.addEventListener( @@ -395,7 +399,7 @@ var withSidebarTree = async function (type, taskFn) { }); let sidebarId = type == "bookmarks" ? "viewBookmarksSidebar" : "viewHistorySidebar"; - SidebarController.show(sidebarId); + win.SidebarController.show(sidebarId); await sidebarLoadedPromise; let treeId = type == "bookmarks" ? "bookmarks-view" : "historyTree"; @@ -406,7 +410,7 @@ var withSidebarTree = async function (type, taskFn) { try { await taskFn(tree); } finally { - SidebarController.hide(); + win.SidebarController.hide(); } }; @@ -419,9 +423,11 @@ var withSidebarTree = async function (type, taskFn) { * @param {Function} taskFn * The task to execute once the Library is ready. * Will get { left, right } trees as argument. + * @param {Window} [win] + * The window to use to open the library. */ -var withLibraryWindow = async function (hierarchy, taskFn) { - let library = await promiseLibrary(hierarchy); +var withLibraryWindow = async function (hierarchy, taskFn, win = window) { + let library = await promiseLibrary(hierarchy, win); let left = library.document.getElementById("placesList"); let right = library.document.getElementById("placeContent"); info("withLibrary: executing the task"); @@ -477,8 +483,8 @@ function promisePopupHidden(popup) { } // Identify a bookmark node in the Bookmarks Toolbar by its guid. -function getToolbarNodeForItemGuid(itemGuid) { - let children = document.getElementById("PlacesToolbarItems").childNodes; +function getToolbarNodeForItemGuid(itemGuid, win = window) { + let children = win.document.getElementById("PlacesToolbarItems").childNodes; for (let child of children) { if (itemGuid === child._placesNode.bookmarkGuid) { return child; View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/ffc… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/ffc… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-128.2.0esr-14.0-1] Bug 1436462 - Use "Open in new private window" for bookmarks when in PBM. r=places-reviewers, mak
by morgan (@morgan) 17 Sep '24

17 Sep '24
morgan pushed to branch base-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: 9cd3c30f by Henry Wilkes at 2024-09-17T18:39:47+00:00 Bug 1436462 - Use &quot;Open in new private window&quot; for bookmarks when in PBM. r=places-reviewers,mak This makes the bookmark menu consistent with the &quot;File&quot; and context menu when using private browsing mode. We also share the same hide item logic for these &quot;open&quot; items in one place in PlacesUIUtils so that they can be shared between the two consumers (regular bookmarks and managed bookmarks). This ensures that the &quot;Open in container&quot; item if hidden for managed bookmarks in a private window. Differential Revision: https://phabricator.services.mozilla.com/D220120 - - - - - 5 changed files: - browser/components/places/PlacesUIUtils.sys.mjs - browser/components/places/content/controller.js - browser/components/places/content/placesContextMenu.inc.xhtml - browser/components/places/tests/browser/browser_bookmark_context_menu_contents.js - browser/components/places/tests/browser/head.js Changes: ===================================== browser/components/places/PlacesUIUtils.sys.mjs ===================================== @@ -1514,6 +1514,40 @@ export var PlacesUIUtils = { } }, + /** + * Determines whether the given "placesContext" menu item would open a link + * under some special conditions, but those special conditions cannot be met. + * + * @param {Element} item The menu or menu item to decide for. + * + * @returns {boolean} Whether the item is an "open" item that should be + * hidden. + */ + shouldHideOpenMenuItem(item) { + if ( + item.hasAttribute("hide-if-disabled-private-browsing") && + !lazy.PrivateBrowsingUtils.enabled + ) { + return true; + } + + if ( + item.hasAttribute("hide-if-private-browsing") && + lazy.PrivateBrowsingUtils.isWindowPrivate(item.ownerGlobal) + ) { + return true; + } + + if ( + item.hasAttribute("hide-if-usercontext-disabled") && + !Services.prefs.getBoolPref("privacy.userContext.enabled", false) + ) { + return true; + } + + return false; + }, + async managedPlacesContextShowing(event) { let menupopup = event.target; let document = menupopup.ownerDocument; @@ -1528,12 +1562,6 @@ export var PlacesUIUtils = { menupopup.triggerNode.menupopup ); } - let linkItems = [ - "placesContext_open:newtab", - "placesContext_open:newwindow", - "placesContext_openSeparator", - "placesContext_copy", - ]; // Hide everything. We'll unhide the things we need. Array.from(menupopup.children).forEach(function (child) { child.hidden = true; @@ -1555,12 +1583,18 @@ export var PlacesUIUtils = { openContainerInTabs_menuitem.disabled = !openContainerInTabs; openContainerInTabs_menuitem.hidden = false; } else { - linkItems.forEach(id => (document.getElementById(id).hidden = false)); - document.getElementById("placesContext_open:newprivatewindow").hidden = - lazy.PrivateBrowsingUtils.isWindowPrivate(window) || - !lazy.PrivateBrowsingUtils.enabled; - document.getElementById("placesContext_open:newcontainertab").hidden = - !Services.prefs.getBoolPref("privacy.userContext.enabled", false); + for (let id of [ + "placesContext_open:newtab", + "placesContext_open:newcontainertab", + "placesContext_open:newwindow", + "placesContext_open:newprivatewindow", + ]) { + let item = document.getElementById(id); + item.hidden = this.shouldHideOpenMenuItem(item); + } + for (let id of ["placesContext_openSeparator", "placesContext_copy"]) { + document.getElementById(id).hidden = false; + } } event.target.ownerGlobal.updateCommands("places"); ===================================== browser/components/places/content/controller.js ===================================== @@ -465,17 +465,7 @@ PlacesController.prototype = { * and the item can be displayed, false otherwise. */ _shouldShowMenuItem(aMenuItem, aMetaData) { - if ( - aMenuItem.hasAttribute("hide-if-private-browsing") && - !PrivateBrowsingUtils.enabled - ) { - return false; - } - - if ( - aMenuItem.hasAttribute("hide-if-usercontext-disabled") && - !Services.prefs.getBoolPref("privacy.userContext.enabled", false) - ) { + if (PlacesUIUtils.shouldHideOpenMenuItem(aMenuItem)) { return false; } @@ -566,8 +556,12 @@ PlacesController.prototype = { * menuitem when there's no insertion point. An insertion point represents * a point in the view where a new item can be inserted. * 9) The boolean `hide-if-private-browsing` attribute may be set to hide a - * menuitem in private browsing mode - * 10) The boolean `hide-if-single-click-opens` attribute may be set to hide a + * menuitem in private browsing mode. + * 10) The boolean `hide-if-disabled-private-browsing` attribute may be set to + * hide a menuitem if private browsing is not enabled. + * 11) The boolean `hide-if-usercontext-disabled` attribute may be set to + * hide a menuitem if containers are disabled. + * 12) The boolean `hide-if-single-click-opens` attribute may be set to hide a * menuitem in views opening entries with a single click. * * @param {object} aPopup @@ -593,9 +587,6 @@ PlacesController.prototype = { item.getAttribute("hide-if-no-insertion-point") == "true" && noIp && !(ip && ip.isTag && item.id == "placesContext_paste"); - let hideIfPrivate = - item.getAttribute("hide-if-private-browsing") == "true" && - PrivateBrowsingUtils.isWindowPrivate(window); // Hide `Open` if the primary action on click is opening. let hideIfSingleClickOpens = item.getAttribute("hide-if-single-click-opens") == "true" && @@ -610,7 +601,6 @@ PlacesController.prototype = { let shouldHideItem = hideIfNoIP || - hideIfPrivate || hideIfSingleClickOpens || hideIfNotSearch || !this._shouldShowMenuItem(item, metadata); ===================================== browser/components/places/content/placesContextMenu.inc.xhtml ===================================== @@ -52,13 +52,14 @@ command="placesCmd_open:window" data-l10n-id="places-open-in-window" selection-type="single" - node-type="link"/> + node-type="link" + hide-if-private-browsing="true"/> <menuitem id="placesContext_open:newprivatewindow" command="placesCmd_open:privatewindow" data-l10n-id="places-open-in-private-window" selection-type="single" node-type="link" - hide-if-private-browsing="true"/> + hide-if-disabled-private-browsing="true"/> <menuitem id="placesContext_showInFolder" data-l10n-id="places-show-in-folder" command="placesCmd_showInFolder" ===================================== browser/components/places/tests/browser/browser_bookmark_context_menu_contents.js ===================================== @@ -814,3 +814,118 @@ add_task(async function test_library_noselection_contextmenu_contents() { ); }); }); + +add_task(async function test_private_browsing_window() { + // Test the context menu when in a private browsing window. + + let win = await BrowserTestUtils.openNewBrowserWindow({ + private: true, + }); + + let optionItems = [ + "placesContext_open:newtab", + // Hidden in private window "placesContext_open:newcontainertab" + // Hidden in private window "placesContext_open:newwindow" + "placesContext_open:newprivatewindow", + "placesContext_show_bookmark:info", + "placesContext_deleteBookmark", + "placesContext_cut", + "placesContext_copy", + "placesContext_paste_group", + "placesContext_new:bookmark", + "placesContext_new:folder", + "placesContext_new:separator", + ]; + + // Test toolbar. + await checkContextMenu( + async function () { + let toolbarBookmark = await PlacesUtils.bookmarks.insert({ + parentGuid: PlacesUtils.bookmarks.toolbarGuid, + title: "Bookmark Title", + url: TEST_URL, + }); + + let toolbarNode = getToolbarNodeForItemGuid(toolbarBookmark.guid, win); + + let contextMenu = win.document.getElementById("placesContext"); + let popupShownPromise = BrowserTestUtils.waitForEvent( + contextMenu, + "popupshown" + ); + + EventUtils.synthesizeMouseAtCenter( + toolbarNode, + { button: 2, type: "contextmenu" }, + win + ); + await popupShownPromise; + return contextMenu; + }, + [ + ...optionItems, + "placesContext_showAllBookmarks", + "toggle_PersonalToolbar", + "show-other-bookmarks_PersonalToolbar", + ], + win.document + ); + + // Test side bar. + await withSidebarTree( + "bookmarks", + async tree => { + await checkContextMenu( + async bookmark => { + tree.selectItems([bookmark.guid]); + + let contextMenu = + win.SidebarController.browser.contentDocument.getElementById( + "placesContext" + ); + let popupShownPromise = BrowserTestUtils.waitForEvent( + contextMenu, + "popupshown" + ); + synthesizeClickOnSelectedTreeCell(tree, { type: "contextmenu" }, win); + await popupShownPromise; + return contextMenu; + }, + optionItems, + win.SidebarController.browser.contentDocument + ); + }, + win + ); + + // Test library window opened when using private browsing window. + optionItems.splice( + optionItems.indexOf("placesContext_show_bookmark:info"), + 1 + ); + optionItems.splice(0, 0, "placesContext_open"); + + await withLibraryWindow( + "BookmarksToolbar", + async ({ right }) => { + await checkContextMenu( + async bookmark => { + let contextMenu = right.ownerDocument.getElementById("placesContext"); + let popupShownPromise = BrowserTestUtils.waitForEvent( + contextMenu, + "popupshown" + ); + right.selectItems([bookmark.guid]); + synthesizeClickOnSelectedTreeCell(right, { type: "contextmenu" }); + await popupShownPromise; + return contextMenu; + }, + optionItems, + right.ownerDocument + ); + }, + win + ); + + await BrowserTestUtils.closeWindow(win); +}); ===================================== browser/components/places/tests/browser/head.js ===================================== @@ -6,8 +6,8 @@ ChromeUtils.defineLazyGetter(this, "gFluentStrings", function () { return new Localization(["branding/brand.ftl", "browser/browser.ftl"], true); }); -function openLibrary(callback, aLeftPaneRoot) { - let library = window.openDialog( +function openLibrary(callback, aLeftPaneRoot, win = window) { + let library = win.openDialog( "chrome://browser/content/places/places.xhtml", "", "chrome,toolbar=yes,dialog=no,resizable", @@ -27,10 +27,12 @@ function openLibrary(callback, aLeftPaneRoot) { * * @param {object} aLeftPaneRoot * Hierarchy to open and select in the left pane. + * @param {Window} [win] + * The window to use to open the library. * @returns {Promise} * Resolves to the handle to the library window. */ -function promiseLibrary(aLeftPaneRoot) { +function promiseLibrary(aLeftPaneRoot, win = window) { return new Promise(resolve => { let library = Services.wm.getMostRecentWindow("Places:Organizer"); if (library && !library.closed) { @@ -42,7 +44,7 @@ function promiseLibrary(aLeftPaneRoot) { checkLibraryPaneVisibility(library, aLeftPaneRoot); resolve(library); } else { - openLibrary(resolve, aLeftPaneRoot); + openLibrary(resolve, aLeftPaneRoot, win); } }); } @@ -380,9 +382,11 @@ function fillBookmarkTextField(id, text, win, blur = true) { * @param {Function} taskFn * The task to execute once the sidebar is ready. Will get the Places * tree view as input. + * @param {Window} [win] + * The window to open the sidebar in, else uses the default window. */ -var withSidebarTree = async function (type, taskFn) { - let sidebar = document.getElementById("sidebar"); +var withSidebarTree = async function (type, taskFn, win = window) { + let sidebar = win.document.getElementById("sidebar"); info("withSidebarTree: waiting sidebar load"); let sidebarLoadedPromise = new Promise(resolve => { sidebar.addEventListener( @@ -395,7 +399,7 @@ var withSidebarTree = async function (type, taskFn) { }); let sidebarId = type == "bookmarks" ? "viewBookmarksSidebar" : "viewHistorySidebar"; - SidebarController.show(sidebarId); + win.SidebarController.show(sidebarId); await sidebarLoadedPromise; let treeId = type == "bookmarks" ? "bookmarks-view" : "historyTree"; @@ -406,7 +410,7 @@ var withSidebarTree = async function (type, taskFn) { try { await taskFn(tree); } finally { - SidebarController.hide(); + win.SidebarController.hide(); } }; @@ -419,9 +423,11 @@ var withSidebarTree = async function (type, taskFn) { * @param {Function} taskFn * The task to execute once the Library is ready. * Will get { left, right } trees as argument. + * @param {Window} [win] + * The window to use to open the library. */ -var withLibraryWindow = async function (hierarchy, taskFn) { - let library = await promiseLibrary(hierarchy); +var withLibraryWindow = async function (hierarchy, taskFn, win = window) { + let library = await promiseLibrary(hierarchy, win); let left = library.document.getElementById("placesList"); let right = library.document.getElementById("placeContent"); info("withLibrary: executing the task"); @@ -477,8 +483,8 @@ function promisePopupHidden(popup) { } // Identify a bookmark node in the Bookmarks Toolbar by its guid. -function getToolbarNodeForItemGuid(itemGuid) { - let children = document.getElementById("PlacesToolbarItems").childNodes; +function getToolbarNodeForItemGuid(itemGuid, win = window) { + let children = win.document.getElementById("PlacesToolbarItems").childNodes; for (let child of children) { if (itemGuid === child._placesNode.bookmarkGuid) { return child; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/9cd3c30… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/9cd3c30… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-128.2.0esr-14.0-1] Bug 1436462 - Use "Open in new private window" for bookmarks when in PBM. r=places-reviewers, mak
by morgan (@morgan) 17 Sep '24

17 Sep '24
morgan pushed to branch tor-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: 1d54c76d by Henry Wilkes at 2024-09-16T21:45:38+00:00 Bug 1436462 - Use &quot;Open in new private window&quot; for bookmarks when in PBM. r=places-reviewers,mak This makes the bookmark menu consistent with the &quot;File&quot; and context menu when using private browsing mode. We also share the same hide item logic for these &quot;open&quot; items in one place in PlacesUIUtils so that they can be shared between the two consumers (regular bookmarks and managed bookmarks). This ensures that the &quot;Open in container&quot; item if hidden for managed bookmarks in a private window. Differential Revision: https://phabricator.services.mozilla.com/D220120 - - - - - 5 changed files: - browser/components/places/PlacesUIUtils.sys.mjs - browser/components/places/content/controller.js - browser/components/places/content/placesContextMenu.inc.xhtml - browser/components/places/tests/browser/browser_bookmark_context_menu_contents.js - browser/components/places/tests/browser/head.js Changes: ===================================== browser/components/places/PlacesUIUtils.sys.mjs ===================================== @@ -1514,6 +1514,40 @@ export var PlacesUIUtils = { } }, + /** + * Determines whether the given "placesContext" menu item would open a link + * under some special conditions, but those special conditions cannot be met. + * + * @param {Element} item The menu or menu item to decide for. + * + * @returns {boolean} Whether the item is an "open" item that should be + * hidden. + */ + shouldHideOpenMenuItem(item) { + if ( + item.hasAttribute("hide-if-disabled-private-browsing") && + !lazy.PrivateBrowsingUtils.enabled + ) { + return true; + } + + if ( + item.hasAttribute("hide-if-private-browsing") && + lazy.PrivateBrowsingUtils.isWindowPrivate(item.ownerGlobal) + ) { + return true; + } + + if ( + item.hasAttribute("hide-if-usercontext-disabled") && + !Services.prefs.getBoolPref("privacy.userContext.enabled", false) + ) { + return true; + } + + return false; + }, + async managedPlacesContextShowing(event) { let menupopup = event.target; let document = menupopup.ownerDocument; @@ -1528,12 +1562,6 @@ export var PlacesUIUtils = { menupopup.triggerNode.menupopup ); } - let linkItems = [ - "placesContext_open:newtab", - "placesContext_open:newwindow", - "placesContext_openSeparator", - "placesContext_copy", - ]; // Hide everything. We'll unhide the things we need. Array.from(menupopup.children).forEach(function (child) { child.hidden = true; @@ -1555,12 +1583,18 @@ export var PlacesUIUtils = { openContainerInTabs_menuitem.disabled = !openContainerInTabs; openContainerInTabs_menuitem.hidden = false; } else { - linkItems.forEach(id => (document.getElementById(id).hidden = false)); - document.getElementById("placesContext_open:newprivatewindow").hidden = - lazy.PrivateBrowsingUtils.isWindowPrivate(window) || - !lazy.PrivateBrowsingUtils.enabled; - document.getElementById("placesContext_open:newcontainertab").hidden = - !Services.prefs.getBoolPref("privacy.userContext.enabled", false); + for (let id of [ + "placesContext_open:newtab", + "placesContext_open:newcontainertab", + "placesContext_open:newwindow", + "placesContext_open:newprivatewindow", + ]) { + let item = document.getElementById(id); + item.hidden = this.shouldHideOpenMenuItem(item); + } + for (let id of ["placesContext_openSeparator", "placesContext_copy"]) { + document.getElementById(id).hidden = false; + } } event.target.ownerGlobal.updateCommands("places"); ===================================== browser/components/places/content/controller.js ===================================== @@ -465,17 +465,7 @@ PlacesController.prototype = { * and the item can be displayed, false otherwise. */ _shouldShowMenuItem(aMenuItem, aMetaData) { - if ( - aMenuItem.hasAttribute("hide-if-private-browsing") && - !PrivateBrowsingUtils.enabled - ) { - return false; - } - - if ( - aMenuItem.hasAttribute("hide-if-usercontext-disabled") && - !Services.prefs.getBoolPref("privacy.userContext.enabled", false) - ) { + if (PlacesUIUtils.shouldHideOpenMenuItem(aMenuItem)) { return false; } @@ -566,8 +556,12 @@ PlacesController.prototype = { * menuitem when there's no insertion point. An insertion point represents * a point in the view where a new item can be inserted. * 9) The boolean `hide-if-private-browsing` attribute may be set to hide a - * menuitem in private browsing mode - * 10) The boolean `hide-if-single-click-opens` attribute may be set to hide a + * menuitem in private browsing mode. + * 10) The boolean `hide-if-disabled-private-browsing` attribute may be set to + * hide a menuitem if private browsing is not enabled. + * 11) The boolean `hide-if-usercontext-disabled` attribute may be set to + * hide a menuitem if containers are disabled. + * 12) The boolean `hide-if-single-click-opens` attribute may be set to hide a * menuitem in views opening entries with a single click. * * @param {object} aPopup @@ -593,9 +587,6 @@ PlacesController.prototype = { item.getAttribute("hide-if-no-insertion-point") == "true" && noIp && !(ip && ip.isTag && item.id == "placesContext_paste"); - let hideIfPrivate = - item.getAttribute("hide-if-private-browsing") == "true" && - PrivateBrowsingUtils.isWindowPrivate(window); // Hide `Open` if the primary action on click is opening. let hideIfSingleClickOpens = item.getAttribute("hide-if-single-click-opens") == "true" && @@ -610,7 +601,6 @@ PlacesController.prototype = { let shouldHideItem = hideIfNoIP || - hideIfPrivate || hideIfSingleClickOpens || hideIfNotSearch || !this._shouldShowMenuItem(item, metadata); ===================================== browser/components/places/content/placesContextMenu.inc.xhtml ===================================== @@ -52,13 +52,14 @@ command="placesCmd_open:window" data-l10n-id="places-open-in-window" selection-type="single" - node-type="link"/> + node-type="link" + hide-if-private-browsing="true"/> <menuitem id="placesContext_open:newprivatewindow" command="placesCmd_open:privatewindow" data-l10n-id="places-open-in-private-window" selection-type="single" node-type="link" - hide-if-private-browsing="true"/> + hide-if-disabled-private-browsing="true"/> <menuitem id="placesContext_showInFolder" data-l10n-id="places-show-in-folder" command="placesCmd_showInFolder" ===================================== browser/components/places/tests/browser/browser_bookmark_context_menu_contents.js ===================================== @@ -814,3 +814,118 @@ add_task(async function test_library_noselection_contextmenu_contents() { ); }); }); + +add_task(async function test_private_browsing_window() { + // Test the context menu when in a private browsing window. + + let win = await BrowserTestUtils.openNewBrowserWindow({ + private: true, + }); + + let optionItems = [ + "placesContext_open:newtab", + // Hidden in private window "placesContext_open:newcontainertab" + // Hidden in private window "placesContext_open:newwindow" + "placesContext_open:newprivatewindow", + "placesContext_show_bookmark:info", + "placesContext_deleteBookmark", + "placesContext_cut", + "placesContext_copy", + "placesContext_paste_group", + "placesContext_new:bookmark", + "placesContext_new:folder", + "placesContext_new:separator", + ]; + + // Test toolbar. + await checkContextMenu( + async function () { + let toolbarBookmark = await PlacesUtils.bookmarks.insert({ + parentGuid: PlacesUtils.bookmarks.toolbarGuid, + title: "Bookmark Title", + url: TEST_URL, + }); + + let toolbarNode = getToolbarNodeForItemGuid(toolbarBookmark.guid, win); + + let contextMenu = win.document.getElementById("placesContext"); + let popupShownPromise = BrowserTestUtils.waitForEvent( + contextMenu, + "popupshown" + ); + + EventUtils.synthesizeMouseAtCenter( + toolbarNode, + { button: 2, type: "contextmenu" }, + win + ); + await popupShownPromise; + return contextMenu; + }, + [ + ...optionItems, + "placesContext_showAllBookmarks", + "toggle_PersonalToolbar", + "show-other-bookmarks_PersonalToolbar", + ], + win.document + ); + + // Test side bar. + await withSidebarTree( + "bookmarks", + async tree => { + await checkContextMenu( + async bookmark => { + tree.selectItems([bookmark.guid]); + + let contextMenu = + win.SidebarController.browser.contentDocument.getElementById( + "placesContext" + ); + let popupShownPromise = BrowserTestUtils.waitForEvent( + contextMenu, + "popupshown" + ); + synthesizeClickOnSelectedTreeCell(tree, { type: "contextmenu" }, win); + await popupShownPromise; + return contextMenu; + }, + optionItems, + win.SidebarController.browser.contentDocument + ); + }, + win + ); + + // Test library window opened when using private browsing window. + optionItems.splice( + optionItems.indexOf("placesContext_show_bookmark:info"), + 1 + ); + optionItems.splice(0, 0, "placesContext_open"); + + await withLibraryWindow( + "BookmarksToolbar", + async ({ right }) => { + await checkContextMenu( + async bookmark => { + let contextMenu = right.ownerDocument.getElementById("placesContext"); + let popupShownPromise = BrowserTestUtils.waitForEvent( + contextMenu, + "popupshown" + ); + right.selectItems([bookmark.guid]); + synthesizeClickOnSelectedTreeCell(right, { type: "contextmenu" }); + await popupShownPromise; + return contextMenu; + }, + optionItems, + right.ownerDocument + ); + }, + win + ); + + await BrowserTestUtils.closeWindow(win); +}); ===================================== browser/components/places/tests/browser/head.js ===================================== @@ -6,8 +6,8 @@ ChromeUtils.defineLazyGetter(this, "gFluentStrings", function () { return new Localization(["branding/brand.ftl", "browser/browser.ftl"], true); }); -function openLibrary(callback, aLeftPaneRoot) { - let library = window.openDialog( +function openLibrary(callback, aLeftPaneRoot, win = window) { + let library = win.openDialog( "chrome://browser/content/places/places.xhtml", "", "chrome,toolbar=yes,dialog=no,resizable", @@ -27,10 +27,12 @@ function openLibrary(callback, aLeftPaneRoot) { * * @param {object} aLeftPaneRoot * Hierarchy to open and select in the left pane. + * @param {Window} [win] + * The window to use to open the library. * @returns {Promise} * Resolves to the handle to the library window. */ -function promiseLibrary(aLeftPaneRoot) { +function promiseLibrary(aLeftPaneRoot, win = window) { return new Promise(resolve => { let library = Services.wm.getMostRecentWindow("Places:Organizer"); if (library && !library.closed) { @@ -42,7 +44,7 @@ function promiseLibrary(aLeftPaneRoot) { checkLibraryPaneVisibility(library, aLeftPaneRoot); resolve(library); } else { - openLibrary(resolve, aLeftPaneRoot); + openLibrary(resolve, aLeftPaneRoot, win); } }); } @@ -380,9 +382,11 @@ function fillBookmarkTextField(id, text, win, blur = true) { * @param {Function} taskFn * The task to execute once the sidebar is ready. Will get the Places * tree view as input. + * @param {Window} [win] + * The window to open the sidebar in, else uses the default window. */ -var withSidebarTree = async function (type, taskFn) { - let sidebar = document.getElementById("sidebar"); +var withSidebarTree = async function (type, taskFn, win = window) { + let sidebar = win.document.getElementById("sidebar"); info("withSidebarTree: waiting sidebar load"); let sidebarLoadedPromise = new Promise(resolve => { sidebar.addEventListener( @@ -395,7 +399,7 @@ var withSidebarTree = async function (type, taskFn) { }); let sidebarId = type == "bookmarks" ? "viewBookmarksSidebar" : "viewHistorySidebar"; - SidebarController.show(sidebarId); + win.SidebarController.show(sidebarId); await sidebarLoadedPromise; let treeId = type == "bookmarks" ? "bookmarks-view" : "historyTree"; @@ -406,7 +410,7 @@ var withSidebarTree = async function (type, taskFn) { try { await taskFn(tree); } finally { - SidebarController.hide(); + win.SidebarController.hide(); } }; @@ -419,9 +423,11 @@ var withSidebarTree = async function (type, taskFn) { * @param {Function} taskFn * The task to execute once the Library is ready. * Will get { left, right } trees as argument. + * @param {Window} [win] + * The window to use to open the library. */ -var withLibraryWindow = async function (hierarchy, taskFn) { - let library = await promiseLibrary(hierarchy); +var withLibraryWindow = async function (hierarchy, taskFn, win = window) { + let library = await promiseLibrary(hierarchy, win); let left = library.document.getElementById("placesList"); let right = library.document.getElementById("placeContent"); info("withLibrary: executing the task"); @@ -477,8 +483,8 @@ function promisePopupHidden(popup) { } // Identify a bookmark node in the Bookmarks Toolbar by its guid. -function getToolbarNodeForItemGuid(itemGuid) { - let children = document.getElementById("PlacesToolbarItems").childNodes; +function getToolbarNodeForItemGuid(itemGuid, win = window) { + let children = win.document.getElementById("PlacesToolbarItems").childNodes; for (let child of children) { if (itemGuid === child._placesNode.bookmarkGuid) { return child; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/1d54c76… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/1d54c76… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][maint-13.5] MB 334: Fix .desktop file for opening external links
by morgan (@morgan) 17 Sep '24

17 Sep '24
morgan pushed to branch maint-13.5 at The Tor Project / Applications / tor-browser-build Commits: 6027863e by Nicolas Vigier at 2024-09-17T18:36:17+00:00 MB 334: Fix .desktop file for opening external links The `Exec` entry from the .desktop file included in the rpm and deb packages was missing the `%u` parameter. - - - - - 1 changed file: - projects/linux-packages/browser.desktop.in Changes: ===================================== projects/linux-packages/browser.desktop.in ===================================== @@ -5,7 +5,7 @@ Name=[% c("var/Project_Name") %] GenericName=Web Browser Comment=[% c("var/system_pkg/pkg_description") %] Categories=Network;WebBrowser; -Exec=/[% c("var/system_pkg/install_path") %]/start-[% c("var/project-name") %] --detach +Exec=/[% c("var/system_pkg/install_path") %]/start-[% c("var/project-name") %] --detach %u Icon=[% c("var/system_pkg/pkg_name") %] StartupWMClass=[% c("var/display_name") %] [% IF ! c("var/tor-browser") -%] View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/6… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/6… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-update-responses][main] release: new version, 13.5.4
by morgan (@morgan) 17 Sep '24

17 Sep '24
morgan pushed to branch main at The Tor Project / Applications / Tor Browser update responses Commits: c3a2e496 by Morgan at 2024-09-17T16:29:47+00:00 release: new version, 13.5.4 - - - - - 30 changed files: - update_3/release/.htaccess - − update_3/release/13.5-13.5.3-linux-i686-ALL.xml - − update_3/release/13.5-13.5.3-linux-x86_64-ALL.xml - − update_3/release/13.5-13.5.3-macos-ALL.xml - − update_3/release/13.5-13.5.3-windows-i686-ALL.xml - − update_3/release/13.5-13.5.3-windows-x86_64-ALL.xml - − update_3/release/13.5.1-13.5.3-linux-i686-ALL.xml - − update_3/release/13.5.1-13.5.3-linux-x86_64-ALL.xml - − update_3/release/13.5.1-13.5.3-macos-ALL.xml - − update_3/release/13.5.1-13.5.3-windows-i686-ALL.xml - − update_3/release/13.5.1-13.5.3-windows-x86_64-ALL.xml - + update_3/release/13.5.1-13.5.4-linux-i686-ALL.xml - + update_3/release/13.5.1-13.5.4-linux-x86_64-ALL.xml - + update_3/release/13.5.1-13.5.4-macos-ALL.xml - + update_3/release/13.5.1-13.5.4-windows-i686-ALL.xml - + update_3/release/13.5.1-13.5.4-windows-x86_64-ALL.xml - − update_3/release/13.5.2-13.5.3-linux-i686-ALL.xml - − update_3/release/13.5.2-13.5.3-linux-x86_64-ALL.xml - − update_3/release/13.5.2-13.5.3-macos-ALL.xml - − update_3/release/13.5.2-13.5.3-windows-i686-ALL.xml - − update_3/release/13.5.2-13.5.3-windows-x86_64-ALL.xml - + update_3/release/13.5.2-13.5.4-linux-i686-ALL.xml - + update_3/release/13.5.2-13.5.4-linux-x86_64-ALL.xml - + update_3/release/13.5.2-13.5.4-macos-ALL.xml - + update_3/release/13.5.2-13.5.4-windows-i686-ALL.xml - + update_3/release/13.5.2-13.5.4-windows-x86_64-ALL.xml - + update_3/release/13.5.3-13.5.4-linux-i686-ALL.xml - + update_3/release/13.5.3-13.5.4-linux-x86_64-ALL.xml - + update_3/release/13.5.3-13.5.4-macos-ALL.xml - + update_3/release/13.5.3-13.5.4-windows-i686-ALL.xml The diff was not included because it is too large. View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-update-responses… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build] Pushed new tag tbb-13.5.4-build1
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed new tag tbb-13.5.4-build1 at The Tor Project / Applications / tor-browser-build -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/tree/tbb… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][maint-13.5] Bug 41320: Prepare Tor Browser 13.5.4
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed to branch maint-13.5 at The Tor Project / Applications / tor-browser-build Commits: f8a2d807 by Morgan at 2024-09-16T21:17:01+00:00 Bug 41320: Prepare Tor Browser 13.5.4 - - - - - 9 changed files: - projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt - projects/browser/allowed_addons.json - projects/browser/config - projects/firefox-android/config - projects/firefox/config - projects/geckoview/config - projects/openssl/config - projects/translation/config - rbm.conf Changes: ===================================== projects/browser/Bundle-Data/Docs-TBB/ChangeLog.txt ===================================== @@ -1,3 +1,111 @@ +Tor Browser 13.5.4 - September 16 2024 + * All Platforms + * Updated NoScript to 11.4.37 + * Updated OpenSSL to 3.0.15 + * Windows + macOS + Linux + * Bug 41835: Review default search engine options [tor-browser] + * Android + * Bug 43124: Implement a migration procedure for Android [tor-browser] + * Bug 43145: Backport Android security fix from 130.0.1 [tor-browser] + * Build System + * All Platforms + * Bug 41229: Migrate OpenSSL download location to github releases [tor-browser-build] + * macOS + * Bug 41231: Use var/browser_release_date in tools/signing/gatekeeper-bundling.sh [tor-browser-build] + +Tor Browser 14.0a5 - September 12 2024 + * All Platforms + * Updated NoScript to 11.4.37 + * Bug 42255: pdfjs.disabled used to be part of RFP until Bug 1838415; lock pref to false in stable [tor-browser] + * Bug 42746: Extend prefers-contrast rules to include forced-colors [tor-browser] + * Bug 43046: Review Mozilla 1866927: Adds ability to enable email tracker blocking protection in private mode [tor-browser] + * Bug 43054: check bounceTrackingProtection in PB mode does not persist to disk [tor-browser] + * Windows + macOS + Linux + * Bug 42647: "Switching to a new device" regressed on 128 [tor-browser] + * Bug 42653: The Neterror page has a checkbox to report iframe origin errors to TPO [tor-browser] + * Bug 42777: Remove 'Website Privacy Preferences' and ensure sensible default prefs [tor-browser] + * Bug 43087: Onion pattern on about:torconnect needs a dark theme asset [tor-browser] + * Bug 43109: Remove mention of Firefox Relay from settings [tor-browser] + * Bug 43115: Height of search bar has collapsed on about:tor [tor-browser] + * Bug 43117: Hide 'Always underline links' option [tor-browser] + * Bug 43118: hide CFR [tor-browser] + * Bug 43131: Reduce layout jank when loading about:tor [tor-browser] + * Linux + * Bug 42702: Cannot access the clipboard for the crypto address check (wayland) [tor-browser] + * Bug 334: When set as default browser on Linux in standard mode, links don't open correctly [mullvad-browser] + * Android + * Bug 42954: Remove product recommendation API integration (Review Mozilla 1857215) [tor-browser] + * Bug 43097: NoScript fails to install on Android [tor-browser] + * Bug 43108: Backport Android fullscreen notifications refactoring on ESR128 [tor-browser] + * Bug 43128: Use DuckDuckGo HTML on the Safest security level for Android [tor-browser] + * Build System + * All Platforms + * Updated Go to 1.23.1 + * macOS + * Bug 41231: Use var/browser_release_date in tools/signing/gatekeeper-bundling.sh [tor-browser-build] + * Android + * Bug 41106: Non matching builds after application-services not being rebuilt in a long time [tor-browser-build] + * Bug 41232: Re-implement single-arch builds after the monorepo migration [tor-browser-build] + * Bug 41234: More dependencies are needed when building Android as a release [tor-browser-build] + +Tor Browser 14.0a4 - September 06 2024 + * All Platforms + * Updated NoScript to 11.4.35 + * Updated OpenSSL to 3.0.15 + * Bug 30862: 10ms time precision via EXSLT date-time function [tor-browser] + * Bug 42601: Check Bug 1894779: Allow font-face urls to be resource:// urls and relax CORS for resource:// URLs [tor-browser] + * Bug 42684: Disable network prefetch [tor-browser] + * Bug 42685: compat: ESR128: enable textmetrics [tor-browser] + * Bug 42686: Backport Mozilla 1885101 [tor-browser] + * Bug 42730: Make RemoteSettings use only local dumps [tor-browser] + * Bug 42867: Disable contentRelevancy component [tor-browser] + * Bug 43100: Backport security fixes from Firefox 130 [tor-browser] + * Windows + macOS + Linux + * Bug 40147: Re-enable Picture-in-Picture mode [tor-browser] + * Bug 41309: Re-enable screenshots component [tor-browser] + * Bug 41835: Review default search engine options [tor-browser] + * Bug 42617: Restore the HTML form on DDG when using safest in 128 [tor-browser] + * Bug 42630: Review LaterRun in 128 [tor-browser] + * Bug 42640: Disable Firefox Flame button due to unknown interactions with New Identity [tor-browser] + * Bug 42735: Disable recent search suggestions [tor-browser] + * Bug 42737: Drop the hash check on updates [tor-browser] + * Bug 42743: Invalid onion sites are shown as secure in the page info window [tor-browser] + * Bug 42744: Light theme override for "about:tor" is inherited by chrome error pages. [tor-browser] + * Bug 42745: Remove some residuals from update scripts [tor-browser] + * Bug 42764: Unconditionally disable find-bar transition animation [tor-browser] + * Bug 42803: Lost focus styling for built-in bridges radio options [tor-browser] + * Bug 42891: Review Mozilla 1854965: Define new search engine configuration schema [tor-browser] + * Bug 43015: Missing region-name-skr fluent entry when fetching TorConnect country names [tor-browser] + * Bug 43075: Should we drop link spacing in about:tor [tor-browser] + * Bug 43082: Search engine icon is not shown while typing in the address bar [tor-browser] + * Bug 43103: Verify whether an update is unsupported before choosing one [tor-browser] + * Bug 43105: Migrating Disconnect is not needed anymore [tor-browser] + * macOS + Linux + * Bug 42467: Make OS HTTP User-Agent OS spoofing configurable by pref [tor-browser] + * macOS + * Bug 42494: mac: add Arial Black and Arial Narrow to allowlist [tor-browser] + * Linux + * Bug 42773: Replace ~ with the original HOME [tor-browser] + * Bug 43092: Disable Wayland by default in 14.0 [tor-browser] + * Android + * Bug 42655: Implement "New circuit for this site" on Android [tor-browser] + * Bug 42731: Verify `privacy.spoof_english` still works once we have Android builds [tor-browser] + * Bug 43016: Re-disable Nimbus [tor-browser] + * Bug 43023: Review Mozilla 1872510: Use SamsungColorEmoji by default for Samsung devices [tor-browser] + * Bug 43043: Remove credit card autofill UI elements from menu [tor-browser] + * Bug 43088: Query stripping is disabled on Android [tor-browser] + * Bug 43094: Remove "Open in regular tab" button [tor-browser] + * Bug 43114: Reader view uses the catch-all circuit on Android [tor-browser] + * Bug 43116: The lack of GeoIP databases produces a lot of spam in the console on Android [tor-browser] + * Build System + * All Platforms + * Bug 41096: Set SOURCE_DATE_EPOCH in the default env variables [tor-browser-build] + * Bug 41180: Some files do not need to be copied when building tor-expert-bundle [tor-browser-build] + * Bug 41188: Upgrade binutils to 2.41 [tor-browser-build] + * Bug 41229: Migrate OpenSSL download location to github releases [tor-browser-build] + * Android + * Bug 41224: Do not ship Conjure and GeoIP databases on Android x86, x86-64 to save some space [tor-browser-build] + Tor Browser 13.5.3 - September 03 2024 * All Platforms * Updated NoScript to 11.4.35 ===================================== projects/browser/allowed_addons.json ===================================== @@ -17,7 +17,7 @@ "picture_url": "https://addons.mozilla.org/user-media/userpics/34/9734/13299734/13299734.pn…" } ], - "average_daily_users": 1140698, + "average_daily_users": 1193962, "categories": { "firefox": [ "web-development", @@ -28,7 +28,7 @@ "contributions_url": "https://opencollective.com/darkreader?utm_content=product-page-contribute&u…", "created": "2017-09-19T07:03:00Z", "current_version": { - "id": 5796944, + "id": 5807097, "compatibility": { "firefox": { "min": "78.0", @@ -39,7 +39,7 @@ "max": "*" } }, - "edit_url": "https://addons.mozilla.org/en-US/developers/addon/darkreader/versions/57969…", + "edit_url": "https://addons.mozilla.org/en-US/developers/addon/darkreader/versions/58070…", "is_strict_compatibility_enabled": false, "license": { "id": 22, @@ -50,22 +50,22 @@ "url": "http://www.opensource.org/license/mit" }, "release_notes": { - "en-US": "- Removed www part from website URLs.\n- Fixed colors for static site fixes.\n- Apply ignored image selectors for gradients.\n- Users' fixes for websites." + "en-US": "- Detect website's dark theme by default.\n- Use Filter mode for particular websites by default (Google Docs, Microsoft Office).\n- Fixed breaking on default selection color.\n- Users' fixes for websites." }, - "reviewed": "2024-08-27T12:16:01Z", - "version": "4.9.89", + "reviewed": "2024-09-16T12:10:25Z", + "version": "4.9.92", "files": [ { - "id": 4341235, - "created": "2024-08-23T02:07:01Z", - "hash": "sha256:f4a5b4d5966d99cc68b31a9d2072cdb6388efefa9d45746f03d76e3c897c49be", + "id": 4351387, + "created": "2024-09-11T16:04:34Z", + "hash": "sha256:be55b3ea5bab95743d43823d9290fa820035b89c4d07943b568111d837a98226", "is_restart_required": false, "is_webextension": true, "is_mozilla_signed_extension": false, "platform": "all", - "size": 764773, + "size": 768509, "status": "public", - "url": "https://addons.mozilla.org/firefox/downloads/file/4341235/darkreader-4.9.89…", + "url": "https://addons.mozilla.org/firefox/downloads/file/4351387/darkreader-4.9.92…", "permissions": [ "alarms", "contextMenus", @@ -143,7 +143,7 @@ }, "is_disabled": false, "is_experimental": false, - "last_updated": "2024-08-27T12:16:01Z", + "last_updated": "2024-09-16T12:10:25Z", "name": { "ar": "Dark Reader", "bn": "Dark Reader", @@ -218,10 +218,10 @@ "category": "recommended" }, "ratings": { - "average": 4.5268, - "bayesian_average": 4.5257181938569415, - "count": 5794, - "text_count": 1817 + "average": 4.5273, + "bayesian_average": 4.526224812542353, + "count": 5845, + "text_count": 1836 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/reviews/", "requires_payment": false, @@ -318,7 +318,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/darkreader/versions/", - "weekly_downloads": 28794 + "weekly_downloads": 28283 }, "notes": null }, @@ -334,7 +334,7 @@ "picture_url": "https://addons.mozilla.org/user-media/userpics/56/7656/6937656/6937656.png?…" } ], - "average_daily_users": 244616, + "average_daily_users": 256725, "categories": { "firefox": [ "privacy-security" @@ -547,10 +547,10 @@ "category": "recommended" }, "ratings": { - "average": 4.7952, - "bayesian_average": 4.790572428009504, - "count": 1450, - "text_count": 262 + "average": 4.7945, + "bayesian_average": 4.789878349264025, + "count": 1455, + "text_count": 263 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/reviews/", "requires_payment": false, @@ -635,7 +635,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/decentraleyes/versions/", - "weekly_downloads": 3185 + "weekly_downloads": 3102 }, "notes": null }, @@ -651,7 +651,7 @@ "picture_url": "https://addons.mozilla.org/user-media/userpics/73/4073/5474073/5474073.png?…" } ], - "average_daily_users": 1207093, + "average_daily_users": 1263479, "categories": { "firefox": [ "privacy-security" @@ -1171,9 +1171,9 @@ }, "ratings": { "average": 4.803, - "bayesian_average": 4.800307318873676, - "count": 2498, - "text_count": 472 + "bayesian_average": 4.800311779877251, + "count": 2508, + "text_count": 473 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/reviews/", "requires_payment": false, @@ -1197,7 +1197,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-badger17/versions/", - "weekly_downloads": 25580 + "weekly_downloads": 23724 }, "notes": null }, @@ -1213,7 +1213,7 @@ "picture_url": null } ], - "average_daily_users": 7837121, + "average_daily_users": 8309629, "categories": { "firefox": [ "privacy-security" @@ -1378,7 +1378,7 @@ }, "is_disabled": false, "is_experimental": false, - "last_updated": "2024-09-02T23:55:23Z", + "last_updated": "2024-09-15T13:50:37Z", "name": { "ar": "uBlock Origin", "bg": "uBlock Origin", @@ -1523,10 +1523,10 @@ "category": "recommended" }, "ratings": { - "average": 4.7904, - "bayesian_average": 4.7900338967513205, - "count": 18333, - "text_count": 4783 + "average": 4.7905, + "bayesian_average": 4.790134246767273, + "count": 18397, + "text_count": 4805 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/reviews/", "requires_payment": false, @@ -1589,7 +1589,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/versions/", - "weekly_downloads": 193211 + "weekly_downloads": 193086 }, "notes": null }, @@ -1605,7 +1605,7 @@ "picture_url": null } ], - "average_daily_users": 167408, + "average_daily_users": 184356, "categories": { "firefox": [ "photos-music-videos", @@ -1701,10 +1701,10 @@ "category": "recommended" }, "ratings": { - "average": 4.4543, - "bayesian_average": 4.449467320720743, - "count": 1270, - "text_count": 492 + "average": 4.4561, + "bayesian_average": 4.451276485748058, + "count": 1276, + "text_count": 494 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/re…", "requires_payment": false, @@ -1726,7 +1726,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/video-background-play-fix/ve…", - "weekly_downloads": 384 + "weekly_downloads": 348 }, "notes": null }, @@ -1742,7 +1742,7 @@ "picture_url": null } ], - "average_daily_users": 61260, + "average_daily_users": 63521, "categories": { "firefox": [ "privacy-security", @@ -1877,7 +1877,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/privacy-possum/versions/", - "weekly_downloads": 347 + "weekly_downloads": 303 }, "notes": null }, @@ -1893,7 +1893,7 @@ "picture_url": "https://addons.mozilla.org/user-media/userpics/64/9064/12929064/12929064.pn…" } ], - "average_daily_users": 347042, + "average_daily_users": 361067, "categories": { "firefox": [ "search-tools", @@ -2110,10 +2110,10 @@ "category": "recommended" }, "ratings": { - "average": 4.6212, - "bayesian_average": 4.617005841441428, - "count": 1531, - "text_count": 306 + "average": 4.6204, + "bayesian_average": 4.616225871818597, + "count": 1541, + "text_count": 308 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/reviews/", "requires_payment": false, @@ -2136,7 +2136,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/search_by_image/versions/", - "weekly_downloads": 6345 + "weekly_downloads": 5811 }, "notes": null }, @@ -2159,7 +2159,7 @@ "picture_url": null } ], - "average_daily_users": 112925, + "average_daily_users": 121865, "categories": { "firefox": [ "search-tools", @@ -2440,10 +2440,10 @@ "category": "recommended" }, "ratings": { - "average": 4.3856, - "bayesian_average": 4.381265145234359, - "count": 1390, - "text_count": 391 + "average": 4.3853, + "bayesian_average": 4.3809603183078645, + "count": 1391, + "text_count": 392 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/reviews/", "requires_payment": false, @@ -2463,7 +2463,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/google-search-fixer/versions/", - "weekly_downloads": 28 + "weekly_downloads": 17 }, "notes": null }, @@ -2479,7 +2479,7 @@ "picture_url": "https://addons.mozilla.org/user-media/userpics/43/0143/143/143.png?modified…" } ], - "average_daily_users": 278811, + "average_daily_users": 290230, "categories": { "firefox": [ "privacy-security", @@ -2489,7 +2489,7 @@ "contributions_url": "https://www.paypal.com/donate/?hosted_button_id=9ERKTU5MBH4EW&utm_content=p…", "created": "2005-05-13T10:51:32Z", "current_version": { - "id": 5799020, + "id": 5805224, "compatibility": { "firefox": { "min": "59.0", @@ -2500,7 +2500,7 @@ "max": "*" } }, - "edit_url": "https://addons.mozilla.org/en-US/developers/addon/noscript/versions/5799020", + "edit_url": "https://addons.mozilla.org/en-US/developers/addon/noscript/versions/5805224", "is_strict_compatibility_enabled": false, "license": { "id": 13, @@ -2511,22 +2511,22 @@ "url": "http://www.gnu.org/licenses/gpl-2.0.html" }, "release_notes": { - "en-US": "v 11.4.35\n============================================================\nx Improved lazy_load capability (optimization and\n notification)\nx [nscl] Slight optimization of NOSCRIPT element emulation\n loop\nx Automatically add extra capabilities to policyTypesMap\nx Gracefully handle new capabilities still unknown to the\n settings host (e.g. Tor/Mullvad browser), if any\nx Configurable \"lazy_load\" capability (see\n <a href=\"https://prod.outgoing.prod.webservices.mozgcp.net/v1/b3e6aa3e27d1f746591f0a…" rel=\"nofollow\">https://github.com/whatwg/html/issues/5250</a>)\nx Prefetch all CSS subresources (1st party included) in\n private contexts where both unchecked_css and scripting\n capabilities are disabled\nx Forcibly neutralize lazy loading attributes when scripting\n is disabled\nx [nscl] Restored SyncMessage compatibility with Firefox 78\n and below\nx Lock nscl version on stable releases\nx [L10n] Updated de, fr, tr, ru, uk, zh_CN" + "en-US": "v 11.4.37\n============================================================\nx [nscl] Do not patch windows with WebGLHook if webgl is\n globally disabled\nx [nscl] Do not patch workers if webgl is globally disabled\nx [L10n] Updated uk\nx [nscl] Workers-aware WebGL Hook" }, - "reviewed": "2024-08-28T15:03:34Z", - "version": "11.4.35", + "reviewed": "2024-09-10T14:37:13Z", + "version": "11.4.37", "files": [ { - "id": 4343311, - "created": "2024-08-26T22:32:41Z", - "hash": "sha256:a448e4c2e0eb7ca5fb1b6d3189bc586b91a7ee6facecdd0424f1bfbf2b3016fb", + "id": 4349514, + "created": "2024-09-08T16:36:27Z", + "hash": "sha256:5e9921599c63e0b357851ea7ca1354554b3af2c676bbbfff5687cafce4396c18", "is_restart_required": false, "is_webextension": true, "is_mozilla_signed_extension": false, "platform": "all", - "size": 956549, + "size": 964305, "status": "public", - "url": "https://addons.mozilla.org/firefox/downloads/file/4343311/noscript-11.4.35.…", + "url": "https://addons.mozilla.org/firefox/downloads/file/4349514/noscript-11.4.37.…", "permissions": [ "contextMenus", "storage", @@ -2593,7 +2593,7 @@ }, "is_disabled": false, "is_experimental": false, - "last_updated": "2024-08-28T15:03:34Z", + "last_updated": "2024-09-11T21:25:21Z", "name": { "de": "NoScript", "el": "NoScript", @@ -2665,10 +2665,10 @@ "category": "recommended" }, "ratings": { - "average": 4.4063, - "bayesian_average": 4.4036255442284284, - "count": 2267, - "text_count": 865 + "average": 4.4081, + "bayesian_average": 4.405428009528521, + "count": 2274, + "text_count": 866 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/reviews/", "requires_payment": false, @@ -2712,7 +2712,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/noscript/versions/", - "weekly_downloads": 8229 + "weekly_downloads": 7945 }, "notes": null }, @@ -2728,7 +2728,7 @@ "picture_url": null } ], - "average_daily_users": 151659, + "average_daily_users": 162749, "categories": { "firefox": [ "photos-music-videos", @@ -2838,10 +2838,10 @@ "category": "recommended" }, "ratings": { - "average": 3.8397, - "bayesian_average": 3.835705118967834, - "count": 1279, - "text_count": 462 + "average": 3.8384, + "bayesian_average": 3.834405527869751, + "count": 1281, + "text_count": 463 }, "ratings_url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/revi…", "requires_payment": false, @@ -2860,7 +2860,7 @@ "type": "extension", "url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/", "versions_url": "https://addons.mozilla.org/en-US/firefox/addon/youtube-high-definition/vers…", - "weekly_downloads": 2616 + "weekly_downloads": 1750 }, "notes": null } ===================================== projects/browser/config ===================================== @@ -104,9 +104,9 @@ input_files: enable: '[% ! c("var/android") %]' - filename: Bundle-Data enable: '[% ! c("var/android") %]' - - URL: https://addons.mozilla.org/firefox/downloads/file/4343311/noscript-11.4.35.… + - URL: https://addons.mozilla.org/firefox/downloads/file/4349514/noscript-11.4.37.… name: noscript - sha256sum: a448e4c2e0eb7ca5fb1b6d3189bc586b91a7ee6facecdd0424f1bfbf2b3016fb + sha256sum: 5e9921599c63e0b357851ea7ca1354554b3af2c676bbbfff5687cafce4396c18 - URL: https://addons.mozilla.org/firefox/downloads/file/4328681/ublock_origin-1.5… name: ublock-origin sha256sum: 1db9c676a07d141f8d36dbbc24f9e3d64a6cc2340dbfc6c848bc4395f96cfb14 ===================================== projects/firefox-android/config ===================================== @@ -16,7 +16,7 @@ container: var: fenix_version: 115.2.1 browser_branch: 13.5-1 - browser_build: 14 + browser_build: 15 variant: Beta # This should be updated when the list of gradle dependencies is changed. gradle_dependencies_version: 1 ===================================== projects/firefox/config ===================================== @@ -19,7 +19,7 @@ var: browser_series: '13.5' browser_rebase: 1 browser_branch: '[% c("var/browser_series") %]-[% c("var/browser_rebase") %]' - browser_build: 3 + browser_build: 4 branding_directory_prefix: 'tb' copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]' nightly_updates_publish_dir: '[% c("var/nightly_updates_publish_dir_prefix") %]nightly-[% c("var/osname") %]' ===================================== projects/geckoview/config ===================================== @@ -16,7 +16,7 @@ container: var: geckoview_version: 115.15.0esr browser_branch: 13.5-1 - browser_build: 3 + browser_build: 4 copyright_year: '[% exec("git show -s --format=%ci").remove("-.*") %]' gitlab_project: https://gitlab.torproject.org/tpo/applications/tor-browser git_commit: '[% exec("git rev-parse HEAD") %]' ===================================== projects/openssl/config ===================================== @@ -1,5 +1,5 @@ # vim: filetype=yaml sw=2 -version: 3.0.14 +version: 3.0.15 filename: '[% project %]-[% c("version") %]-[% c("var/osname") %]-[% c("var/build_id") %].tar.[% c("compress_tar") %]' container: use_container: 1 @@ -36,5 +36,5 @@ input_files: - name: '[% c("var/compiler") %]' project: '[% c("var/compiler") %]' - URL: 'https://github.com/openssl/openssl/releases/download/openssl-[% c("version") %]/openssl-[% c("version") %].tar.gz' - sha256sum: eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca + sha256sum: 23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533 name: openssl ===================================== projects/translation/config ===================================== @@ -12,13 +12,13 @@ compress_tar: 'gz' steps: base-browser: base-browser: '[% INCLUDE build %]' - git_hash: daed2afc487d1b20efc17feb153156524c6f714b + git_hash: d69ac083437e60d681fdefce6aa1fde96e2f1eaf targets: nightly: git_hash: 'base-browser' tor-browser: tor-browser: '[% INCLUDE build %]' - git_hash: 6374e3b09c0894b8452fa1ba0b99c807722fc805 + git_hash: 022b7eea73017cd3a1fae66b8c4bd8d7b867107f targets: nightly: git_hash: 'tor-browser' @@ -32,7 +32,7 @@ steps: fenix: '[% INCLUDE build %]' # We need to bump the commit before releasing but just pointing to a branch # might cause too much rebuidling of the Firefox part. - git_hash: f1585565f1635f18ab20a2fbdea4fdd72aa6c533 + git_hash: 2a9884fadf15e57f6a661f12ede1312cc71602c1 compress_tar: 'zst' targets: nightly: ===================================== rbm.conf ===================================== @@ -73,18 +73,18 @@ buildconf: git_signtag_opt: '-s' var: - torbrowser_version: '13.5.3' + torbrowser_version: '13.5.4' torbrowser_build: 'build1' # This should be the date of when the build is started. For the build # to be reproducible, browser_release_date should always be in the past. - browser_release_date: '2024/09/03 07:30:00' + browser_release_date: '2024/09/16 20:57:05' browser_release_date_timestamp: '[% USE date; date.format(c("var/browser_release_date"), "%s") %]' updater_enabled: 1 build_mar: 1 torbrowser_incremental_from: + - 13.5.3 - 13.5.2 - 13.5.1 - - '13.5' mar_channel_id: '[% c("var/projectname") %]-torproject-[% c("var/channel") %]' # By default, we sort the list of installed packages. This allows sharing View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/f… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/f… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/firefox-android] Pushed new tag firefox-android-115.2.1-13.5-1-build15
by ma1 (@ma1) 16 Sep '24

16 Sep '24
ma1 pushed new tag firefox-android-115.2.1-13.5-1-build15 at The Tor Project / Applications / firefox-android -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/tree/firef… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser] Pushed new tag tor-browser-115.15.0esr-13.5-1-build4
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed new tag tor-browser-115.15.0esr-13.5-1-build4 at The Tor Project / Applications / Tor Browser -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/tor-brows… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-128.2.0esr-14.0-1] Bug 1862537 - Do not try to go back when it's a initial load...
by ma1 (@ma1) 16 Sep '24

16 Sep '24
ma1 pushed to branch tor-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: 13a575c8 by Roger Yang at 2024-09-16T22:28:43+02:00 Bug 1862537 - Do not try to go back when it&#39;s a initial load r=android-reviewers,harrisono, a=pascalc Differential Revision: https://phabricator.services.mozilla.com/D219782 - - - - - 2 changed files: - mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineSession.kt - mobile/android/android-components/components/browser/engine-gecko/src/test/java/mozilla/components/browser/engine/gecko/GeckoEngineSessionTest.kt Changes: ===================================== mobile/android/android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineSession.kt ===================================== @@ -1120,10 +1120,13 @@ class GeckoEngineSession( return } - appRedirectUrl?.let { - if (url == appRedirectUrl) { - goBack(false) - return + // if it is an initial load then we can't go back. We should update the URL. + if (!initialLoad) { + appRedirectUrl?.let { + if (url == appRedirectUrl) { + goBack(false) + return + } } } ===================================== mobile/android/android-components/components/browser/engine-gecko/src/test/java/mozilla/components/browser/engine/gecko/GeckoEngineSessionTest.kt ===================================== @@ -1049,6 +1049,7 @@ class GeckoEngineSessionTest { ) engineSession.settings.historyTrackingDelegate = historyTrackingDelegate engineSession.appRedirectUrl = emptyPageUrl + engineSession.initialLoad = false class MockHistoryList( items: List<GeckoSession.HistoryDelegate.HistoryItem>, View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/13a575c… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/13a575c… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/firefox-android][firefox-android-115.2.1-13.5-1] Bug 1862537 - Do not try to go back when it's a initial load...
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed to branch firefox-android-115.2.1-13.5-1 at The Tor Project / Applications / firefox-android Commits: 070534b9 by hackademix at 2024-09-16T21:37:26+02:00 Bug 1862537 - Do not try to go back when it&#39;s a initial load r=android-reviewers,harrisono, a=pascalc Differential Revision: https://phabricator.services.mozilla.com/D219782 - - - - - 2 changed files: - android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineSession.kt - android-components/components/browser/engine-gecko/src/test/java/mozilla/components/browser/engine/gecko/GeckoEngineSessionTest.kt Changes: ===================================== android-components/components/browser/engine-gecko/src/main/java/mozilla/components/browser/engine/gecko/GeckoEngineSession.kt ===================================== @@ -869,9 +869,12 @@ class GeckoEngineSession( return GeckoResult.fromValue(false) } - appRedirectUrl?.let { - if (url == appRedirectUrl) { - return GeckoResult.fromValue(false) + // if it is an initial load then we can't go back. We should update the URL. + if (!initialLoad) { + appRedirectUrl?.let { + if (url == appRedirectUrl) { + return GeckoResult.fromValue(false) + } } } ===================================== android-components/components/browser/engine-gecko/src/test/java/mozilla/components/browser/engine/gecko/GeckoEngineSessionTest.kt ===================================== @@ -968,6 +968,7 @@ class GeckoEngineSessionTest { ) engineSession.settings.historyTrackingDelegate = historyTrackingDelegate engineSession.appRedirectUrl = emptyPageUrl + engineSession.initialLoad = false class MockHistoryList( items: List<GeckoSession.HistoryDelegate.HistoryItem>, View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/070… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/firefox-android/-/commit/070… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-128.2.0esr-14.0-1] fixup! [android] Modify UI/UX
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed to branch tor-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: 6922e094 by cypherpunks1 at 2024-09-16T19:11:44+00:00 fixup! [android] Modify UI/UX Bug 43052: Hide normal and synced tabs in the tabs tray - - - - - 1 changed file: - mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayBanner.kt Changes: ===================================== mobile/android/fenix/app/src/main/java/org/mozilla/fenix/tabstray/TabsTrayBanner.kt ===================================== @@ -50,6 +50,7 @@ import org.mozilla.fenix.compose.Divider import org.mozilla.fenix.compose.MenuItem import org.mozilla.fenix.compose.TabCounter import org.mozilla.fenix.compose.annotation.LightDarkPreview +import org.mozilla.fenix.ext.settings import org.mozilla.fenix.tabstray.ext.getMenuItems import org.mozilla.fenix.theme.FirefoxTheme import kotlin.math.max @@ -192,6 +193,7 @@ private fun TabPageBanner( onTabPageIndicatorClicked: (Page) -> Unit, onDismissClick: () -> Unit, ) { + val shouldDisableNormalMode = LocalContext.current.settings().shouldDisableNormalMode val selectedColor = FirefoxTheme.colors.iconActive val inactiveColor = FirefoxTheme.colors.iconPrimaryInactive var showMenu by remember { mutableStateOf(false) } @@ -216,22 +218,24 @@ private fun TabPageBanner( ) { CompositionLocalProvider(LocalRippleTheme provides DisabledRippleTheme) { TabRow( - selectedTabIndex = selectedPage.ordinal, + selectedTabIndex = if (shouldDisableNormalMode) 0 else selectedPage.ordinal, modifier = Modifier.fillMaxWidth(MAX_WIDTH_TAB_ROW_PERCENT), backgroundColor = Color.Transparent, contentColor = selectedColor, divider = {}, ) { - Tab( - selected = selectedPage == Page.NormalTabs, - onClick = { onTabPageIndicatorClicked(Page.NormalTabs) }, - modifier = Modifier - .fillMaxHeight() - .testTag(TabsTrayTestTag.normalTabsPageButton), - selectedContentColor = selectedColor, - unselectedContentColor = inactiveColor, - ) { - TabCounter(tabCount = normalTabCount) + if (!shouldDisableNormalMode) { + Tab( + selected = selectedPage == Page.NormalTabs, + onClick = { onTabPageIndicatorClicked(Page.NormalTabs) }, + modifier = Modifier + .fillMaxHeight() + .testTag(TabsTrayTestTag.normalTabsPageButton), + selectedContentColor = selectedColor, + unselectedContentColor = inactiveColor, + ) { + TabCounter(tabCount = normalTabCount) + } } Tab( @@ -250,6 +254,7 @@ private fun TabPageBanner( unselectedContentColor = inactiveColor, ) +/* Tab( selected = selectedPage == Page.SyncedTabs, onClick = { onTabPageIndicatorClicked(Page.SyncedTabs) }, @@ -265,6 +270,7 @@ private fun TabPageBanner( selectedContentColor = selectedColor, unselectedContentColor = inactiveColor, ) +*/ } } View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/6922e09… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/6922e09… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-128.2.0esr-14.0-1] fixup! Firefox preference overrides.
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed to branch mullvad-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Mullvad Browser Commits: cb96eb04 by Henry Wilkes at 2024-09-16T18:07:55+00:00 fixup! Firefox preference overrides. Bug 42777: Ensure non-privacy browsing also sets the GPC header. - - - - - 1 changed file: - browser/app/profile/001-base-profile.js Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -662,6 +662,11 @@ pref("privacy.query_stripping.enabled", true); pref("privacy.query_stripping.enabled.pbmode", true); pref("privacy.query_stripping.strip_on_share.enabled", true); +// Ensure global privacy control headers are consistent in private browsing and +// non-private browsing (tor-browser#42777). +pref("privacy.globalprivacycontrol.enabled", true); +pref("privacy.globalprivacycontrol.pbmode.enabled", true); + // Disable platform text recogniition functionality (tor-browser#42057) pref("dom.text-recognition.enabled", false); View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/cb9… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/cb9… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-128.2.0esr-14.0-1] fixup! Firefox preference overrides.
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed to branch base-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: 5f0e5e21 by Henry Wilkes at 2024-09-16T18:07:18+00:00 fixup! Firefox preference overrides. Bug 42777: Ensure non-privacy browsing also sets the GPC header. - - - - - 1 changed file: - browser/app/profile/001-base-profile.js Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -666,6 +666,11 @@ pref("privacy.query_stripping.enabled", true); pref("privacy.query_stripping.enabled.pbmode", true); pref("privacy.query_stripping.strip_on_share.enabled", true); +// Ensure global privacy control headers are consistent in private browsing and +// non-private browsing (tor-browser#42777). +pref("privacy.globalprivacycontrol.enabled", true); +pref("privacy.globalprivacycontrol.pbmode.enabled", true); + // Disable platform text recogniition functionality (tor-browser#42057) pref("dom.text-recognition.enabled", false); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/5f0e5e2… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/5f0e5e2… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-128.2.0esr-14.0-1] fixup! Firefox preference overrides.
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed to branch tor-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: 192b9bf7 by Henry Wilkes at 2024-09-16T18:02:12+00:00 fixup! Firefox preference overrides. Bug 42777: Ensure non-privacy browsing also sets the GPC header. - - - - - 1 changed file: - browser/app/profile/001-base-profile.js Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -666,6 +666,11 @@ pref("privacy.query_stripping.enabled", true); pref("privacy.query_stripping.enabled.pbmode", true); pref("privacy.query_stripping.strip_on_share.enabled", true); +// Ensure global privacy control headers are consistent in private browsing and +// non-private browsing (tor-browser#42777). +pref("privacy.globalprivacycontrol.enabled", true); +pref("privacy.globalprivacycontrol.pbmode.enabled", true); + // Disable platform text recogniition functionality (tor-browser#42057) pref("dom.text-recognition.enabled", false); View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/192b9bf… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/192b9bf… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-128.2.0esr-14.0-1] fixup! MB 38: Mullvad Browser configuration
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed to branch mullvad-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Mullvad Browser Commits: 09e84f60 by Pier Angelo Vendrame at 2024-09-16T17:49:07+00:00 fixup! MB 38: Mullvad Browser configuration MB 344: Remove media.navigator.enabled = false on MB. RFP spoof the values protected by this preference. We do not do the same on Tor Browser because this functionality depends on WebRTC, which is disabled at build time on TBB. - - - - - 1 changed file: - browser/app/profile/001-base-profile.js Changes: ===================================== browser/app/profile/001-base-profile.js ===================================== @@ -533,9 +533,6 @@ pref("media.peerconnection.ice.default_address_only", true); pref("media.peerconnection.ice.no_host", true); pref("media.peerconnection.ice.proxy_only_if_behind_proxy", true); -// Disables media devices but only if `media.peerconnection.enabled` is set to -// `false` as well. (see bug 16328 for this defense-in-depth measure) -pref("media.navigator.enabled", false); // GMPs (Gecko Media Plugins, https://wiki.mozilla.org/GeckoMediaPlugins) // We make sure they don't show up on the Add-on panel and confuse users. // And the external update/donwload server must not get pinged. We apply a View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/09e… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/09e… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-115.15.0esr-13.5-1] 2 commits: fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed to branch tor-browser-115.15.0esr-13.5-1 at The Tor Project / Applications / Tor Browser Commits: 15c91aa5 by Pier Angelo Vendrame at 2024-09-12T16:59:19+02:00 fixup! Omnibox: Add DDG, Startpage, Disconnect, Youtube, Twitter; remove Amazon, eBay, bing Bug 41835: Remove Twitter, Yahoo, and YouTube. - - - - - c5402ad1 by Pier Angelo Vendrame at 2024-09-12T16:59:20+02:00 fixup! Bug 41435: Add a Tor Browser migration function Bug: Review default search engine options. Migration code for removing Twitter, Yahoo, and YouTube from the local extension database. - - - - - 8 changed files: - browser/components/BrowserGlue.sys.mjs - − browser/components/search/extensions/twitter/favicon.ico - − browser/components/search/extensions/twitter/manifest.json - − browser/components/search/extensions/yahoo/favicon.ico - − browser/components/search/extensions/yahoo/manifest.json - − browser/components/search/extensions/youtube/favicon.ico - − browser/components/search/extensions/youtube/manifest.json - toolkit/components/search/SearchService.sys.mjs Changes: ===================================== browser/components/BrowserGlue.sys.mjs ===================================== @@ -4584,7 +4584,9 @@ BrowserGlue.prototype = { // torbutton preferences that are not used anymore. // Version 3: Tor Browser 13.0.7/13.5a3: Remove blockchair // (tor-browser#42283). - const TBB_MIGRATION_VERSION = 3; + // Version 4: Tor Browser 14.0a4 (2024-09-02), 13.5.4: Remove Twitter, Yahoo + // and YouTube search engines (tor-browser#41835). + const TBB_MIGRATION_VERSION = 4; const MIGRATION_PREF = "torbrowser.migration.version"; // If we decide to force updating users to pass through any version @@ -4636,21 +4638,26 @@ BrowserGlue.prototype = { } } } - if (currentVersion < 3) { - (async () => { + const dropAddons = async list => { + for (const id of list) { try { - const engine = await lazy.AddonManager.getAddonByID( - "blockchair(a)search.mozilla.org" - ); + const engine = await lazy.AddonManager.getAddonByID(id); await engine?.uninstall(); } catch {} - try { - const engine = await lazy.AddonManager.getAddonByID( - "blockchair-onion(a)search.mozilla.org" - ); - engine?.uninstall(); - } catch {} - })(); + } + }; + if (currentVersion < 3) { + dropAddons([ + "blockchair(a)search.mozilla.org", + "blockchair-onion(a)search.mozilla.org", + ]); + } + if (currentVersion < 4) { + dropAddons([ + "twitter(a)search.mozilla.org", + "yahoo(a)search.mozilla.org", + "youtube(a)search.mozilla.org", + ]); } Services.prefs.setIntPref(MIGRATION_PREF, TBB_MIGRATION_VERSION); ===================================== browser/components/search/extensions/twitter/favicon.ico deleted ===================================== Binary files a/browser/components/search/extensions/twitter/favicon.ico and /dev/null differ ===================================== browser/components/search/extensions/twitter/manifest.json deleted ===================================== @@ -1,26 +0,0 @@ -{ - "name": "Twitter", - "description": "Realtime Twitter Search", - "manifest_version": 2, - "version": "1.0", - "applications": { - "gecko": { - "id": "twitter(a)search.mozilla.org" - } - }, - "hidden": true, - "icons": { - "16": "favicon.ico" - }, - "web_accessible_resources": [ - "favicon.ico" - ], - "chrome_settings_overrides": { - "search_provider": { - "name": "Twitter", - "search_url": "https://twitter.com/search", - "search_form": "https://twitter.com/search?q={searchTerms}&partner=Firefox&source=desktop-s…", - "search_url_get_params": "q={searchTerms}&partner=Firefox&source=desktop-search" - } - } -} \ No newline at end of file ===================================== browser/components/search/extensions/yahoo/favicon.ico deleted ===================================== Binary files a/browser/components/search/extensions/yahoo/favicon.ico and /dev/null differ ===================================== browser/components/search/extensions/yahoo/manifest.json deleted ===================================== @@ -1,28 +0,0 @@ -{ - "name": "Yahoo", - "description": "Yahoo Search", - "manifest_version": 2, - "version": "1.0", - "applications": { - "gecko": { - "id": "yahoo(a)search.mozilla.org" - } - }, - "hidden": true, - "icons": { - "16": "favicon.ico" - }, - "web_accessible_resources": [ - "favicon.ico" - ], - "chrome_settings_overrides": { - "search_provider": { - "name": "Yahoo", - "search_url": "https://search.yahoo.com/yhs/search", - "search_form": "https://search.yahoo.com/yhs/search?p={searchTerms}&ei=UTF-8&hspart=mozilla", - "search_url_get_params": "p={searchTerms}&ei=UTF-8&hspart=mozilla", - "suggest_url": "https://search.yahoo.com/sugg/ff", - "suggest_url_get_params": "output=fxjson&appid=ffd&command={searchTerms}" - } - } -} ===================================== browser/components/search/extensions/youtube/favicon.ico deleted ===================================== Binary files a/browser/components/search/extensions/youtube/favicon.ico and /dev/null differ ===================================== browser/components/search/extensions/youtube/manifest.json deleted ===================================== @@ -1,26 +0,0 @@ -{ - "name": "YouTube", - "description": "YouTube - Videos", - "manifest_version": 2, - "version": "1.0", - "applications": { - "gecko": { - "id": "youtube(a)search.mozilla.org" - } - }, - "hidden": true, - "icons": { - "16": "favicon.ico" - }, - "web_accessible_resources": [ - "favicon.ico" - ], - "chrome_settings_overrides": { - "search_provider": { - "name": "YouTube", - "search_url": "https://www.youtube.com/results?search_query={searchTerms}&search=Search", - "search_form": "https://www.youtube.com/index", - "suggest_url": "https://suggestqueries.google.com/complete/search?output=firefox&ds=yt&q={s…" - } - } -} \ No newline at end of file ===================================== toolkit/components/search/SearchService.sys.mjs ===================================== @@ -2280,14 +2280,10 @@ export class SearchService { async _fetchEngineSelectorEngines() { const engines = [ { webExtension: { id: "ddg(a)search.mozilla.org" }, orderHint: 100 }, - { webExtension: { id: "youtube(a)search.mozilla.org" }, orderHint: 90 }, - { webExtension: { id: "google(a)search.mozilla.org" }, orderHint: 80 }, - { webExtension: { id: "ddg-onion(a)search.mozilla.org" }, orderHint: 70 }, - { webExtension: { id: "startpage(a)search.mozilla.org" }, orderHint: 60 }, - { webExtension: { id: "startpage-onion(a)search.mozilla.org" }, orderHint: 50 }, - { webExtension: { id: "twitter(a)search.mozilla.org" }, orderHint: 40 }, - { webExtension: { id: "wikipedia(a)search.mozilla.org" }, orderHint: 30 }, - { webExtension: { id: "yahoo(a)search.mozilla.org" }, orderHint: 20 }, + { webExtension: { id: "ddg-onion(a)search.mozilla.org" }, orderHint: 90 }, + { webExtension: { id: "startpage(a)search.mozilla.org" }, orderHint: 80 }, + { webExtension: { id: "startpage-onion(a)search.mozilla.org" }, orderHint: 70 }, + { webExtension: { id: "wikipedia(a)search.mozilla.org" }, orderHint: 60 }, ]; for (let e of engines) { View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/8eb0e1… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/8eb0e1… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/mullvad-browser][mullvad-browser-128.2.0esr-14.0-1] squash! Bug 41043: Hardcode the UI font on Linux
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed to branch mullvad-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Mullvad Browser Commits: b3c475ab by Pier Angelo Vendrame at 2024-09-16T17:42:36+00:00 squash! Bug 41043: Hardcode the UI font on Linux Bug 43141: Hardcode system-ui to Arimo. - - - - - 2 changed files: - gfx/thebes/gfxPlatformFontList.cpp - layout/base/nsLayoutUtils.cpp Changes: ===================================== gfx/thebes/gfxPlatformFontList.cpp ===================================== @@ -2055,6 +2055,11 @@ static void GetSystemUIFontFamilies(const nsPresContext* aPresContext, #if defined(XP_MACOSX) || defined(MOZ_WIDGET_UIKIT) *aFamilies.AppendElement() = "-apple-system"_ns; return; +#elif defined(MOZ_WIDGET_GTK) + // tor-browser#43141: Hardcode Arimo in case our custom fontconfig is + // missing. + *aFamilies.AppendElement() = "Arimo"_ns; + return; #elif !defined(MOZ_WIDGET_ANDROID) *aFamilies.AppendElement() = "sans-serif"_ns; return; ===================================== layout/base/nsLayoutUtils.cpp ===================================== @@ -9720,7 +9720,9 @@ static void GetSpoofedSystemFontForRFP(LookAndFeel::FontID aFontID, // In general, Linux uses some sans-serif, but its size can vary between // 12px and 16px. We chose 15px because it is what Firefox is doing for the // UI font-size. - aName = u"sans-serif"_ns; + // tor-browser#43141: Hardcode Arimo in case our custom fontconfig is + // missing. + aName = u"Arimo"_ns; aStyle.size = 15; #else # error "Unknown platform" View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/b3c… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/mullvad-browser/-/commit/b3c… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][base-browser-128.2.0esr-14.0-1] squash! Bug 41043: Hardcode the UI font on Linux
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed to branch base-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: cfed101d by Pier Angelo Vendrame at 2024-09-16T17:42:17+00:00 squash! Bug 41043: Hardcode the UI font on Linux Bug 43141: Hardcode system-ui to Arimo. - - - - - 2 changed files: - gfx/thebes/gfxPlatformFontList.cpp - layout/base/nsLayoutUtils.cpp Changes: ===================================== gfx/thebes/gfxPlatformFontList.cpp ===================================== @@ -2055,6 +2055,11 @@ static void GetSystemUIFontFamilies(const nsPresContext* aPresContext, #if defined(XP_MACOSX) || defined(MOZ_WIDGET_UIKIT) *aFamilies.AppendElement() = "-apple-system"_ns; return; +#elif defined(MOZ_WIDGET_GTK) + // tor-browser#43141: Hardcode Arimo in case our custom fontconfig is + // missing. + *aFamilies.AppendElement() = "Arimo"_ns; + return; #elif !defined(MOZ_WIDGET_ANDROID) *aFamilies.AppendElement() = "sans-serif"_ns; return; ===================================== layout/base/nsLayoutUtils.cpp ===================================== @@ -9720,7 +9720,9 @@ static void GetSpoofedSystemFontForRFP(LookAndFeel::FontID aFontID, // In general, Linux uses some sans-serif, but its size can vary between // 12px and 16px. We chose 15px because it is what Firefox is doing for the // UI font-size. - aName = u"sans-serif"_ns; + // tor-browser#43141: Hardcode Arimo in case our custom fontconfig is + // missing. + aName = u"Arimo"_ns; aStyle.size = 15; #else # error "Unknown platform" View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/cfed101… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/cfed101… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser][tor-browser-128.2.0esr-14.0-1] squash! Bug 41043: Hardcode the UI font on Linux
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed to branch tor-browser-128.2.0esr-14.0-1 at The Tor Project / Applications / Tor Browser Commits: 0da1a95a by Pier Angelo Vendrame at 2024-09-16T17:33:11+00:00 squash! Bug 41043: Hardcode the UI font on Linux Bug 43141: Hardcode system-ui to Arimo. - - - - - 2 changed files: - gfx/thebes/gfxPlatformFontList.cpp - layout/base/nsLayoutUtils.cpp Changes: ===================================== gfx/thebes/gfxPlatformFontList.cpp ===================================== @@ -2055,6 +2055,11 @@ static void GetSystemUIFontFamilies(const nsPresContext* aPresContext, #if defined(XP_MACOSX) || defined(MOZ_WIDGET_UIKIT) *aFamilies.AppendElement() = "-apple-system"_ns; return; +#elif defined(MOZ_WIDGET_GTK) + // tor-browser#43141: Hardcode Arimo in case our custom fontconfig is + // missing. + *aFamilies.AppendElement() = "Arimo"_ns; + return; #elif !defined(MOZ_WIDGET_ANDROID) *aFamilies.AppendElement() = "sans-serif"_ns; return; ===================================== layout/base/nsLayoutUtils.cpp ===================================== @@ -9720,7 +9720,9 @@ static void GetSpoofedSystemFontForRFP(LookAndFeel::FontID aFontID, // In general, Linux uses some sans-serif, but its size can vary between // 12px and 16px. We chose 15px because it is what Firefox is doing for the // UI font-size. - aName = u"sans-serif"_ns; + // tor-browser#43141: Hardcode Arimo in case our custom fontconfig is + // missing. + aName = u"Arimo"_ns; aStyle.size = 15; #else # error "Unknown platform" View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/0da1a95… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/commit/0da1a95… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][main] Bug 41237: Add some font aliases for compatibility.
by morgan (@morgan) 16 Sep '24

16 Sep '24
morgan pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 0db49347 by Pier Angelo Vendrame at 2024-09-16T17:31:29+00:00 Bug 41237: Add some font aliases for compatibility. Add aliases for some MS fonts (Arial, Courier New, and Times New Roman) and for some PS fonts (Courier, Helvetica, and Times). - - - - - 1 changed file: - projects/browser/Bundle-Data/linux/Data/fontconfig/fonts.conf Changes: ===================================== projects/browser/Bundle-Data/linux/Data/fontconfig/fonts.conf ===================================== @@ -105,6 +105,59 @@ PERFORMANCE OF THIS SOFTWARE. </edit> </match> +<!-- + tor-browser#41799, tor-browser-build#41237: Add some aliases for + compatibility. +--> + <match target="pattern"> + <test qual="any" name="family"> + <string>Arial</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Arimo</string> + </edit> + </match> + <match target="pattern"> + <test qual="any" name="family"> + <string>Times New Roman</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Tinos</string> + </edit> + </match> + <match target="pattern"> + <test qual="any" name="family"> + <string>Courier New</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Cousine</string> + </edit> + </match> + <match target="pattern"> + <test qual="any" name="family"> + <string>Helvetica</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Arimo</string> + </edit> + </match> + <match target="pattern"> + <test qual="any" name="family"> + <string>Times</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Tinos</string> + </edit> + </match> + <match target="pattern"> + <test qual="any" name="family"> + <string>Courier</string> + </test> + <edit name="family" mode="assign" binding="same"> + <string>Cousine</string> + </edit> + </match> + <!-- Font cache directory list --> <cachedir prefix="xdg">fontconfig</cachedir> View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/0… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/0… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • ...
  • 780
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.