tor-browser

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

commit d4a1cd08e72f182710ea1249f38b28aefadf757a
parent dc08b0d9873b7cbc6e64e3c04e098e1fc4aa503b
Author: mcarare <48995920+mcarare@users.noreply.github.com>
Date:   Tue,  7 Oct 2025 06:44:02 +0000

Bug 1992818 - Simplify VisibilityLifeCycleCallback by using DefaultActivityLifecycleCallbacks. r=android-reviewers,avirvara

This patch refactors `VisibilityLifeCycleCallback` to extend the `DefaultActivityLifecycleCallbacks` interface. This change simplifies the code by removing the need for empty overrides of unused lifecycle methods.

The `DefaultActivityLifecycleCallbacks` interface is also updated to implement `ComponentCallbacks2`, providing default empty implementations for `onTrimMemory`, `onConfigurationChanged`, and `onLowMemory`.

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

Diffstat:
Mmobile/android/focus-android/app/src/main/java/org/mozilla/focus/session/VisibilityLifeCycleCallback.kt | 15++-------------
Mmobile/android/focus-android/app/src/main/java/org/mozilla/focus/telemetry/startuptelemetry/DefaultActivityLifecycleCallbacks.kt | 17++++++++++++-----
2 files changed, 14 insertions(+), 18 deletions(-)

diff --git a/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/session/VisibilityLifeCycleCallback.kt b/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/session/VisibilityLifeCycleCallback.kt @@ -6,21 +6,19 @@ package org.mozilla.focus.session import android.app.Activity import android.app.ActivityManager -import android.app.Application.ActivityLifecycleCallbacks import android.content.ComponentCallbacks2 import android.content.Context -import android.content.res.Configuration import android.os.Bundle import org.mozilla.focus.FocusApplication import org.mozilla.focus.appreview.AppReviewUtils +import org.mozilla.focus.telemetry.startuptelemetry.DefaultActivityLifecycleCallbacks /** * This ActivityLifecycleCallbacks implementations tracks if there is at least one activity in the * STARTED state (meaning some part of our application is visible). * Based on this information the current task can be removed if the app is not visible. */ -@Suppress("EmptyFunctionBlock") -class VisibilityLifeCycleCallback(private val context: Context) : ActivityLifecycleCallbacks, ComponentCallbacks2 { +class VisibilityLifeCycleCallback(private val context: Context) : DefaultActivityLifecycleCallbacks { /** * Activities are not stopped/started in an ordered way. So we are using */ @@ -43,27 +41,18 @@ class VisibilityLifeCycleCallback(private val context: Context) : ActivityLifecy activitiesInStartedState-- } - override fun onActivityResumed(activity: Activity) {} - override fun onActivityPaused(activity: Activity) {} override fun onActivityCreated(activity: Activity, bundle: Bundle?) { if (appInForeground) return appInForeground = true AppReviewUtils.addAppOpenings(context) } - override fun onActivitySaveInstanceState(activity: Activity, bundle: Bundle) {} - override fun onActivityDestroyed(activity: Activity) {} override fun onTrimMemory(level: Int) { if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) { appInForeground = false } } - override fun onConfigurationChanged(newConfig: Configuration) {} - - @Suppress("OVERRIDE_DEPRECATION") - override fun onLowMemory() {} - companion object { /** * If all activities of this app are in the background then finish and remove all tasks. After diff --git a/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/telemetry/startuptelemetry/DefaultActivityLifecycleCallbacks.kt b/mobile/android/focus-android/app/src/main/java/org/mozilla/focus/telemetry/startuptelemetry/DefaultActivityLifecycleCallbacks.kt @@ -6,15 +6,17 @@ package org.mozilla.focus.telemetry.startuptelemetry import android.app.Activity import android.app.Application +import android.content.ComponentCallbacks2 +import android.content.res.Configuration import android.os.Bundle /** - * An inheritance of [Application.ActivityLifecycleCallbacks] where each method has a default - * implementation that does nothing. This allows classes that extend this interface to have - * more concise definitions if they don't implement some methods; this is in the spirit of - * other `Default*` classes, such as [androidx.lifecycle.DefaultLifecycleObserver]. + * An inheritance of [Application.ActivityLifecycleCallbacks] and [ComponentCallbacks2] where each + * method has a default implementation that does nothing. This allows classes that extend this + * interface to have more concise definitions if they don't implement some methods; this is in the + * spirit of other `Default*` classes, such as [androidx.lifecycle.DefaultLifecycleObserver]. */ -interface DefaultActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks { +interface DefaultActivityLifecycleCallbacks : Application.ActivityLifecycleCallbacks, ComponentCallbacks2 { override fun onActivityCreated(activity: Activity, bundle: Bundle?) {} override fun onActivityStarted(activity: Activity) {} override fun onActivityResumed(activity: Activity) {} @@ -22,4 +24,9 @@ interface DefaultActivityLifecycleCallbacks : Application.ActivityLifecycleCallb override fun onActivityStopped(activity: Activity) {} override fun onActivitySaveInstanceState(activity: Activity, bundle: Bundle) {} override fun onActivityDestroyed(activity: Activity) {} + override fun onTrimMemory(level: Int) {} + override fun onConfigurationChanged(newConfig: Configuration) {} + + @Deprecated("Deprecated in Java") + override fun onLowMemory() {} }