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
Download
Threads by month
  • ----- 2025 -----
  • 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
  • 18730 discussions
[Git][tpo/applications/tor-browser] Pushed new tag tor-browser-115.1.0esr-13.0-1-build2
by ma1 (@ma1) 01 Aug '23

01 Aug '23
ma1 pushed new tag tor-browser-115.1.0esr-13.0-1-build2 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][base-browser-115.1.0esr-13.0-1] 4 commits: Bug 1821884 - Ensure consistent state for fullscreen/pointerlock warnings; r=Gijs
by ma1 (@ma1) 01 Aug '23

01 Aug '23
ma1 pushed to branch base-browser-115.1.0esr-13.0-1 at The Tor Project / Applications / Tor Browser Commits: 45b89a93 by Edgar Chen at 2023-08-01T17:39:54+02:00 Bug 1821884 - Ensure consistent state for fullscreen/pointerlock warnings; r=Gijs Fullscreen/PointerLock warnings are initialized with hidden=&quot;true&quot;, but change to hidden=&quot;&quot; after being shown and hidden again. I think this started happening when we began using HTML elements instead of XUL as they handle hidden attribute differently. Differential Revision: https://phabricator.services.mozilla.com/D177790 - - - - - 1b031e60 by Edgar Chen at 2023-08-01T17:39:54+02:00 Bug 1821884 - Reshow initial fullscreen notification; r=Gijs Depends on D177790 Differential Revision: https://phabricator.services.mozilla.com/D178339 - - - - - 33af6b34 by Eitan Isaacson at 2023-08-01T17:39:55+02:00 Bug 1819160 - Map Android ids to doc/accessible id pairs. r=Jamie Differential Revision: https://phabricator.services.mozilla.com/D179737 - - - - - 65183e25 by Jon Coppeard at 2023-08-01T17:39:55+02:00 Bug 1828024 - Require the helper thread lock in the GC helper thread count getter r=sfink This makes us take a lock to read this state (we already lock when writing it). Also it adds a release assert in case something goes wrong with the thread count calculations, as a crash is preferable to the potential deadlock. Differential Revision: https://phabricator.services.mozilla.com/D181257 - - - - - 12 changed files: - accessible/android/SessionAccessibility.cpp - accessible/android/SessionAccessibility.h - accessible/ipc/DocAccessibleParent.cpp - accessible/ipc/DocAccessibleParent.h - accessible/ipc/moz.build - browser/base/content/browser-fullScreenAndPointerLock.js - browser/base/content/fullscreen-and-pointerlock.inc.xhtml - browser/base/content/test/fullscreen/browser_fullscreen_warning.js - dom/tests/browser/browser_pointerlock_warning.js - js/src/gc/GC.cpp - js/src/gc/ParallelMarking.cpp - js/src/vm/HelperThreadState.h Changes: ===================================== accessible/android/SessionAccessibility.cpp ===================================== @@ -269,12 +269,9 @@ RefPtr<SessionAccessibility> SessionAccessibility::GetInstanceFor( return GetInstanceFor(doc->GetPresShell()); } } else { - DocAccessibleParent* remoteDoc = aAccessible->AsRemote()->Document(); - if (remoteDoc->mSessionAccessibility) { - return remoteDoc->mSessionAccessibility; - } dom::CanonicalBrowsingContext* cbc = - static_cast<dom::BrowserParent*>(remoteDoc->Manager()) + static_cast<dom::BrowserParent*>( + aAccessible->AsRemote()->Document()->Manager()) ->GetBrowsingContext() ->Top(); dom::BrowserParent* bp = cbc->GetBrowserParent(); @@ -285,10 +282,7 @@ RefPtr<SessionAccessibility> SessionAccessibility::GetInstanceFor( if (auto element = bp->GetOwnerElement()) { if (auto doc = element->OwnerDoc()) { if (nsPresContext* presContext = doc->GetPresContext()) { - RefPtr<SessionAccessibility> sessionAcc = - GetInstanceFor(presContext->PresShell()); - remoteDoc->mSessionAccessibility = sessionAcc; - return sessionAcc; + return GetInstanceFor(presContext->PresShell()); } } else { MOZ_ASSERT_UNREACHABLE( @@ -684,14 +678,7 @@ void SessionAccessibility::PopulateNodeInfo( } Accessible* SessionAccessibility::GetAccessibleByID(int32_t aID) const { - Accessible* accessible = mIDToAccessibleMap.Get(aID); - if (accessible && accessible->IsLocal() && - accessible->AsLocal()->IsDefunct()) { - MOZ_ASSERT_UNREACHABLE("Registered accessible is defunct!"); - return nullptr; - } - - return accessible; + return mIDToAccessibleMap.Get(aID); } #ifdef DEBUG @@ -705,6 +692,58 @@ static bool IsDetachedDoc(Accessible* aAccessible) { } #endif +SessionAccessibility::IDMappingEntry::IDMappingEntry(Accessible* aAccessible) + : mInternalID(0) { + *this = aAccessible; +} + +SessionAccessibility::IDMappingEntry& +SessionAccessibility::IDMappingEntry::operator=(Accessible* aAccessible) { + mInternalID = aAccessible->ID(); + MOZ_ASSERT(!(mInternalID & IS_REMOTE), "First bit is used in accessible ID!"); + if (aAccessible->IsRemote()) { + mInternalID |= IS_REMOTE; + } + + Accessible* docAcc = nsAccUtils::DocumentFor(aAccessible); + MOZ_ASSERT(docAcc); + if (docAcc) { + MOZ_ASSERT(docAcc->IsRemote() == aAccessible->IsRemote()); + if (docAcc->IsRemote()) { + mDoc = docAcc->AsRemote()->AsDoc(); + } else { + mDoc = docAcc->AsLocal(); + } + } + + return *this; +} + +SessionAccessibility::IDMappingEntry::operator Accessible*() const { + if (mInternalID == 0) { + return static_cast<LocalAccessible*>(mDoc.get()); + } + + if (mInternalID == IS_REMOTE) { + return static_cast<DocAccessibleParent*>(mDoc.get()); + } + + if (mInternalID & IS_REMOTE) { + return static_cast<DocAccessibleParent*>(mDoc.get()) + ->GetAccessible(mInternalID & ~IS_REMOTE); + } + + Accessible* accessible = + static_cast<LocalAccessible*>(mDoc.get()) + ->AsDoc() + ->GetAccessibleByUniqueID(reinterpret_cast<void*>(mInternalID)); + // If the accessible is retrievable from the DocAccessible, it can't be + // defunct. + MOZ_ASSERT(!accessible->AsLocal()->IsDefunct()); + + return accessible; +} + void SessionAccessibility::RegisterAccessible(Accessible* aAccessible) { if (IPCAccessibilityActive()) { // Don't register accessible in content process. @@ -766,7 +805,6 @@ void SessionAccessibility::UnregisterAccessible(Accessible* aAccessible) { } RefPtr<SessionAccessibility> sessionAcc = GetInstanceFor(aAccessible); - MOZ_ASSERT(sessionAcc, "Need SessionAccessibility to unregister Accessible!"); if (sessionAcc) { Accessible* registeredAcc = sessionAcc->mIDToAccessibleMap.Get(virtualViewID); ===================================== accessible/android/SessionAccessibility.h ===================================== @@ -110,10 +110,34 @@ class SessionAccessibility final jni::NativeWeakPtr<widget::GeckoViewSupport> mWindow; // Parent only java::SessionAccessibility::NativeProvider::GlobalRef mSessionAccessibility; + class IDMappingEntry { + public: + explicit IDMappingEntry(Accessible* aAccessible); + + IDMappingEntry& operator=(Accessible* aAccessible); + + operator Accessible*() const; + + private: + // A strong reference to a DocAccessible or DocAccessibleParent. They don't + // share any useful base class except nsISupports, so we use that. + // When we retrieve the document from this reference we cast it to + // LocalAccessible in the DocAccessible case because DocAccessible has + // multiple inheritance paths for nsISupports. + RefPtr<nsISupports> mDoc; + // The ID of the accessible as used in the internal doc mapping. + // We rely on this ID being pointer derived and therefore divisible by two + // so we can use the first bit to mark if it is remote or not. + uint64_t mInternalID; + + static const uintptr_t IS_REMOTE = 0x1; + }; + /* * This provides a mapping from 32 bit id to accessible objects. */ - nsTHashMap<nsUint32HashKey, Accessible*> mIDToAccessibleMap; + nsBaseHashtable<nsUint32HashKey, IDMappingEntry, Accessible*> + mIDToAccessibleMap; }; } // namespace a11y ===================================== accessible/ipc/DocAccessibleParent.cpp ===================================== @@ -29,7 +29,6 @@ #endif #if defined(ANDROID) -# include "mozilla/a11y/SessionAccessibility.h" # define ACQUIRE_ANDROID_LOCK \ MonitorAutoLock mal(nsAccessibilityService::GetAndroidMonitor()); #else ===================================== accessible/ipc/DocAccessibleParent.h ===================================== @@ -29,10 +29,6 @@ class xpcAccessibleGeneric; class DocAccessiblePlatformExtParent; #endif -#ifdef ANDROID -class SessionAccessibility; -#endif - /* * These objects live in the main process and comunicate with and represent * an accessible document in a content process. @@ -348,10 +344,6 @@ class DocAccessibleParent : public RemoteAccessible, size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) override; -#ifdef ANDROID - RefPtr<SessionAccessibility> mSessionAccessibility; -#endif - private: ~DocAccessibleParent(); ===================================== accessible/ipc/moz.build ===================================== @@ -24,11 +24,6 @@ else: LOCAL_INCLUDES += [ "/accessible/mac", ] - elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "android": - LOCAL_INCLUDES += [ - "/accessible/android", - "/widget/android", - ] else: LOCAL_INCLUDES += [ "/accessible/other", ===================================== browser/base/content/browser-fullScreenAndPointerLock.js ===================================== @@ -62,9 +62,14 @@ var PointerlockFsWarning = { this._element = document.getElementById(elementId); // Setup event listeners this._element.addEventListener("transitionend", this); + this._element.addEventListener("transitioncancel", this); window.addEventListener("mousemove", this, true); + window.addEventListener("activate", this); + window.addEventListener("deactivate", this); // The timeout to hide the warning box after a while. this._timeoutHide = new this.Timeout(() => { + window.removeEventListener("activate", this); + window.removeEventListener("deactivate", this); this._state = "hidden"; }, timeout); // The timeout to show the warning box when the pointer is at the top @@ -116,11 +121,10 @@ var PointerlockFsWarning = { return; } - // Explicitly set the last state to hidden to avoid the warning - // box being hidden immediately because of mousemove. - this._state = "onscreen"; - this._lastState = "hidden"; - this._timeoutHide.start(); + if (Services.focus.activeWindow == window) { + this._state = "onscreen"; + this._timeoutHide.start(); + } }, /** @@ -148,7 +152,10 @@ var PointerlockFsWarning = { this._element.hidden = true; // Remove all event listeners this._element.removeEventListener("transitionend", this); + this._element.removeEventListener("transitioncancel", this); window.removeEventListener("mousemove", this, true); + window.removeEventListener("activate", this); + window.removeEventListener("deactivate", this); // Clear fields this._element = null; this._timeoutHide = null; @@ -186,7 +193,7 @@ var PointerlockFsWarning = { } if (newState != "hidden") { if (currentState != "hidden") { - this._element.setAttribute(newState, true); + this._element.setAttribute(newState, ""); } else { // When the previous state is hidden, the display was none, // thus no box was constructed. We need to wait for the new @@ -197,7 +204,7 @@ var PointerlockFsWarning = { requestAnimationFrame(() => { requestAnimationFrame(() => { if (this._element) { - this._element.setAttribute(newState, true); + this._element.setAttribute(newState, ""); } }); }); @@ -217,7 +224,7 @@ var PointerlockFsWarning = { } else if (this._timeoutShow.delay >= 0) { this._timeoutShow.start(); } - } else { + } else if (state != "onscreen") { let elemRect = this._element.getBoundingClientRect(); if (state == "hiding" && this._lastState != "hidden") { // If we are on the hiding transition, and the pointer @@ -239,12 +246,23 @@ var PointerlockFsWarning = { } break; } - case "transitionend": { + case "transitionend": + case "transitioncancel": { if (this._state == "hiding") { this._element.hidden = true; } break; } + case "activate": { + this._state = "onscreen"; + this._timeoutHide.start(); + break; + } + case "deactivate": { + this._state = "hidden"; + this._timeoutHide.cancel(); + break; + } } }, }; ===================================== browser/base/content/fullscreen-and-pointerlock.inc.xhtml ===================================== @@ -3,7 +3,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. <html:div id="fullscreen-and-pointerlock-wrapper"> - <html:div id="fullscreen-warning" class="pointerlockfswarning" hidden="true"> + <html:div id="fullscreen-warning" class="pointerlockfswarning" hidden=""> <html:div class="pointerlockfswarning-domain-text"> <html:span class="pointerlockfswarning-domain" data-l10n-name="domain"/> </html:div> @@ -20,7 +20,7 @@ </html:button> </html:div> - <html:div id="pointerlock-warning" class="pointerlockfswarning" hidden="true"> + <html:div id="pointerlock-warning" class="pointerlockfswarning" hidden=""> <html:div class="pointerlockfswarning-domain-text"> <html:span class="pointerlockfswarning-domain" data-l10n-name="domain"/> </html:div> ===================================== browser/base/content/test/fullscreen/browser_fullscreen_warning.js ===================================== @@ -3,14 +3,35 @@ "use strict"; -add_task(async function test_fullscreen_display_none() { +function checkWarningState(aWarningElement, aExpectedState, aMsg) { + ["hidden", "ontop", "onscreen"].forEach(state => { + is( + aWarningElement.hasAttribute(state), + state == aExpectedState, + `${aMsg} - check ${state} attribute.` + ); + }); +} + +async function waitForWarningState(aWarningElement, aExpectedState) { + await BrowserTestUtils.waitForAttribute(aExpectedState, aWarningElement, ""); + checkWarningState( + aWarningElement, + aExpectedState, + `Wait for ${aExpectedState} state` + ); +} + +add_setup(async function init() { await SpecialPowers.pushPrefEnv({ set: [ ["full-screen-api.enabled", true], ["full-screen-api.allow-trusted-requests-only", false], ], }); +}); +add_task(async function test_fullscreen_display_none() { await BrowserTestUtils.withNewTab( { gBrowser, @@ -30,11 +51,13 @@ add_task(async function test_fullscreen_display_none() { }, async function (browser) { let warning = document.getElementById("fullscreen-warning"); - let warningShownPromise = BrowserTestUtils.waitForAttribute( - "onscreen", + checkWarningState( warning, - "true" + "hidden", + "Should not show full screen warning initially" ); + + let warningShownPromise = waitForWarningState(warning, "onscreen"); // Enter fullscreen await SpecialPowers.spawn(browser, [], async () => { let frame = content.document.querySelector("iframe"); @@ -54,39 +77,33 @@ add_task(async function test_fullscreen_display_none() { ); document.getElementById("fullscreen-exit-button").click(); await exitFullscreenPromise; + + checkWarningState( + warning, + "hidden", + "Should hide fullscreen warning after exiting fullscreen" + ); } ); }); add_task(async function test_fullscreen_pointerlock_conflict() { - await SpecialPowers.pushPrefEnv({ - set: [ - ["full-screen-api.enabled", true], - ["full-screen-api.allow-trusted-requests-only", false], - ], - }); - await BrowserTestUtils.withNewTab("https://example.com", async browser => { let fsWarning = document.getElementById("fullscreen-warning"); let plWarning = document.getElementById("pointerlock-warning"); - is( - fsWarning.getAttribute("onscreen"), - null, - "Should not show full screen warning initially." - ); - is( - plWarning.getAttribute("onscreen"), - null, - "Should not show pointer lock warning initially." - ); - - let fsWarningShownPromise = BrowserTestUtils.waitForAttribute( - "onscreen", + checkWarningState( fsWarning, - "true" + "hidden", + "Should not show full screen warning initially" + ); + checkWarningState( + plWarning, + "hidden", + "Should not show pointer lock warning initially" ); + let fsWarningShownPromise = waitForWarningState(fsWarning, "onscreen"); info("Entering full screen and pointer lock."); await SpecialPowers.spawn(browser, [], async () => { await content.document.body.requestFullscreen(); @@ -94,15 +111,10 @@ add_task(async function test_fullscreen_pointerlock_conflict() { }); await fsWarningShownPromise; - is( - fsWarning.getAttribute("onscreen"), - "true", - "Should show full screen warning." - ); - is( - plWarning.getAttribute("onscreen"), - null, - "Should not show pointer lock warning." + checkWarningState( + plWarning, + "hidden", + "Should not show pointer lock warning" ); info("Exiting pointerlock"); @@ -110,18 +122,19 @@ add_task(async function test_fullscreen_pointerlock_conflict() { await content.document.exitPointerLock(); }); - is( - fsWarning.getAttribute("onscreen"), - "true", - "Should still show full screen warning." + checkWarningState( + fsWarning, + "onscreen", + "Should still show full screen warning" ); - is( - plWarning.getAttribute("onscreen"), - null, - "Should not show pointer lock warning." + checkWarningState( + plWarning, + "hidden", + "Should not show pointer lock warning" ); // Cleanup + info("Exiting fullscreen"); await document.exitFullscreen(); }); }); ===================================== dom/tests/browser/browser_pointerlock_warning.js ===================================== @@ -15,6 +15,25 @@ const FRAME_TEST_URL = encodeURI(BODY_URL) + '"></iframe></body>'; +function checkWarningState(aWarningElement, aExpectedState, aMsg) { + ["hidden", "ontop", "onscreen"].forEach(state => { + is( + aWarningElement.hasAttribute(state), + state == aExpectedState, + `${aMsg} - check ${state} attribute.` + ); + }); +} + +async function waitForWarningState(aWarningElement, aExpectedState) { + await BrowserTestUtils.waitForAttribute(aExpectedState, aWarningElement, ""); + checkWarningState( + aWarningElement, + aExpectedState, + `Wait for ${aExpectedState} state` + ); +} + // Make sure the pointerlock warning is shown and exited with the escape key add_task(async function show_pointerlock_warning_escape() { let urls = [TEST_URL, FRAME_TEST_URL]; @@ -24,11 +43,7 @@ add_task(async function show_pointerlock_warning_escape() { let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url); let warning = document.getElementById("pointerlock-warning"); - let warningShownPromise = BrowserTestUtils.waitForAttribute( - "onscreen", - warning, - "true" - ); + let warningShownPromise = waitForWarningState(warning, "onscreen"); let expectedWarningText; @@ -49,11 +64,7 @@ add_task(async function show_pointerlock_warning_escape() { ok(true, "Pointerlock warning shown"); - let warningHiddenPromise = BrowserTestUtils.waitForAttribute( - "hidden", - warning, - "" - ); + let warningHiddenPromise = waitForWarningState(warning, "hidden"); await BrowserTestUtils.waitForCondition( () => warning.innerText == expectedWarningText, ===================================== js/src/gc/GC.cpp ===================================== @@ -1331,6 +1331,11 @@ void GCRuntime::assertNoMarkingWork() const { } #endif +static size_t GetGCParallelThreadCount() { + AutoLockHelperThreadState lock; + return HelperThreadState().getGCParallelThreadCount(lock); +} + bool GCRuntime::updateMarkersVector() { MOZ_ASSERT(helperThreadCount >= 1, "There must always be at least one mark task"); @@ -1339,8 +1344,8 @@ bool GCRuntime::updateMarkersVector() { // Limit worker count to number of GC parallel tasks that can run // concurrently, otherwise one thread can deadlock waiting on another. - size_t targetCount = std::min(markingWorkerCount(), - HelperThreadState().getGCParallelThreadCount()); + size_t targetCount = + std::min(markingWorkerCount(), GetGCParallelThreadCount()); if (markers.length() > targetCount) { return markers.resize(targetCount); ===================================== js/src/gc/ParallelMarking.cpp ===================================== @@ -103,6 +103,10 @@ bool ParallelMarker::markOneColor(MarkColor color, SliceBudget& sliceBudget) { { AutoLockHelperThreadState lock; + // There should always be enough parallel tasks to run our marking work. + MOZ_RELEASE_ASSERT(HelperThreadState().getGCParallelThreadCount(lock) >= + workerCount()); + for (size_t i = 0; i < workerCount(); i++) { gc->startTask(*tasks[i], lock); } ===================================== js/src/vm/HelperThreadState.h ===================================== @@ -333,9 +333,11 @@ class GlobalHelperThreadState { GCParallelTaskList& gcParallelWorklist() { return gcParallelWorklist_; } - size_t getGCParallelThreadCount() const { return gcParallelThreadCount; } + size_t getGCParallelThreadCount(const AutoLockHelperThreadState& lock) const { + return gcParallelThreadCount; + } void setGCParallelThreadCount(size_t count, - const AutoLockHelperThreadState&) { + const AutoLockHelperThreadState& lock) { MOZ_ASSERT(count >= 1); MOZ_ASSERT(count <= threadCount); gcParallelThreadCount = count; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/c847c7… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/c847c7… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][maint-12.5] Bug 31546 (fix): Remove the -linux64 suffix from geckodriver
by richard (@richard) 01 Aug '23

