Removing 'tmpdir92'... Extracting 'firefox-111.0.source.tar.xz'... Testing patches... ==> patches/allow-ubo-private-mode.patch: patching file toolkit/components/extensions/Extension.jsm Hunk #1 succeeded at 3157 (offset 129 lines). ==> patches/allow-JXL-in-non-nightly-browser.patch: patching file toolkit/moz.configure Hunk #1 succeeded at 735 (offset 32 lines). ==> patches/bootstrap-without-vcs.patch: patching file python/mozboot/mozboot/bootstrap.py patching file python/mozversioncontrol/mozversioncontrol/__init__.py patching file third_party/python/mozilla_repo_urls/mozilla_repo_urls/parser.py patching file third_party/python/taskcluster_taskgraph/taskgraph/util/vcs.py ==> patches/context-menu.patch: patching file browser/base/content/browser-context.inc Hunk #1 succeeded at 99 (offset -1 lines). Hunk #2 succeeded at 255 (offset 2 lines). ==> patches/custom-ubo-assets-bootstrap-location.patch: patching file toolkit/components/extensions/parent/ext-storage.js Hunk #1 succeeded at 292 (offset 115 lines). ==> patches/disable-data-reporting-at-compile-time.patch: patching file browser/moz.configure Hunk #1 succeeded at 5 with fuzz 2. ==> patches/faster-package-multi-locale.patch: patching file python/mozbuild/mozbuild/mach_commands.py Hunk #1 succeeded at 2643 (offset 175 lines). Hunk #2 succeeded at 2659 (offset 175 lines). ==> patches/hide-passwordmgr.patch: patching file browser/base/content/browser.js Hunk #1 succeeded at 1893 (offset 46 lines). patching file browser/components/preferences/privacy.js Hunk #1 succeeded at 761 (offset -49 lines). ==> patches/librewolf-pref-pane.patch: patching file browser/components/preferences/jar.mn patching file browser/components/preferences/librewolf.inc.xhtml patching file browser/components/preferences/librewolf.js patching file browser/components/preferences/preferences.js Hunk #2 succeeded at 201 (offset 4 lines). patching file browser/components/preferences/preferences.xhtml Hunk #2 succeeded at 135 (offset 5 lines). Hunk #3 succeeded at 224 (offset 5 lines). patching file browser/locales/en-US/browser/preferences/preferences.ftl Hunk #1 succeeded at 1449 (offset 29 lines). patching file browser/themes/shared/jar.inc.mn Hunk #1 succeeded at 110 (offset 2 lines). Hunk #2 FAILED at 128. 1 out of 2 hunks FAILED -- saving rejects to file browser/themes/shared/jar.inc.mn.rej patching file browser/themes/shared/preferences/category-librewolf.svg patching file browser/themes/shared/preferences/librewolf.css patching file browser/themes/shared/preferences/preferences.css Hunk #1 succeeded at 211 (offset 5 lines). ---[snip]---------- --> browser/themes/shared/jar.inc.mn.rej: --- browser/themes/shared/jar.inc.mn +++ browser/themes/shared/jar.inc.mn @@ -128,6 +129,7 @@ skin/classic/browser/preferences/vpn-logo.svg (../shared/preferences/vpn-logo.svg) skin/classic/browser/preferences/search.css (../shared/preferences/search.css) skin/classic/browser/preferences/siteDataSettings.css (../shared/preferences/siteDataSettings.css) + skin/classic/browser/preferences/librewolf.css (../shared/preferences/librewolf.css) skin/classic/browser/spotlight.css (../shared/spotlight.css) skin/classic/browser/upgradeDialog/abstract.png (../shared/upgradeDialog/abstract.png) skin/classic/browser/upgradeDialog/cheers.png (../shared/upgradeDialog/cheers.png) ---[snip]---------- ==> patches/librewolf-prefs.patch: patching file browser/app/profile/firefox.js ==> patches/mozilla_dirs.patch: patching file toolkit/xre/nsXREDirProvider.cpp Hunk #1 succeeded at 300 (offset -3 lines). Hunk #2 FAILED at 413. Hunk #3 succeeded at 411 with fuzz 2 (offset -54 lines). Hunk #4 succeeded at 1114 (offset -162 lines). Hunk #5 succeeded at 1363 (offset -196 lines). Hunk #6 succeeded at 1373 (offset -196 lines). 1 out of 6 hunks FAILED -- saving rejects to file toolkit/xre/nsXREDirProvider.cpp.rej ---[snip]---------- --> toolkit/xre/nsXREDirProvider.cpp.rej: --- toolkit/xre/nsXREDirProvider.cpp +++ toolkit/xre/nsXREDirProvider.cpp @@ -413,9 +413,9 @@ nsXREDirProvider::GetFile(const char* aProperty, bool* aPersistent, rv = GetUserDataDirectoryHome(getter_AddRefs(localDir), false); if (NS_SUCCEEDED(rv)) { # if defined(XP_MACOSX) - rv = localDir->AppendNative("Mozilla"_ns); + rv = localDir->AppendNative("LibreWolf"_ns); # else - rv = localDir->AppendNative(".mozilla"_ns); + rv = localDir->AppendNative(".librewolf"_ns); # endif } if (NS_SUCCEEDED(rv)) { ---[snip]---------- ==> patches/msix.patch: patching file browser/installer/windows/msix/AppxManifest.xml.in patching file python/mozbuild/mozbuild/mach_commands.py Hunk #1 succeeded at 2427 (offset 102 lines). Hunk #2 succeeded at 2564 (offset 102 lines). patching file python/mozbuild/mozbuild/repackaging/msix.py Hunk #1 succeeded at 95 (offset -2 lines). Hunk #2 succeeded at 120 (offset -2 lines). Hunk #3 succeeded at 366 (offset -2 lines). patching file python/mozbuild/mozbuild/repackaging/msix.py Hunk #1 succeeded at 159 (offset -34 lines). Hunk #2 succeeded at 216 (offset -38 lines). Hunk #3 succeeded at 428 (offset -43 lines). ==> patches/remove_addons.patch: patching file browser/extensions/moz.build patching file browser/locales/Makefile.in patching file browser/locales/filter.py Hunk #1 succeeded at 15 (offset -2 lines). patching file browser/locales/l10n.ini patching file browser/locales/l10n.toml Hunk #1 succeeded at 135 (offset 2 lines). ==> patches/rfp-performance-api.patch: patching file dom/performance/Performance.cpp Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] Skipping patch. 5 out of 5 hunks ignored -- saving rejects to file dom/performance/Performance.cpp.rej patching file dom/performance/PerformanceMainThread.cpp Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] Skipping patch. 4 out of 4 hunks ignored -- saving rejects to file dom/performance/PerformanceMainThread.cpp.rej patching file dom/performance/PerformanceNavigationTiming.cpp Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] Skipping patch. 1 out of 1 hunk ignored -- saving rejects to file dom/performance/PerformanceNavigationTiming.cpp.rej patching file dom/performance/PerformanceTiming.cpp Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] Skipping patch. 2 out of 2 hunks ignored -- saving rejects to file dom/performance/PerformanceTiming.cpp.rej patching file dom/performance/Performance.h Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] Skipping patch. 3 out of 3 hunks ignored -- saving rejects to file dom/performance/Performance.h.rej patching file dom/performance/Performance.cpp Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] Skipping patch. 1 out of 1 hunk ignored -- saving rejects to file dom/performance/Performance.cpp.rej patching file dom/performance/PerformanceMainThread.h Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] Skipping patch. 2 out of 2 hunks ignored -- saving rejects to file dom/performance/PerformanceMainThread.h.rej patching file dom/performance/PerformanceMainThread.cpp Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] Skipping patch. 2 out of 2 hunks ignored -- saving rejects to file dom/performance/PerformanceMainThread.cpp.rej patching file dom/performance/PerformanceTiming.cpp Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] Skipping patch. 2 out of 2 hunks ignored -- saving rejects to file dom/performance/PerformanceTiming.cpp.rej patching file dom/performance/PerformanceWorker.h Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] Skipping patch. 1 out of 1 hunk ignored -- saving rejects to file dom/performance/PerformanceWorker.h.rej patching file dom/performance/PerformanceWorker.cpp Reversed (or previously applied) patch detected! Assume -R? [n] Apply anyway? [n] Skipping patch. 2 out of 2 hunks ignored -- saving rejects to file dom/performance/PerformanceWorker.cpp.rej ---[snip]---------- --> dom/performance/Performance.cpp.rej: --- dom/performance/Performance.cpp +++ dom/performance/Performance.cpp @@ -163,29 +163,17 @@ JS::Handle aGivenProto) { return Performance_Binding::Wrap(aCx, this, aGivenProto); } void Performance::GetEntries(nsTArray>& aRetval) { - // We return an empty list when 'privacy.resistFingerprinting' is on. - if (nsContentUtils::ShouldResistFingerprinting()) { - aRetval.Clear(); - return; - } - aRetval = mResourceEntries.Clone(); aRetval.AppendElements(mUserEntries); aRetval.Sort(PerformanceEntryComparator()); } void Performance::GetEntriesByType( const nsAString& aEntryType, nsTArray>& aRetval) { - // We return an empty list when 'privacy.resistFingerprinting' is on. - if (nsContentUtils::ShouldResistFingerprinting()) { - aRetval.Clear(); - return; - } - if (aEntryType.EqualsLiteral("resource")) { aRetval = mResourceEntries.Clone(); return; } @@ -204,15 +192,10 @@ void Performance::GetEntriesByName( const nsAString& aName, const Optional& aEntryType, nsTArray>& aRetval) { aRetval.Clear(); - // We return an empty list when 'privacy.resistFingerprinting' is on. - if (nsContentUtils::ShouldResistFingerprinting()) { - return; - } - RefPtr name = NS_Atomize(aName); RefPtr entryType = aEntryType.WasPassed() ? NS_Atomize(aEntryType.Value()) : nullptr; if (entryType) { @@ -365,21 +348,11 @@ PerformanceMark::Constructor(global, aName, aMarkOptions, aRv); if (aRv.Failed()) { return nullptr; } - // To avoid fingerprinting in User Timing L2, we didn't add marks to the - // buffer so the user could not get timing data (which can be used to - // fingerprint) from the API. This may no longer be necessary (since - // performance.now() has reduced precision to protect against fingerprinting - // and performance.mark's primary fingerprinting issue is probably this timing - // data) but we need to do a more thorough reanalysis before we remove the - // fingerprinting protection. For now, we preserve the User Timing L2 behavior - // while supporting User Timing L3. - if (!nsContentUtils::ShouldResistFingerprinting()) { - InsertUserEntry(performanceMark); - } + InsertUserEntry(performanceMark); if (profiler_thread_is_being_profiled_for_markers()) { Maybe innerWindowId; if (GetOwner()) { innerWindowId = Some(GetOwner()->WindowID()); @@ -595,23 +568,10 @@ if (!GetParentObject()) { aRv.ThrowInvalidStateError("Global object is unavailable"); return nullptr; } - // When resisting fingerprinting, we don't add marks to the buffer. Since - // measure relies on relationships between marks in the buffer, this method - // will throw if we look for user-entered marks so we return a dummy measure - // instead of continuing. We could instead return real values for performance - // timing attributes and dummy values for user-entered marks but this adds - // complexity that doesn't seem worth the effort because these fingerprinting - // protections may not longer be necessary (since performance.now() already - // has reduced precision). - if (nsContentUtils::ShouldResistFingerprinting()) { - return do_AddRef(new PerformanceMeasure(GetParentObject(), aName, 0, 0, - JS::NullHandleValue)); - } - // Maybe is more readable than using the union type directly. Maybe options; if (aStartOrMeasureOptions.IsPerformanceMeasureOptions()) { options.emplace(aStartOrMeasureOptions.GetAsPerformanceMeasureOptions()); } @@ -811,10 +811,6 @@ MOZ_ALWAYS_INLINE bool Performance::CanAddResourceTimingEntry() { void Performance::InsertResourceEntry(PerformanceEntry* aEntry) { MOZ_ASSERT(aEntry); - if (nsContentUtils::ShouldResistFingerprinting()) { - return; - } - /* * Let new entry be the input PerformanceEntry to be added. * --- dom/performance/Performance.cpp +++ dom/performance/Performance.cpp @@ -96,24 +96,13 @@ Performance::Performance(nsIGlobalObject* aGlobal) : DOMEventTargetHelper(aGlobal), mResourceTimingBufferSize(kDefaultResourceTimingBufferSize), mPendingNotificationObserversTask(false), mPendingResourceTimingBufferFullEvent(false), - mRTPCallerType( - RTPCallerType::Normal /* to be updated in CreateForFoo */) { - MOZ_ASSERT(!NS_IsMainThread()); -} - -Performance::Performance(nsPIDOMWindowInner* aWindow) - : DOMEventTargetHelper(aWindow), - mResourceTimingBufferSize(kDefaultResourceTimingBufferSize), - mPendingNotificationObserversTask(false), - mPendingResourceTimingBufferFullEvent(false), - mRTPCallerType( - RTPCallerType::Normal /* to be updated in CreateForFoo */) { - MOZ_ASSERT(NS_IsMainThread()); -} + mRTPCallerType(aGlobal->GetRTPCallerType()), + mCrossOriginIsolated(aGlobal->CrossOriginIsolated()), + mShouldResistFingerprinting(aGlobal->ShouldResistFingerprinting()) {} Performance::~Performance() = default; DOMHighResTimeStamp Performance::TimeStampToDOMHighResForRendering( TimeStamp aTimeStamp) const { ---[snip]---------- ---[snip]---------- --> dom/performance/PerformanceMainThread.cpp.rej: --- dom/performance/PerformanceMainThread.cpp +++ dom/performance/PerformanceMainThread.cpp @@ -409,12 +409,11 @@ } void PerformanceMainThread::CreateNavigationTimingEntry() { MOZ_ASSERT(!mDocEntry, "mDocEntry should be null."); - if (!StaticPrefs::dom_enable_performance_navigation_timing() || - StaticPrefs::privacy_resistFingerprinting()) { + if (!StaticPrefs::dom_enable_performance_navigation_timing()) { return; } nsAutoString name; GetURLSpecFromChannel(mChannel, name); @@ -461,16 +460,10 @@ return mEventCounts; } void PerformanceMainThread::GetEntries( nsTArray>& aRetval) { - // We return an empty list when 'privacy.resistFingerprinting' is on. - if (nsContentUtils::ShouldResistFingerprinting()) { - aRetval.Clear(); - return; - } - aRetval = mResourceEntries.Clone(); aRetval.AppendElements(mUserEntries); if (mDocEntry) { aRetval.AppendElement(mDocEntry); @@ -482,16 +475,10 @@ aRetval.Sort(PerformanceEntryComparator()); } void PerformanceMainThread::GetEntriesByType( const nsAString& aEntryType, nsTArray>& aRetval) { - // We return an empty list when 'privacy.resistFingerprinting' is on. - if (nsContentUtils::ShouldResistFingerprinting()) { - aRetval.Clear(); - return; - } - RefPtr type = NS_Atomize(aEntryType); if (type == nsGkAtoms::navigation) { aRetval.Clear(); if (mDocEntry) { @@ -524,16 +511,10 @@ } void PerformanceMainThread::GetEntriesByName( const nsAString& aName, const Optional& aEntryType, nsTArray>& aRetval) { - // We return an empty list when 'privacy.resistFingerprinting' is on. - if (nsContentUtils::ShouldResistFingerprinting()) { - aRetval.Clear(); - return; - } - Performance::GetEntriesByName(aName, aEntryType, aRetval); if (mFCPTiming && mFCPTiming->GetName()->Equals(aName) && (!aEntryType.WasPassed() || mFCPTiming->GetEntryType()->Equals(aEntryType.Value()))) { --- dom/performance/PerformanceMainThread.cpp +++ dom/performance/PerformanceMainThread.cpp @@ -89,16 +89,14 @@ NS_INTERFACE_MAP_END_INHERITING(Performance) PerformanceMainThread::PerformanceMainThread(nsPIDOMWindowInner* aWindow, nsDOMNavigationTiming* aDOMTiming, nsITimedChannel* aChannel) - : Performance(aWindow), + : Performance(aWindow->AsGlobal()), mDOMTiming(aDOMTiming), - mChannel(aChannel), - mCrossOriginIsolated(aWindow->AsGlobal()->CrossOriginIsolated()) { + mChannel(aChannel) { MOZ_ASSERT(aWindow, "Parent window object should be provided"); - mRTPCallerType = aWindow->AsGlobal()->GetRTPCallerType(); if (StaticPrefs::dom_enable_event_timing()) { mEventCounts = new class EventCounts(GetParentObject()); } CreateNavigationTimingEntry(); } @@ -449,14 +447,10 @@ UpdateNavigationTimingEntry(); QueueEntry(mDocEntry); } -bool PerformanceMainThread::CrossOriginIsolated() const { - return mCrossOriginIsolated; -} - EventCounts* PerformanceMainThread::EventCounts() { MOZ_ASSERT(StaticPrefs::dom_enable_event_timing()); return mEventCounts; } ---[snip]---------- ---[snip]---------- --> dom/performance/PerformanceNavigationTiming.cpp.rej: --- dom/performance/PerformanceNavigationTiming.cpp +++ dom/performance/PerformanceNavigationTiming.cpp @@ -150,8 +150,7 @@ nsIHttpChannel* aHttpChannel, nsITimedChannel* aChannel) { mTimingData->SetPropertiesFromHttpChannel(aHttpChannel, aChannel); } bool PerformanceNavigationTiming::Enabled(JSContext* aCx, JSObject* aGlobal) { - return (StaticPrefs::dom_enable_performance_navigation_timing() && - !StaticPrefs::privacy_resistFingerprinting()); + return StaticPrefs::dom_enable_performance_navigation_timing(); } ---[snip]---------- ---[snip]---------- --> dom/performance/PerformanceTiming.cpp.rej: --- dom/performance/PerformanceTiming.cpp +++ dom/performance/PerformanceTiming.cpp @@ -110,12 +110,11 @@ mTimingAllowed(true), mInitialized(false) { mInitialized = !!aChannel; mZeroTime = aZeroTime; - if (!StaticPrefs::dom_enable_performance() || - nsContentUtils::ShouldResistFingerprinting()) { + if (!StaticPrefs::dom_enable_performance()) { mZeroTime = 0; } nsCOMPtr uri; if (aHttpChannel) { @@ -336,24 +335,22 @@ // header with the domain of the page that started the load. return aChannel->TimingAllowCheck(principal); } uint8_t PerformanceTimingData::GetRedirectCount() const { - if (!StaticPrefs::dom_enable_performance() || !IsInitialized() || - nsContentUtils::ShouldResistFingerprinting()) { + if (!StaticPrefs::dom_enable_performance() || !IsInitialized()) { return 0; } if (!mAllRedirectsSameOrigin) { return 0; } return mRedirectCount; } bool PerformanceTimingData::ShouldReportCrossOriginRedirect( bool aEnsureSameOriginAndIgnoreTAO) const { - if (!StaticPrefs::dom_enable_performance() || !IsInitialized() || - nsContentUtils::ShouldResistFingerprinting()) { + if (!StaticPrefs::dom_enable_performance() || !IsInitialized()) { return false; } if (!mTimingAllowed || mRedirectCount == 0) { return false; --- dom/performance/PerformanceTiming.cpp +++ dom/performance/PerformanceTiming.cpp @@ -466,11 +466,11 @@ if (!StaticPrefs::dom_enable_performance() || !IsInitialized()) { return mZeroTime; } // Bug 1637985 - DomainLookup information may be useful for fingerprinting. - if (nsContentUtils::ShouldResistFingerprinting()) { + if (aPerformance->ShouldResistFingerprinting()) { return FetchStartHighRes(aPerformance); } return TimeStampToReducedDOMHighResOrFetchStart(aPerformance, mDomainLookupStart); } @@ -486,11 +486,11 @@ if (!StaticPrefs::dom_enable_performance() || !IsInitialized()) { return mZeroTime; } // Bug 1637985 - DomainLookup information may be useful for fingerprinting. - if (nsContentUtils::ShouldResistFingerprinting()) { + if (aPerformance->ShouldResistFingerprinting()) { return FetchStartHighRes(aPerformance); } // Bug 1155008 - nsHttpTransaction is racy. Return DomainLookupStart when null if (mDomainLookupEnd.IsNull()) { return DomainLookupStartHighRes(aPerformance); ---[snip]---------- ---[snip]---------- --> dom/performance/Performance.h.rej: --- dom/performance/Performance.h +++ dom/performance/Performance.h @@ -120,10 +120,15 @@ virtual TimeStamp CreationTimeStamp() const = 0; RTPCallerType GetRTPCallerType() const { return mRTPCallerType; } + bool CrossOriginIsolated() const { return mCrossOriginIsolated; } + bool ShouldResistFingerprinting() const { + return mShouldResistFingerprinting; + } + DOMHighResTimeStamp TimeStampToDOMHighResForRendering(TimeStamp) const; virtual uint64_t GetRandomTimelineSeed() = 0; void MemoryPressure(); @@ -145,12 +150,10 @@ virtual void QueueNavigationTimingEntry() = 0; virtual void UpdateNavigationTimingEntry() = 0; - virtual bool CrossOriginIsolated() const = 0; - virtual void DispatchPendingEventTimingEntries() = 0; void QueueNotificationObserversTask(); bool IsPerformanceTimingAttribute(const nsAString& aName) const; @@ -203,11 +206,13 @@ bool mPendingResourceTimingBufferFullEvent; RefPtr mPerformanceService; - enum RTPCallerType mRTPCallerType; + const RTPCallerType mRTPCallerType; + const bool mCrossOriginIsolated; + const bool mShouldResistFingerprinting; private: MOZ_ALWAYS_INLINE bool CanAddResourceTimingEntry(); void BufferEvent(); ---[snip]---------- ---[snip]---------- --> dom/performance/Performance.cpp.rej: --- dom/performance/Performance.cpp +++ dom/performance/Performance.cpp @@ -163,29 +163,17 @@ JS::Handle aGivenProto) { return Performance_Binding::Wrap(aCx, this, aGivenProto); } void Performance::GetEntries(nsTArray>& aRetval) { - // We return an empty list when 'privacy.resistFingerprinting' is on. - if (nsContentUtils::ShouldResistFingerprinting()) { - aRetval.Clear(); - return; - } - aRetval = mResourceEntries.Clone(); aRetval.AppendElements(mUserEntries); aRetval.Sort(PerformanceEntryComparator()); } void Performance::GetEntriesByType( const nsAString& aEntryType, nsTArray>& aRetval) { - // We return an empty list when 'privacy.resistFingerprinting' is on. - if (nsContentUtils::ShouldResistFingerprinting()) { - aRetval.Clear(); - return; - } - if (aEntryType.EqualsLiteral("resource")) { aRetval = mResourceEntries.Clone(); return; } @@ -204,15 +192,10 @@ void Performance::GetEntriesByName( const nsAString& aName, const Optional& aEntryType, nsTArray>& aRetval) { aRetval.Clear(); - // We return an empty list when 'privacy.resistFingerprinting' is on. - if (nsContentUtils::ShouldResistFingerprinting()) { - return; - } - RefPtr name = NS_Atomize(aName); RefPtr entryType = aEntryType.WasPassed() ? NS_Atomize(aEntryType.Value()) : nullptr; if (entryType) { @@ -365,21 +348,11 @@ PerformanceMark::Constructor(global, aName, aMarkOptions, aRv); if (aRv.Failed()) { return nullptr; } - // To avoid fingerprinting in User Timing L2, we didn't add marks to the - // buffer so the user could not get timing data (which can be used to - // fingerprint) from the API. This may no longer be necessary (since - // performance.now() has reduced precision to protect against fingerprinting - // and performance.mark's primary fingerprinting issue is probably this timing - // data) but we need to do a more thorough reanalysis before we remove the - // fingerprinting protection. For now, we preserve the User Timing L2 behavior - // while supporting User Timing L3. - if (!nsContentUtils::ShouldResistFingerprinting()) { - InsertUserEntry(performanceMark); - } + InsertUserEntry(performanceMark); if (profiler_thread_is_being_profiled_for_markers()) { Maybe innerWindowId; if (GetOwner()) { innerWindowId = Some(GetOwner()->WindowID()); @@ -595,23 +568,10 @@ if (!GetParentObject()) { aRv.ThrowInvalidStateError("Global object is unavailable"); return nullptr; } - // When resisting fingerprinting, we don't add marks to the buffer. Since - // measure relies on relationships between marks in the buffer, this method - // will throw if we look for user-entered marks so we return a dummy measure - // instead of continuing. We could instead return real values for performance - // timing attributes and dummy values for user-entered marks but this adds - // complexity that doesn't seem worth the effort because these fingerprinting - // protections may not longer be necessary (since performance.now() already - // has reduced precision). - if (nsContentUtils::ShouldResistFingerprinting()) { - return do_AddRef(new PerformanceMeasure(GetParentObject(), aName, 0, 0, - JS::NullHandleValue)); - } - // Maybe is more readable than using the union type directly. Maybe options; if (aStartOrMeasureOptions.IsPerformanceMeasureOptions()) { options.emplace(aStartOrMeasureOptions.GetAsPerformanceMeasureOptions()); } @@ -811,10 +811,6 @@ MOZ_ALWAYS_INLINE bool Performance::CanAddResourceTimingEntry() { void Performance::InsertResourceEntry(PerformanceEntry* aEntry) { MOZ_ASSERT(aEntry); - if (nsContentUtils::ShouldResistFingerprinting()) { - return; - } - /* * Let new entry be the input PerformanceEntry to be added. * --- dom/performance/Performance.cpp +++ dom/performance/Performance.cpp @@ -96,24 +96,13 @@ Performance::Performance(nsIGlobalObject* aGlobal) : DOMEventTargetHelper(aGlobal), mResourceTimingBufferSize(kDefaultResourceTimingBufferSize), mPendingNotificationObserversTask(false), mPendingResourceTimingBufferFullEvent(false), - mRTPCallerType( - RTPCallerType::Normal /* to be updated in CreateForFoo */) { - MOZ_ASSERT(!NS_IsMainThread()); -} - -Performance::Performance(nsPIDOMWindowInner* aWindow) - : DOMEventTargetHelper(aWindow), - mResourceTimingBufferSize(kDefaultResourceTimingBufferSize), - mPendingNotificationObserversTask(false), - mPendingResourceTimingBufferFullEvent(false), - mRTPCallerType( - RTPCallerType::Normal /* to be updated in CreateForFoo */) { - MOZ_ASSERT(NS_IsMainThread()); -} + mRTPCallerType(aGlobal->GetRTPCallerType()), + mCrossOriginIsolated(aGlobal->CrossOriginIsolated()), + mShouldResistFingerprinting(aGlobal->ShouldResistFingerprinting()) {} Performance::~Performance() = default; DOMHighResTimeStamp Performance::TimeStampToDOMHighResForRendering( TimeStamp aTimeStamp) const { ---[snip]---------- ---[snip]---------- --> dom/performance/PerformanceMainThread.h.rej: --- dom/performance/PerformanceMainThread.h +++ dom/performance/PerformanceMainThread.h @@ -86,12 +86,10 @@ nsTArray>& aRetval) override; void UpdateNavigationTimingEntry() override; void QueueNavigationTimingEntry() override; - bool CrossOriginIsolated() const override; - size_t SizeOfEventEntries(mozilla::MallocSizeOf aMallocSizeOf) const override; static constexpr uint32_t kDefaultEventTimingBufferSize = 150; static constexpr uint32_t kDefaultEventTimingDurationThreshold = 104; static constexpr double kDefaultEventTimingMinDuration = 16.0; @@ -118,12 +116,10 @@ RefPtr mTiming; RefPtr mNavigation; RefPtr mFCPTiming; JS::Heap mMozMemory; - const bool mCrossOriginIsolated; - nsTArray> mEventTimingEntries; AutoCleanLinkedList> mPendingEventTimingEntries; bool mHasDispatchedInputEvent = false; ---[snip]---------- ---[snip]---------- --> dom/performance/PerformanceMainThread.cpp.rej: --- dom/performance/PerformanceMainThread.cpp +++ dom/performance/PerformanceMainThread.cpp @@ -409,12 +409,11 @@ } void PerformanceMainThread::CreateNavigationTimingEntry() { MOZ_ASSERT(!mDocEntry, "mDocEntry should be null."); - if (!StaticPrefs::dom_enable_performance_navigation_timing() || - StaticPrefs::privacy_resistFingerprinting()) { + if (!StaticPrefs::dom_enable_performance_navigation_timing()) { return; } nsAutoString name; GetURLSpecFromChannel(mChannel, name); @@ -461,16 +460,10 @@ return mEventCounts; } void PerformanceMainThread::GetEntries( nsTArray>& aRetval) { - // We return an empty list when 'privacy.resistFingerprinting' is on. - if (nsContentUtils::ShouldResistFingerprinting()) { - aRetval.Clear(); - return; - } - aRetval = mResourceEntries.Clone(); aRetval.AppendElements(mUserEntries); if (mDocEntry) { aRetval.AppendElement(mDocEntry); @@ -482,16 +475,10 @@ aRetval.Sort(PerformanceEntryComparator()); } void PerformanceMainThread::GetEntriesByType( const nsAString& aEntryType, nsTArray>& aRetval) { - // We return an empty list when 'privacy.resistFingerprinting' is on. - if (nsContentUtils::ShouldResistFingerprinting()) { - aRetval.Clear(); - return; - } - RefPtr type = NS_Atomize(aEntryType); if (type == nsGkAtoms::navigation) { aRetval.Clear(); if (mDocEntry) { @@ -524,16 +511,10 @@ } void PerformanceMainThread::GetEntriesByName( const nsAString& aName, const Optional& aEntryType, nsTArray>& aRetval) { - // We return an empty list when 'privacy.resistFingerprinting' is on. - if (nsContentUtils::ShouldResistFingerprinting()) { - aRetval.Clear(); - return; - } - Performance::GetEntriesByName(aName, aEntryType, aRetval); if (mFCPTiming && mFCPTiming->GetName()->Equals(aName) && (!aEntryType.WasPassed() || mFCPTiming->GetEntryType()->Equals(aEntryType.Value()))) { --- dom/performance/PerformanceMainThread.cpp +++ dom/performance/PerformanceMainThread.cpp @@ -89,16 +89,14 @@ NS_INTERFACE_MAP_END_INHERITING(Performance) PerformanceMainThread::PerformanceMainThread(nsPIDOMWindowInner* aWindow, nsDOMNavigationTiming* aDOMTiming, nsITimedChannel* aChannel) - : Performance(aWindow), + : Performance(aWindow->AsGlobal()), mDOMTiming(aDOMTiming), - mChannel(aChannel), - mCrossOriginIsolated(aWindow->AsGlobal()->CrossOriginIsolated()) { + mChannel(aChannel) { MOZ_ASSERT(aWindow, "Parent window object should be provided"); - mRTPCallerType = aWindow->AsGlobal()->GetRTPCallerType(); if (StaticPrefs::dom_enable_event_timing()) { mEventCounts = new class EventCounts(GetParentObject()); } CreateNavigationTimingEntry(); } @@ -449,14 +447,10 @@ UpdateNavigationTimingEntry(); QueueEntry(mDocEntry); } -bool PerformanceMainThread::CrossOriginIsolated() const { - return mCrossOriginIsolated; -} - EventCounts* PerformanceMainThread::EventCounts() { MOZ_ASSERT(StaticPrefs::dom_enable_event_timing()); return mEventCounts; } ---[snip]---------- ---[snip]---------- --> dom/performance/PerformanceTiming.cpp.rej: --- dom/performance/PerformanceTiming.cpp +++ dom/performance/PerformanceTiming.cpp @@ -110,12 +110,11 @@ mTimingAllowed(true), mInitialized(false) { mInitialized = !!aChannel; mZeroTime = aZeroTime; - if (!StaticPrefs::dom_enable_performance() || - nsContentUtils::ShouldResistFingerprinting()) { + if (!StaticPrefs::dom_enable_performance()) { mZeroTime = 0; } nsCOMPtr uri; if (aHttpChannel) { @@ -336,24 +335,22 @@ // header with the domain of the page that started the load. return aChannel->TimingAllowCheck(principal); } uint8_t PerformanceTimingData::GetRedirectCount() const { - if (!StaticPrefs::dom_enable_performance() || !IsInitialized() || - nsContentUtils::ShouldResistFingerprinting()) { + if (!StaticPrefs::dom_enable_performance() || !IsInitialized()) { return 0; } if (!mAllRedirectsSameOrigin) { return 0; } return mRedirectCount; } bool PerformanceTimingData::ShouldReportCrossOriginRedirect( bool aEnsureSameOriginAndIgnoreTAO) const { - if (!StaticPrefs::dom_enable_performance() || !IsInitialized() || - nsContentUtils::ShouldResistFingerprinting()) { + if (!StaticPrefs::dom_enable_performance() || !IsInitialized()) { return false; } if (!mTimingAllowed || mRedirectCount == 0) { return false; --- dom/performance/PerformanceTiming.cpp +++ dom/performance/PerformanceTiming.cpp @@ -466,11 +466,11 @@ if (!StaticPrefs::dom_enable_performance() || !IsInitialized()) { return mZeroTime; } // Bug 1637985 - DomainLookup information may be useful for fingerprinting. - if (nsContentUtils::ShouldResistFingerprinting()) { + if (aPerformance->ShouldResistFingerprinting()) { return FetchStartHighRes(aPerformance); } return TimeStampToReducedDOMHighResOrFetchStart(aPerformance, mDomainLookupStart); } @@ -486,11 +486,11 @@ if (!StaticPrefs::dom_enable_performance() || !IsInitialized()) { return mZeroTime; } // Bug 1637985 - DomainLookup information may be useful for fingerprinting. - if (nsContentUtils::ShouldResistFingerprinting()) { + if (aPerformance->ShouldResistFingerprinting()) { return FetchStartHighRes(aPerformance); } // Bug 1155008 - nsHttpTransaction is racy. Return DomainLookupStart when null if (mDomainLookupEnd.IsNull()) { return DomainLookupStartHighRes(aPerformance); ---[snip]---------- ---[snip]---------- --> dom/performance/PerformanceWorker.h.rej: --- dom/performance/PerformanceWorker.h +++ dom/performance/PerformanceWorker.h @@ -78,12 +78,10 @@ class EventCounts* EventCounts() override { MOZ_CRASH("This should not be called on workers"); } - bool CrossOriginIsolated() const override; - void NoteShuttingDown(); protected: ~PerformanceWorker(); ---[snip]---------- ---[snip]---------- --> dom/performance/PerformanceWorker.cpp.rej: --- dom/performance/PerformanceWorker.cpp +++ dom/performance/PerformanceWorker.cpp @@ -12,11 +12,10 @@ PerformanceWorker::PerformanceWorker(WorkerPrivate* aWorkerPrivate) : Performance(aWorkerPrivate->GlobalScope()), mWorkerPrivate(aWorkerPrivate) { mWorkerPrivate->AssertIsOnWorkerThread(); - mRTPCallerType = aWorkerPrivate->GlobalScope()->GetRTPCallerType(); } PerformanceWorker::~PerformanceWorker() { if (mWorkerPrivate) { mWorkerPrivate->AssertIsOnWorkerThread(); @@ -58,16 +57,8 @@ return mWorkerPrivate->GetRandomTimelineSeed(); } return 0; } -bool PerformanceWorker::CrossOriginIsolated() const { - MOZ_DIAGNOSTIC_ASSERT(mWorkerPrivate); - if (mWorkerPrivate) { - return mWorkerPrivate->CrossOriginIsolated(); - } - return false; -} - void PerformanceWorker::NoteShuttingDown() { mWorkerPrivate = nullptr; } } // namespace mozilla::dom ---[snip]---------- ==> patches/sed-patches/allow-searchengines-non-esr.patch: patching file browser/components/enterprisepolicies/schemas/policies-schema.json Hunk #1 succeeded at 1178 (offset 104 lines). ==> patches/sed-patches/disable-pocket.patch: patching file browser/base/content/browser.js Hunk #1 succeeded at 5479 with fuzz 1 (offset 1 line). patching file browser/components/BrowserGlue.sys.mjs Hunk #1 succeeded at 1300 (offset 26 lines). patching file browser/components/moz.build Hunk #1 succeeded at 45 (offset 1 line). ==> patches/sed-patches/stop-undesired-requests.patch: patching file browser/components/newtab/data/content/activity-stream.bundle.js Hunk #1 succeeded at 1748 (offset 172 lines). patching file services/settings/Utils.jsm Hunk #1 succeeded at 59 (offset -3 lines). patching file toolkit/components/search/SearchUtils.sys.mjs Hunk #1 succeeded at 150 (offset -7 lines). ==> patches/ui-patches/firefox-view.patch: patching file browser/base/content/navigator-toolbox.inc.xhtml Hunk #2 succeeded at 697 (offset 3 lines). patching file browser/components/customizableui/CustomizableUI.jsm Hunk #1 succeeded at 289 (offset -9 lines). Hunk #2 FAILED at 626. 1 out of 2 hunks FAILED -- saving rejects to file browser/components/customizableui/CustomizableUI.jsm.rej patching file browser/components/firefoxview/firefoxview.html Hunk #1 succeeded at 34 (offset -1 lines). patching file browser/components/firefoxview/firefoxview.mjs Hunk #1 succeeded at 41 with fuzz 1 (offset 13 lines). patching file browser/components/newtab/lib/OnboardingMessageProvider.jsm Hunk #1 succeeded at 92 (offset 11 lines). ---[snip]---------- --> browser/components/customizableui/CustomizableUI.jsm.rej: --- browser/components/customizableui/CustomizableUI.jsm +++ browser/components/customizableui/CustomizableUI.jsm @@ -626,18 +625,6 @@ var CustomizableUIInternal = { navbarPlacements.splice(newPosition, 0, "save-to-pocket-button"); } } - - // Add firefox-view if not present - if (currentVersion < 18) { - let tabstripPlacements = - gSavedState.placements[CustomizableUI.AREA_TABSTRIP]; - if ( - tabstripPlacements && - !tabstripPlacements.includes("firefox-view-button") - ) { - tabstripPlacements.unshift("firefox-view-button"); - } - } }, _updateForNewProtonVersion() { ---[snip]---------- ==> patches/ui-patches/handlers.patch: patching file uriloader/exthandler/HandlerList.sys.mjs Hunk #1 succeeded at 9 (offset -4 lines). ==> patches/ui-patches/hide-default-browser.patch: patching file browser/components/preferences/main.inc.xhtml ==> patches/ui-patches/lw-logo-devtools.patch: patching file devtools/client/aboutdebugging/src/actions/runtimes.js patching file devtools/client/jar.mn Hunk #1 succeeded at 368 (offset -6 lines). patching file devtools/client/themes/images/aboutdebugging-firefox-librewolf.svg patching file devtools/client/themes/images/aboutdebugging-firefox-logo.svg ==> patches/ui-patches/pref-naming.patch: patching file browser/locales/en-US/browser/preferences/preferences.ftl Hunk #2 FAILED at 471. Hunk #3 succeeded at 641 (offset 5 lines). Hunk #4 succeeded at 670 (offset 5 lines). Hunk #5 succeeded at 716 with fuzz 2 (offset 5 lines). 1 out of 5 hunks FAILED -- saving rejects to file browser/locales/en-US/browser/preferences/preferences.ftl.rej ---[snip]---------- --> browser/locales/en-US/browser/preferences/preferences.ftl.rej: --- browser/locales/en-US/browser/preferences/preferences.ftl +++ browser/locales/en-US/browser/preferences/preferences.ftl @@ -471,13 +473,13 @@ play-drm-content = .label = Play DRM-controlled content .accesskey = P -play-drm-content-learn-more = Learn more +play-drm-content-learn-more = Why we disable it update-application-title = { -brand-short-name } Updates update-application-description = Keep { -brand-short-name } up to date for the best performance, stability, and security. -update-application-version = Version { $version } What’s new +update-application-version = Version { $version } Visit the repositories update-history = .label = Show Update History… ---[snip]---------- ==> patches/ui-patches/privacy-preferences.patch: patching file browser/components/preferences/privacy.inc.xhtml Hunk #1 succeeded at 53 (offset -1 lines). Hunk #2 succeeded at 561 (offset 26 lines). Hunk #3 succeeded at 608 (offset 23 lines). Hunk #4 FAILED at 1016. 1 out of 4 hunks FAILED -- saving rejects to file browser/components/preferences/privacy.inc.xhtml.rej patching file browser/locales/en-US/browser/preferences/preferences.ftl Hunk #1 succeeded at 1192 (offset 85 lines). ---[snip]---------- --> browser/components/preferences/privacy.inc.xhtml.rej: --- browser/components/preferences/privacy.inc.xhtml +++ browser/components/preferences/privacy.inc.xhtml @@ -1016,15 +1017,15 @@