tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

commit af8ccf1f0232c22783179c5f19cee665420c6526
parent 8cc8a5dc560cb9a16ef6cc6b309289fee52c4f58
Author: Ryan VanderMeulen <rvandermeulen@mozilla.com>
Date:   Wed, 12 Nov 2025 14:08:20 +0000

Bug 1998850 - Fix StaticFieldLeak by making DefaultBandwidthMeter non-static. r=geckoview-reviewers,ohall

warning: Do not place Android context classes in static fields (static reference to DefaultBandwidthMeter
which has field context pointing to Context); this is a memory leak (StaticFieldLeak)

Differential Revision: https://phabricator.services.mozilla.com/D271720

Diffstat:
Mmobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoHlsPlayer.java | 9+++++----
1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoHlsPlayer.java b/mobile/android/geckoview/src/main/java/org/mozilla/gecko/media/GeckoHlsPlayer.java @@ -47,8 +47,6 @@ import org.mozilla.thirdparty.com.google.android.exoplayer2.util.Util; @ReflectionTarget public class GeckoHlsPlayer implements BaseHlsPlayer, ExoPlayer.EventListener { private static final String LOGTAG = "GeckoHlsPlayer"; - private static final DefaultBandwidthMeter BANDWIDTH_METER = - new DefaultBandwidthMeter.Builder(null).build(); private static final int MAX_TIMELINE_ITEM_LINES = 3; private static final boolean DEBUG = !BuildConfig.MOZILLA_OFFICIAL; @@ -688,6 +686,9 @@ public class GeckoHlsPlayer implements BaseHlsPlayer, ExoPlayer.EventListener { return enabled ? "[X]" : "[ ]"; } + private final DefaultBandwidthMeter mBandwidthMeter = + new DefaultBandwidthMeter.Builder(null).build(); + // Called on GeckoHlsPlayerThread private void createExoPlayer(final String url) { assertTrue(isPlayerThread()); @@ -699,7 +700,7 @@ public class GeckoHlsPlayer implements BaseHlsPlayer, ExoPlayer.EventListener { // Prepare trackSelector final TrackSelection.Factory videoTrackSelectionFactory = - new AdaptiveTrackSelection.Factory(BANDWIDTH_METER); + new AdaptiveTrackSelection.Factory(mBandwidthMeter); mTrackSelector = new DefaultTrackSelector(videoTrackSelectionFactory); // Prepare customized renderer @@ -727,7 +728,7 @@ public class GeckoHlsPlayer implements BaseHlsPlayer, ExoPlayer.EventListener { mPlayer.addListener(this); final Uri uri = Uri.parse(url); - mMediaSource = buildDataSourceFactory(ctx, BANDWIDTH_METER).createMediaSource(uri); + mMediaSource = buildDataSourceFactory(ctx, mBandwidthMeter).createMediaSource(uri); mSourceEventListener = new SourceEventListener(); mMediaSource.addEventListener(mMainHandler, mSourceEventListener); if (DEBUG) {