01 Aug '23
richard pushed to branch maint-12.5 at The Tor Project / Applications / tor-browser-build Commits: ed3f291b by Pier Angelo Vendrame at 2023-08-01T16:59:15+02:00 Bug 31546 (fix): Remove the -linux64 suffix from geckodriver We removed the -linux64 suffix from GeckoDriver, because we intend enabling it also for other platforms than Linux-x86_64 and for more consistency with the other artifacts. However, I forgot to update the filename in projects/firefox/build on my previous commit. - - - - - 1 changed file: - projects/firefox/build Changes: ===================================== projects/firefox/build ===================================== @@ -351,7 +351,7 @@ END; [% IF c("var/linux-x86_64") && !c("var/asan") -%] [% c('tar', { tar_src => [ 'geckodriver' ], - tar_args => '-cJf ' _ dest_dir _ '/' _ c('filename') _ '/geckodriver-linux64.tar.xz', + tar_args => '-cJf ' _ dest_dir _ '/' _ c('filename') _ '/geckodriver.tar.xz', }) %] [% END %] [% ELSIF c("var/windows") -%] View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/e… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/e… 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.1.0esr-13.0-1] 4 commits: Bug 1821884 - Ensure consistent state for fullscreen/pointerlock warnings; r=Gijs
by ma1 (@ma1) 01 Aug '23

01 Aug '23
ma1 pushed to branch tor-browser-115.1.0esr-13.0-1 at The Tor Project / Applications / Tor Browser Commits: a9279174 by Edgar Chen at 2023-07-31T23:49:06+02:00 Bug 1821884 - Ensure consistent state for fullscreen/pointerlock warnings; r=Gijs Fullscreen/PointerLock warnings are initialized with hidden=&quot;true&quot;, but change to hidden=&quot;&quot; after being shown and hidden again. I think this started happening when we began using HTML elements instead of XUL as they handle hidden attribute differently. Differential Revision: https://phabricator.services.mozilla.com/D177790 - - - - - 9f2eaedb by Edgar Chen at 2023-07-31T23:49:06+02:00 Bug 1821884 - Reshow initial fullscreen notification; r=Gijs Depends on D177790 Differential Revision: https://phabricator.services.mozilla.com/D178339 - - - - - 30d19aa0 by Eitan Isaacson at 2023-07-31T23:49:07+02:00 Bug 1819160 - Map Android ids to doc/accessible id pairs. r=Jamie Differential Revision: https://phabricator.services.mozilla.com/D179737 - - - - - efee8978 by Jon Coppeard at 2023-07-31T23:49:07+02:00 Bug 1828024 - Require the helper thread lock in the GC helper thread count getter r=sfink This makes us take a lock to read this state (we already lock when writing it). Also it adds a release assert in case something goes wrong with the thread count calculations, as a crash is preferable to the potential deadlock. Differential Revision: https://phabricator.services.mozilla.com/D181257 - - - - - 12 changed files: - accessible/android/SessionAccessibility.cpp - accessible/android/SessionAccessibility.h - accessible/ipc/DocAccessibleParent.cpp - accessible/ipc/DocAccessibleParent.h - accessible/ipc/moz.build - browser/base/content/browser-fullScreenAndPointerLock.js - browser/base/content/fullscreen-and-pointerlock.inc.xhtml - browser/base/content/test/fullscreen/browser_fullscreen_warning.js - dom/tests/browser/browser_pointerlock_warning.js - js/src/gc/GC.cpp - js/src/gc/ParallelMarking.cpp - js/src/vm/HelperThreadState.h Changes: ===================================== accessible/android/SessionAccessibility.cpp ===================================== @@ -269,12 +269,9 @@ RefPtr<SessionAccessibility> SessionAccessibility::GetInstanceFor( return GetInstanceFor(doc->GetPresShell()); } } else { - DocAccessibleParent* remoteDoc = aAccessible->AsRemote()->Document(); - if (remoteDoc->mSessionAccessibility) { - return remoteDoc->mSessionAccessibility; - } dom::CanonicalBrowsingContext* cbc = - static_cast<dom::BrowserParent*>(remoteDoc->Manager()) + static_cast<dom::BrowserParent*>( + aAccessible->AsRemote()->Document()->Manager()) ->GetBrowsingContext() ->Top(); dom::BrowserParent* bp = cbc->GetBrowserParent(); @@ -285,10 +282,7 @@ RefPtr<SessionAccessibility> SessionAccessibility::GetInstanceFor( if (auto element = bp->GetOwnerElement()) { if (auto doc = element->OwnerDoc()) { if (nsPresContext* presContext = doc->GetPresContext()) { - RefPtr<SessionAccessibility> sessionAcc = - GetInstanceFor(presContext->PresShell()); - remoteDoc->mSessionAccessibility = sessionAcc; - return sessionAcc; + return GetInstanceFor(presContext->PresShell()); } } else { MOZ_ASSERT_UNREACHABLE( @@ -684,14 +678,7 @@ void SessionAccessibility::PopulateNodeInfo( } Accessible* SessionAccessibility::GetAccessibleByID(int32_t aID) const { - Accessible* accessible = mIDToAccessibleMap.Get(aID); - if (accessible && accessible->IsLocal() && - accessible->AsLocal()->IsDefunct()) { - MOZ_ASSERT_UNREACHABLE("Registered accessible is defunct!"); - return nullptr; - } - - return accessible; + return mIDToAccessibleMap.Get(aID); } #ifdef DEBUG @@ -705,6 +692,58 @@ static bool IsDetachedDoc(Accessible* aAccessible) { } #endif +SessionAccessibility::IDMappingEntry::IDMappingEntry(Accessible* aAccessible) + : mInternalID(0) { + *this = aAccessible; +} + +SessionAccessibility::IDMappingEntry& +SessionAccessibility::IDMappingEntry::operator=(Accessible* aAccessible) { + mInternalID = aAccessible->ID(); + MOZ_ASSERT(!(mInternalID & IS_REMOTE), "First bit is used in accessible ID!"); + if (aAccessible->IsRemote()) { + mInternalID |= IS_REMOTE; + } + + Accessible* docAcc = nsAccUtils::DocumentFor(aAccessible); + MOZ_ASSERT(docAcc); + if (docAcc) { + MOZ_ASSERT(docAcc->IsRemote() == aAccessible->IsRemote()); + if (docAcc->IsRemote()) { + mDoc = docAcc->AsRemote()->AsDoc(); + } else { + mDoc = docAcc->AsLocal(); + } + } + + return *this; +} + +SessionAccessibility::IDMappingEntry::operator Accessible*() const { + if (mInternalID == 0) { + return static_cast<LocalAccessible*>(mDoc.get()); + } + + if (mInternalID == IS_REMOTE) { + return static_cast<DocAccessibleParent*>(mDoc.get()); + } + + if (mInternalID & IS_REMOTE) { + return static_cast<DocAccessibleParent*>(mDoc.get()) + ->GetAccessible(mInternalID & ~IS_REMOTE); + } + + Accessible* accessible = + static_cast<LocalAccessible*>(mDoc.get()) + ->AsDoc() + ->GetAccessibleByUniqueID(reinterpret_cast<void*>(mInternalID)); + // If the accessible is retrievable from the DocAccessible, it can't be + // defunct. + MOZ_ASSERT(!accessible->AsLocal()->IsDefunct()); + + return accessible; +} + void SessionAccessibility::RegisterAccessible(Accessible* aAccessible) { if (IPCAccessibilityActive()) { // Don't register accessible in content process. @@ -766,7 +805,6 @@ void SessionAccessibility::UnregisterAccessible(Accessible* aAccessible) { } RefPtr<SessionAccessibility> sessionAcc = GetInstanceFor(aAccessible); - MOZ_ASSERT(sessionAcc, "Need SessionAccessibility to unregister Accessible!"); if (sessionAcc) { Accessible* registeredAcc = sessionAcc->mIDToAccessibleMap.Get(virtualViewID); ===================================== accessible/android/SessionAccessibility.h ===================================== @@ -110,10 +110,34 @@ class SessionAccessibility final jni::NativeWeakPtr<widget::GeckoViewSupport> mWindow; // Parent only java::SessionAccessibility::NativeProvider::GlobalRef mSessionAccessibility; + class IDMappingEntry { + public: + explicit IDMappingEntry(Accessible* aAccessible); + + IDMappingEntry& operator=(Accessible* aAccessible); + + operator Accessible*() const; + + private: + // A strong reference to a DocAccessible or DocAccessibleParent. They don't + // share any useful base class except nsISupports, so we use that. + // When we retrieve the document from this reference we cast it to + // LocalAccessible in the DocAccessible case because DocAccessible has + // multiple inheritance paths for nsISupports. + RefPtr<nsISupports> mDoc; + // The ID of the accessible as used in the internal doc mapping. + // We rely on this ID being pointer derived and therefore divisible by two + // so we can use the first bit to mark if it is remote or not. + uint64_t mInternalID; + + static const uintptr_t IS_REMOTE = 0x1; + }; + /* * This provides a mapping from 32 bit id to accessible objects. */ - nsTHashMap<nsUint32HashKey, Accessible*> mIDToAccessibleMap; + nsBaseHashtable<nsUint32HashKey, IDMappingEntry, Accessible*> + mIDToAccessibleMap; }; } // namespace a11y ===================================== accessible/ipc/DocAccessibleParent.cpp ===================================== @@ -29,7 +29,6 @@ #endif #if defined(ANDROID) -# include "mozilla/a11y/SessionAccessibility.h" # define ACQUIRE_ANDROID_LOCK \ MonitorAutoLock mal(nsAccessibilityService::GetAndroidMonitor()); #else ===================================== accessible/ipc/DocAccessibleParent.h ===================================== @@ -29,10 +29,6 @@ class xpcAccessibleGeneric; class DocAccessiblePlatformExtParent; #endif -#ifdef ANDROID -class SessionAccessibility; -#endif - /* * These objects live in the main process and comunicate with and represent * an accessible document in a content process. @@ -348,10 +344,6 @@ class DocAccessibleParent : public RemoteAccessible, size_t SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) override; -#ifdef ANDROID - RefPtr<SessionAccessibility> mSessionAccessibility; -#endif - private: ~DocAccessibleParent(); ===================================== accessible/ipc/moz.build ===================================== @@ -24,11 +24,6 @@ else: LOCAL_INCLUDES += [ "/accessible/mac", ] - elif CONFIG["MOZ_WIDGET_TOOLKIT"] == "android": - LOCAL_INCLUDES += [ - "/accessible/android", - "/widget/android", - ] else: LOCAL_INCLUDES += [ "/accessible/other", ===================================== browser/base/content/browser-fullScreenAndPointerLock.js ===================================== @@ -62,9 +62,14 @@ var PointerlockFsWarning = { this._element = document.getElementById(elementId); // Setup event listeners this._element.addEventListener("transitionend", this); + this._element.addEventListener("transitioncancel", this); window.addEventListener("mousemove", this, true); + window.addEventListener("activate", this); + window.addEventListener("deactivate", this); // The timeout to hide the warning box after a while. this._timeoutHide = new this.Timeout(() => { + window.removeEventListener("activate", this); + window.removeEventListener("deactivate", this); this._state = "hidden"; }, timeout); // The timeout to show the warning box when the pointer is at the top @@ -116,11 +121,10 @@ var PointerlockFsWarning = { return; } - // Explicitly set the last state to hidden to avoid the warning - // box being hidden immediately because of mousemove. - this._state = "onscreen"; - this._lastState = "hidden"; - this._timeoutHide.start(); + if (Services.focus.activeWindow == window) { + this._state = "onscreen"; + this._timeoutHide.start(); + } }, /** @@ -148,7 +152,10 @@ var PointerlockFsWarning = { this._element.hidden = true; // Remove all event listeners this._element.removeEventListener("transitionend", this); + this._element.removeEventListener("transitioncancel", this); window.removeEventListener("mousemove", this, true); + window.removeEventListener("activate", this); + window.removeEventListener("deactivate", this); // Clear fields this._element = null; this._timeoutHide = null; @@ -186,7 +193,7 @@ var PointerlockFsWarning = { } if (newState != "hidden") { if (currentState != "hidden") { - this._element.setAttribute(newState, true); + this._element.setAttribute(newState, ""); } else { // When the previous state is hidden, the display was none, // thus no box was constructed. We need to wait for the new @@ -197,7 +204,7 @@ var PointerlockFsWarning = { requestAnimationFrame(() => { requestAnimationFrame(() => { if (this._element) { - this._element.setAttribute(newState, true); + this._element.setAttribute(newState, ""); } }); }); @@ -217,7 +224,7 @@ var PointerlockFsWarning = { } else if (this._timeoutShow.delay >= 0) { this._timeoutShow.start(); } - } else { + } else if (state != "onscreen") { let elemRect = this._element.getBoundingClientRect(); if (state == "hiding" && this._lastState != "hidden") { // If we are on the hiding transition, and the pointer @@ -239,12 +246,23 @@ var PointerlockFsWarning = { } break; } - case "transitionend": { + case "transitionend": + case "transitioncancel": { if (this._state == "hiding") { this._element.hidden = true; } break; } + case "activate": { + this._state = "onscreen"; + this._timeoutHide.start(); + break; + } + case "deactivate": { + this._state = "hidden"; + this._timeoutHide.cancel(); + break; + } } }, }; ===================================== browser/base/content/fullscreen-and-pointerlock.inc.xhtml ===================================== @@ -3,7 +3,7 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. <html:div id="fullscreen-and-pointerlock-wrapper"> - <html:div id="fullscreen-warning" class="pointerlockfswarning" hidden="true"> + <html:div id="fullscreen-warning" class="pointerlockfswarning" hidden=""> <html:div class="pointerlockfswarning-domain-text"> <html:span class="pointerlockfswarning-domain" data-l10n-name="domain"/> </html:div> @@ -20,7 +20,7 @@ </html:button> </html:div> - <html:div id="pointerlock-warning" class="pointerlockfswarning" hidden="true"> + <html:div id="pointerlock-warning" class="pointerlockfswarning" hidden=""> <html:div class="pointerlockfswarning-domain-text"> <html:span class="pointerlockfswarning-domain" data-l10n-name="domain"/> </html:div> ===================================== browser/base/content/test/fullscreen/browser_fullscreen_warning.js ===================================== @@ -3,14 +3,35 @@ "use strict"; -add_task(async function test_fullscreen_display_none() { +function checkWarningState(aWarningElement, aExpectedState, aMsg) { + ["hidden", "ontop", "onscreen"].forEach(state => { + is( + aWarningElement.hasAttribute(state), + state == aExpectedState, + `${aMsg} - check ${state} attribute.` + ); + }); +} + +async function waitForWarningState(aWarningElement, aExpectedState) { + await BrowserTestUtils.waitForAttribute(aExpectedState, aWarningElement, ""); + checkWarningState( + aWarningElement, + aExpectedState, + `Wait for ${aExpectedState} state` + ); +} + +add_setup(async function init() { await SpecialPowers.pushPrefEnv({ set: [ ["full-screen-api.enabled", true], ["full-screen-api.allow-trusted-requests-only", false], ], }); +}); +add_task(async function test_fullscreen_display_none() { await BrowserTestUtils.withNewTab( { gBrowser, @@ -30,11 +51,13 @@ add_task(async function test_fullscreen_display_none() { }, async function (browser) { let warning = document.getElementById("fullscreen-warning"); - let warningShownPromise = BrowserTestUtils.waitForAttribute( - "onscreen", + checkWarningState( warning, - "true" + "hidden", + "Should not show full screen warning initially" ); + + let warningShownPromise = waitForWarningState(warning, "onscreen"); // Enter fullscreen await SpecialPowers.spawn(browser, [], async () => { let frame = content.document.querySelector("iframe"); @@ -54,39 +77,33 @@ add_task(async function test_fullscreen_display_none() { ); document.getElementById("fullscreen-exit-button").click(); await exitFullscreenPromise; + + checkWarningState( + warning, + "hidden", + "Should hide fullscreen warning after exiting fullscreen" + ); } ); }); add_task(async function test_fullscreen_pointerlock_conflict() { - await SpecialPowers.pushPrefEnv({ - set: [ - ["full-screen-api.enabled", true], - ["full-screen-api.allow-trusted-requests-only", false], - ], - }); - await BrowserTestUtils.withNewTab("https://example.com", async browser => { let fsWarning = document.getElementById("fullscreen-warning"); let plWarning = document.getElementById("pointerlock-warning"); - is( - fsWarning.getAttribute("onscreen"), - null, - "Should not show full screen warning initially." - ); - is( - plWarning.getAttribute("onscreen"), - null, - "Should not show pointer lock warning initially." - ); - - let fsWarningShownPromise = BrowserTestUtils.waitForAttribute( - "onscreen", + checkWarningState( fsWarning, - "true" + "hidden", + "Should not show full screen warning initially" + ); + checkWarningState( + plWarning, + "hidden", + "Should not show pointer lock warning initially" ); + let fsWarningShownPromise = waitForWarningState(fsWarning, "onscreen"); info("Entering full screen and pointer lock."); await SpecialPowers.spawn(browser, [], async () => { await content.document.body.requestFullscreen(); @@ -94,15 +111,10 @@ add_task(async function test_fullscreen_pointerlock_conflict() { }); await fsWarningShownPromise; - is( - fsWarning.getAttribute("onscreen"), - "true", - "Should show full screen warning." - ); - is( - plWarning.getAttribute("onscreen"), - null, - "Should not show pointer lock warning." + checkWarningState( + plWarning, + "hidden", + "Should not show pointer lock warning" ); info("Exiting pointerlock"); @@ -110,18 +122,19 @@ add_task(async function test_fullscreen_pointerlock_conflict() { await content.document.exitPointerLock(); }); - is( - fsWarning.getAttribute("onscreen"), - "true", - "Should still show full screen warning." + checkWarningState( + fsWarning, + "onscreen", + "Should still show full screen warning" ); - is( - plWarning.getAttribute("onscreen"), - null, - "Should not show pointer lock warning." + checkWarningState( + plWarning, + "hidden", + "Should not show pointer lock warning" ); // Cleanup + info("Exiting fullscreen"); await document.exitFullscreen(); }); }); ===================================== dom/tests/browser/browser_pointerlock_warning.js ===================================== @@ -15,6 +15,25 @@ const FRAME_TEST_URL = encodeURI(BODY_URL) + '"></iframe></body>'; +function checkWarningState(aWarningElement, aExpectedState, aMsg) { + ["hidden", "ontop", "onscreen"].forEach(state => { + is( + aWarningElement.hasAttribute(state), + state == aExpectedState, + `${aMsg} - check ${state} attribute.` + ); + }); +} + +async function waitForWarningState(aWarningElement, aExpectedState) { + await BrowserTestUtils.waitForAttribute(aExpectedState, aWarningElement, ""); + checkWarningState( + aWarningElement, + aExpectedState, + `Wait for ${aExpectedState} state` + ); +} + // Make sure the pointerlock warning is shown and exited with the escape key add_task(async function show_pointerlock_warning_escape() { let urls = [TEST_URL, FRAME_TEST_URL]; @@ -24,11 +43,7 @@ add_task(async function show_pointerlock_warning_escape() { let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, url); let warning = document.getElementById("pointerlock-warning"); - let warningShownPromise = BrowserTestUtils.waitForAttribute( - "onscreen", - warning, - "true" - ); + let warningShownPromise = waitForWarningState(warning, "onscreen"); let expectedWarningText; @@ -49,11 +64,7 @@ add_task(async function show_pointerlock_warning_escape() { ok(true, "Pointerlock warning shown"); - let warningHiddenPromise = BrowserTestUtils.waitForAttribute( - "hidden", - warning, - "" - ); + let warningHiddenPromise = waitForWarningState(warning, "hidden"); await BrowserTestUtils.waitForCondition( () => warning.innerText == expectedWarningText, ===================================== js/src/gc/GC.cpp ===================================== @@ -1331,6 +1331,11 @@ void GCRuntime::assertNoMarkingWork() const { } #endif +static size_t GetGCParallelThreadCount() { + AutoLockHelperThreadState lock; + return HelperThreadState().getGCParallelThreadCount(lock); +} + bool GCRuntime::updateMarkersVector() { MOZ_ASSERT(helperThreadCount >= 1, "There must always be at least one mark task"); @@ -1339,8 +1344,8 @@ bool GCRuntime::updateMarkersVector() { // Limit worker count to number of GC parallel tasks that can run // concurrently, otherwise one thread can deadlock waiting on another. - size_t targetCount = std::min(markingWorkerCount(), - HelperThreadState().getGCParallelThreadCount()); + size_t targetCount = + std::min(markingWorkerCount(), GetGCParallelThreadCount()); if (markers.length() > targetCount) { return markers.resize(targetCount); ===================================== js/src/gc/ParallelMarking.cpp ===================================== @@ -103,6 +103,10 @@ bool ParallelMarker::markOneColor(MarkColor color, SliceBudget& sliceBudget) { { AutoLockHelperThreadState lock; + // There should always be enough parallel tasks to run our marking work. + MOZ_RELEASE_ASSERT(HelperThreadState().getGCParallelThreadCount(lock) >= + workerCount()); + for (size_t i = 0; i < workerCount(); i++) { gc->startTask(*tasks[i], lock); } ===================================== js/src/vm/HelperThreadState.h ===================================== @@ -333,9 +333,11 @@ class GlobalHelperThreadState { GCParallelTaskList& gcParallelWorklist() { return gcParallelWorklist_; } - size_t getGCParallelThreadCount() const { return gcParallelThreadCount; } + size_t getGCParallelThreadCount(const AutoLockHelperThreadState& lock) const { + return gcParallelThreadCount; + } void setGCParallelThreadCount(size_t count, - const AutoLockHelperThreadState&) { + const AutoLockHelperThreadState& lock) { MOZ_ASSERT(count >= 1); MOZ_ASSERT(count <= threadCount); gcParallelThreadCount = count; View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/c4e8cd… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/compare/c4e8cd… 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 40905: Avoid replacing .*browser-testbuild targets
by boklm (@boklm) 01 Aug '23

01 Aug '23
boklm pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: d8fe33ad by Nicolas Vigier at 2023-08-01T10:53:55+02:00 Bug 40905: Avoid replacing .*browser-testbuild targets In some places we use target_replace to replace .*browser-.* targets, in order to replace the torbrowser-$os-$arch targets. However the regexp we used would also replace the torbrowser-testbuild target, so we need to update the regexp to exclude the testbuild target. - - - - - 7 changed files: - projects/conjure/config - projects/go/config - projects/lyrebird/config - projects/snowflake/config - projects/tor-android-service/config - projects/tor-onion-proxy-library/config - projects/webtunnel/config Changes: ===================================== projects/conjure/config ===================================== @@ -21,4 +21,4 @@ steps: norec: sha256sum: 2b403d6edf075777003bf2194a43fb178a28a4eaa7d23ec8f104563d9bbd7e53 target_replace: - '^torbrowser-.*': 'torbrowser-linux-x86_64' + '^torbrowser-(?!testbuild).*': 'torbrowser-linux-x86_64' ===================================== projects/go/config ===================================== @@ -123,6 +123,6 @@ input_files: - project: go-bootstrap name: go-bootstrap target_replace: - '^.*browser-.*': 'basebrowser-linux-x86_64' + '^.*browser-(?!testbuild).*': 'basebrowser-linux-x86_64' - filename: 0001-Use-fixed-go-build-tmp-directory.patch enable: '[% c("var/android") %]' ===================================== projects/lyrebird/config ===================================== @@ -35,4 +35,4 @@ steps: norec: sha256sum: '[% c("var/go_vendor_sha256sum") %]' target_replace: - '^torbrowser-.*': 'torbrowser-linux-x86_64' + '^torbrowser-(?!testbuild).*': 'torbrowser-linux-x86_64' ===================================== projects/snowflake/config ===================================== @@ -22,4 +22,4 @@ steps: norec: sha256sum: 62f9065881f5a3cbe5ea5a9802e961e1821d9e468cb2a85ebab1e8afcc0cc953 target_replace: - '^torbrowser-.*': 'torbrowser-linux-x86_64' + '^torbrowser-(?!testbuild).*': 'torbrowser-linux-x86_64' ===================================== projects/tor-android-service/config ===================================== @@ -26,19 +26,19 @@ input_files: - project: tor-expert-bundle name: tor-expert-bundle-armv7 target_replace: - '^torbrowser-.*': 'torbrowser-android-armv7' + '^torbrowser-(?!testbuild).*': 'torbrowser-android-armv7' - project: tor-expert-bundle name: tor-expert-bundle-aarch64 target_replace: - '^torbrowser-.*': 'torbrowser-android-aarch64' + '^torbrowser-(?!testbuild).*': 'torbrowser-android-aarch64' - project: tor-expert-bundle name: tor-expert-bundle-x86 target_replace: - '^torbrowser-.*': 'torbrowser-android-x86' + '^torbrowser-(?!testbuild).*': 'torbrowser-android-x86' - project: tor-expert-bundle name: tor-expert-bundle-x86_64 target_replace: - '^torbrowser-.*': 'torbrowser-android-x86_64' + '^torbrowser-(?!testbuild).*': 'torbrowser-android-x86_64' - URL: 'https://dl.google.com/dl/android/studio/jetifier-zips/1.0.0-beta10/jetifier…' name: jetifier sha256sum: 38186db9c9d1b745890b3d35c0667da1cac146ceb3c26aae5bf0802119472c1b ===================================== projects/tor-onion-proxy-library/config ===================================== @@ -21,19 +21,19 @@ input_files: - project: tor-expert-bundle name: tor-expert-bundle-armv7 target_replace: - '^torbrowser-.*': 'torbrowser-android-armv7' + '^torbrowser-(?!testbuild).*': 'torbrowser-android-armv7' - project: tor-expert-bundle name: tor-expert-bundle-aarch64 target_replace: - '^torbrowser-.*': 'torbrowser-android-aarch64' + '^torbrowser-(?!testbuild).*': 'torbrowser-android-aarch64' - project: tor-expert-bundle name: tor-expert-bundle-x86 target_replace: - '^torbrowser-.*': 'torbrowser-android-x86' + '^torbrowser-(?!testbuild).*': 'torbrowser-android-x86' - project: tor-expert-bundle name: tor-expert-bundle-x86_64 target_replace: - '^torbrowser-.*': 'torbrowser-android-x86_64' + '^torbrowser-(?!testbuild).*': 'torbrowser-android-x86_64' - filename: 'gradle-dependencies-[% c("var/gradle_dependencies_version") %]' name: gradle-dependencies exec: '[% INCLUDE "fetch-gradle-dependencies" %]' ===================================== projects/webtunnel/config ===================================== @@ -21,4 +21,4 @@ steps: norec: sha256sum: e3b5a9b3c3939aafa5389246f3a7a7e78d70fe623bed495f99c39cc37bbbe645 target_replace: - '^torbrowser-.*': 'torbrowser-linux-x86_64' + '^torbrowser-(?!testbuild).*': 'torbrowser-linux-x86_64' View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/d… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/d… 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 40615: Add a README for the bundled font directory.
by Pier Angelo Vendrame (@pierov) 01 Aug '23

01 Aug '23
Pier Angelo Vendrame pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 571d86aa by FlexFoot at 2023-08-01T08:47:20+00:00 Bug 40615: Add a README for the bundled font directory. Include a README in the final fonts directory to discourage users from modifying the bundled fonts and to warn them about the consequences this could have. - - - - - 3 changed files: - + projects/fonts/README.txt - projects/fonts/build - projects/fonts/config Changes: ===================================== projects/fonts/README.txt ===================================== @@ -0,0 +1,7 @@ +DO NOT MODIFY THE CONTENTS OF THIS DIRECTORY + +Any adjustment to bundled fonts will result in an altered fingerprint. Font +fingerprinting is more than just detecting what fonts you have, it also includes +font fallbacks and characters (unicode code points) and any change in those can +be measured. + ===================================== projects/fonts/build ===================================== @@ -32,6 +32,7 @@ mv noto-fonts-* noto-fonts [% IF c("var/linux") %] cp {NotoSansJP-Regular.otf,NotoSansKR-Regular.otf,NotoSansSC-Regular.otf,NotoSansTC-Regular.otf} $distdir/ [% END %] +cp README.txt "$distdir/000_README.txt" cd /var/tmp/dist [% c('tar', { tar_src => [ 'fonts' ], ===================================== projects/fonts/config ===================================== @@ -161,6 +161,7 @@ var: input_files: - project: container-image + - filename: README.txt - filename: 'noto-fonts-[% c("var/noto_git_hash") %]-[% c("version") %]' name: noto-fonts exec: '[% INCLUDE "fetch-noto-fonts" %]' View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/5… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/5… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][maint-12.5] Bug 31546: Copy Firefox PDBs for Windows
by richard (@richard) 31 Jul '23

31 Jul '23
richard pushed to branch maint-12.5 at The Tor Project / Applications / tor-browser-build Commits: 3ba21986 by Pier Angelo Vendrame at 2023-07-31T20:37:13+00:00 Bug 31546: Copy Firefox PDBs for Windows Also copy debug symbols after stripping on Linux 32-bit (we only copied them in Linux 64-bit) and for all our browsers (previously we copied them only for Tor Browser). Include the headers directory with the symbols, because some of them are generated during the build, but they are needed for debugging. - - - - - 2 changed files: - projects/browser/build - projects/firefox/build Changes: ===================================== projects/browser/build ===================================== @@ -397,13 +397,13 @@ SCRIPT_EOF [% IF c("var/updater_enabled") -%] cp $rootdir/[% c('input_files_by_name/firefox') %]/mar-tools-*.zip "$OUTDIR"/ [% END -%] -[% IF c("var/linux-x86_64") -%] - [% IF c("var/tor-browser") -%] - cp $rootdir/[% c('input_files_by_name/firefox') %]/browser-debug.tar.xz "$OUTDIR"/[% c("var/project-name") %]-[% c("var/mar_osname") %]-debug.tar.xz - [% END -%] - [% IF !c("var/asan") -%] - cp $rootdir/[% c('input_files_by_name/firefox') %]/geckodriver-linux64.tar.xz "$OUTDIR"/ +[% IF c("var/linux") -%] + cp $rootdir/[% c('input_files_by_name/firefox') %]/browser-debug.tar.xz "$OUTDIR/[% c('var/project-name') %]-[% c('var/mar_osname') %]-debug.tar.xz" + [% IF c("var/linux-x86_64") && !c("var/asan") -%] + cp $rootdir/[% c('input_files_by_name/firefox') %]/geckodriver.tar.xz "$OUTDIR/geckodriver-[% c('var/mar_osname') %].tar.xz" [% END -%] +[% ELSIF c("var/windows") -%] + cp $rootdir/[% c('input_files_by_name/firefox') %]/browser-debug.zip "$OUTDIR/[% c('var/project-name') %]-[% c('var/mar_osname') %]-debug.zip" [% END -%] [%IF c("var/tor-browser") -%] tor_expert_bundle_src="[% c("input_files_by_name/tor-expert-bundle") %]" ===================================== projects/firefox/build ===================================== @@ -211,6 +211,10 @@ export LANG=C.UTF-8 cp obj-*/testing/geckodriver/x86_64-unknown-linux-gnu/release/geckodriver $distdir [% END %] cp -a obj-*/dist/[% c('var/exe_name') %]/* $distdir/Browser/ + mkdir -p $distdir/Debug + # Some include files are symlinks, so use -Lr, or the tarball will fail + # silently. Also, on Linux we populate the debug symbols by stripping later. + cp -Lr obj-*/dist/include $distdir/Debug/ # Remove firefox-bin (we don't use it, see ticket #10126) rm -f "$distdir/Browser/[% c('var/exe_name') %]-bin" # TODO: There goes FIPS-140.. We could upload these somewhere unique and @@ -232,6 +236,11 @@ RBM_TB_EOF [% ELSE %] cp -a /var/tmp/dist/fxc2/bin/d3dcompiler_47.dll $distdir/Browser [% END %] + mkdir -p $distdir/Debug/Browser + pushd obj-* + cp -Lr dist/include $distdir/Debug/ + find . \( -path ./dist -o -path ./_tests \) -prune -o -name '*.pdb' -exec cp -l {} $distdir/Debug/Browser/ \; + popd [% END %] [% IF c("var/updater_enabled") -%] @@ -279,8 +288,8 @@ RBM_TB_EOF cd $distdir -[% IF c("var/linux-x86_64") %] - [% IF !c("var/asan") %] +[% IF c("var/linux") -%] + [% IF c("var/linux-x86_64") && !c("var/asan") -%] # No need for an unstripped geckodriver strip geckodriver [% END %] @@ -334,17 +343,22 @@ END; tar_args => '-czf ' _ dest_dir _ '/' _ c('filename') _ '/browser.tar.gz', }) %] -[% IF c("var/linux-x86_64") %] +[% IF c("var/linux") -%] [% c('tar', { tar_src => [ 'Debug' ], tar_args => '-cJf ' _ dest_dir _ '/' _ c('filename') _ '/browser-debug.tar.xz', }) %] - [% IF !c("var/asan") %] + [% IF c("var/linux-x86_64") && !c("var/asan") -%] [% c('tar', { tar_src => [ 'geckodriver' ], tar_args => '-cJf ' _ dest_dir _ '/' _ c('filename') _ '/geckodriver-linux64.tar.xz', }) %] [% END %] +[% ELSIF c("var/windows") -%] + [% c('zip', { + zip_src => [ 'Debug' ], + zip_args => dest_dir _ '/' _ c('filename') _ '/browser-debug.zip', + }) %] [% END %] [% IF c("var/updater_enabled") -%] View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/3… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/3… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
[Git][tpo/applications/tor-browser-build][maint-12.5] Bug 40909: Add dan_b and ma1 to list of taggers in relevant projects
by richard (@richard) 31 Jul '23

31 Jul '23
richard pushed to branch maint-12.5 at The Tor Project / Applications / tor-browser-build Commits: 5f27b741 by Richard Pospesel at 2023-07-31T19:23:09+00:00 Bug 40909: Add dan_b and ma1 to list of taggers in relevant projects - - - - - 4 changed files: - projects/android-components/config - projects/fenix/config - projects/firefox/config - projects/geckoview/config Changes: ===================================== projects/android-components/config ===================================== @@ -5,6 +5,8 @@ git_hash: '[% project %]-[% c("var/android_components_version") %]-[% c("var/bro git_url: https://gitlab.torproject.org/tpo/applications/android-components.git tag_gpg_id: 1 gpg_keyring: + - dan_b.gpg + - ma1.gpg - pierov.gpg - richard.gpg variant: '[% IF c("var/release") %]Release[% ELSE %]Beta[% END %]' ===================================== projects/fenix/config ===================================== @@ -5,6 +5,8 @@ git_hash: 'tor-browser-[% c("var/fenix_version") %]-[% c("var/browser_branch") % git_url: https://gitlab.torproject.org/tpo/applications/fenix.git tag_gpg_id: 1 gpg_keyring: + - dan_b.gpg + - ma1.gpg - pierov.gpg - richard.gpg variant: Beta ===================================== projects/firefox/config ===================================== @@ -5,6 +5,8 @@ git_hash: '[% c("var/project-name") %]-[% c("var/firefox_version") %]-[% c("var/ tag_gpg_id: 1 git_url: https://gitlab.torproject.org/tpo/applications/tor-browser.git gpg_keyring: + - dan_b.gpg + - ma1.gpg - pierov.gpg - richard.gpg container: ===================================== projects/geckoview/config ===================================== @@ -5,6 +5,8 @@ git_hash: 'tor-browser-[% c("var/geckoview_version") %]-[% c("var/browser_branch tag_gpg_id: 1 git_url: https://gitlab.torproject.org/tpo/applications/tor-browser.git gpg_keyring: + - dan_b.gpg + - ma1.gpg - pierov.gpg - richard.gpg container: View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/5… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/5… 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 40909: Add dan_b and ma1 to list of taggers in relevant projects
by richard (@richard) 31 Jul '23

31 Jul '23
richard pushed to branch main at The Tor Project / Applications / tor-browser-build Commits: 13122472 by Richard Pospesel at 2023-07-31T19:19:03+00:00 Bug 40909: Add dan_b and ma1 to list of taggers in relevant projects - - - - - 4 changed files: - projects/android-components/config - projects/fenix/config - projects/firefox/config - projects/geckoview/config Changes: ===================================== projects/android-components/config ===================================== @@ -5,6 +5,8 @@ git_hash: '[% project %]-[% c("var/android_components_version") %]-[% c("var/bro git_url: https://gitlab.torproject.org/tpo/applications/android-components.git tag_gpg_id: 1 gpg_keyring: + - dan_b.gpg + - ma1.gpg - pierov.gpg - richard.gpg variant: '[% IF c("var/release") %]Release[% ELSE %]Beta[% END %]' ===================================== projects/fenix/config ===================================== @@ -5,6 +5,8 @@ git_hash: 'tor-browser-[% c("var/fenix_version") %]-[% c("var/browser_branch") % git_url: https://gitlab.torproject.org/tpo/applications/fenix.git tag_gpg_id: 1 gpg_keyring: + - dan_b.gpg + - ma1.gpg - pierov.gpg - richard.gpg variant: Beta ===================================== projects/firefox/config ===================================== @@ -5,6 +5,8 @@ git_hash: '[% c("var/project-name") %]-[% c("var/firefox_version") %]-[% c("var/ tag_gpg_id: 1 git_url: https://gitlab.torproject.org/tpo/applications/tor-browser.git gpg_keyring: + - dan_b.gpg + - ma1.gpg - pierov.gpg - richard.gpg container: ===================================== projects/geckoview/config ===================================== @@ -5,6 +5,8 @@ git_hash: 'tor-browser-[% c("var/geckoview_version") %]-[% c("var/browser_branch tag_gpg_id: 1 git_url: https://gitlab.torproject.org/tpo/applications/tor-browser.git gpg_keyring: + - dan_b.gpg + - ma1.gpg - pierov.gpg - richard.gpg container: View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/1… -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/commit/1… 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 base-browser-102.14.0esr-12.5-1-build2
by ma1 (@ma1) 31 Jul '23

31 Jul '23
ma1 pushed new tag base-browser-102.14.0esr-12.5-1-build2 at The Tor Project / Applications / Tor Browser -- View it on GitLab: https://gitlab.torproject.org/tpo/applications/tor-browser/-/tree/base-brow… You're receiving this email because of your account on gitlab.torproject.org.
1 0
0 0
  • ← Newer
  • 1
  • ...
  • 390
  • 391
  • 392
  • 393
  • 394
  • 395
  • 396
  • ...
  • 1873
  • Older →

HyperKitty Powered by HyperKitty version 1.3.12.