Loading packages/SystemUI/aconfig/systemui.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,13 @@ flag { bug: "278054201" } flag { name: "unfold_animation_background_progress" namespace: "systemui" description: "Moves unfold animation progress calculation to a background thread" bug: "277879146" } flag { name: "qs_new_pipeline" namespace: "systemui" Loading packages/SystemUI/shared/src/com/android/systemui/unfold/system/ActivityManagerActivityTypeProvider.kt +1 −2 Original line number Diff line number Diff line Loading @@ -32,8 +32,7 @@ constructor(private val activityManager: ActivityManager) : CurrentActivityTypeP override val isHomeActivity: Boolean? get() = _isHomeActivity private var _isHomeActivity: Boolean? = null @Volatile private var _isHomeActivity: Boolean? = null override fun init() { _isHomeActivity = activityManager.isOnHomeActivity() Loading packages/SystemUI/shared/src/com/android/systemui/unfold/system/DeviceStateManagerFoldProvider.kt +10 −13 Original line number Diff line number Diff line Loading @@ -18,18 +18,19 @@ import android.content.Context import android.hardware.devicestate.DeviceStateManager import com.android.systemui.unfold.updates.FoldProvider import com.android.systemui.unfold.updates.FoldProvider.FoldCallback import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.Executor import javax.inject.Inject import javax.inject.Singleton @Singleton class DeviceStateManagerFoldProvider @Inject constructor( private val deviceStateManager: DeviceStateManager, private val context: Context ) : FoldProvider { class DeviceStateManagerFoldProvider @Inject constructor(private val deviceStateManager: DeviceStateManager, private val context: Context) : FoldProvider { private val callbacks: MutableMap<FoldCallback, DeviceStateManager.DeviceStateCallback> = hashMapOf() private val callbacks = ConcurrentHashMap<FoldCallback, DeviceStateManager.DeviceStateCallback>() override fun registerCallback(callback: FoldCallback, executor: Executor) { val listener = FoldStateListener(context, callback) Loading @@ -39,13 +40,9 @@ class DeviceStateManagerFoldProvider @Inject constructor( override fun unregisterCallback(callback: FoldCallback) { val listener = callbacks.remove(callback) listener?.let { deviceStateManager.unregisterCallback(it) } listener?.let { deviceStateManager.unregisterCallback(it) } } private inner class FoldStateListener( context: Context, listener: FoldCallback ) : DeviceStateManager.FoldStateListener(context, { listener.onFoldUpdated(it) }) private inner class FoldStateListener(context: Context, listener: FoldCallback) : DeviceStateManager.FoldStateListener(context, { listener.onFoldUpdated(it) }) } packages/SystemUI/shared/src/com/android/systemui/unfold/system/SystemUnfoldSharedModule.kt +29 −6 Original line number Diff line number Diff line Loading @@ -15,24 +15,29 @@ package com.android.systemui.unfold.system import android.os.Handler import android.os.HandlerThread import android.os.Looper import android.os.Process import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dagger.qualifiers.UiBackground import com.android.systemui.unfold.config.ResourceUnfoldTransitionConfig import com.android.systemui.unfold.config.UnfoldTransitionConfig import com.android.systemui.unfold.dagger.UnfoldSingleThreadBg import com.android.systemui.unfold.dagger.UnfoldBg import com.android.systemui.unfold.dagger.UnfoldMain import com.android.systemui.unfold.dagger.UnfoldSingleThreadBg import com.android.systemui.unfold.updates.FoldProvider import com.android.systemui.unfold.util.CurrentActivityTypeProvider import dagger.Binds import dagger.Module import dagger.Provides import java.util.concurrent.Executor import javax.inject.Singleton /** * Dagger module with system-only dependencies for the unfold animation. * The code that is used to calculate unfold transition progress * depends on some hidden APIs that are not available in normal * apps. In order to re-use this code and use alternative implementations * of these classes in other apps and hidden APIs here. * Dagger module with system-only dependencies for the unfold animation. The code that is used to * calculate unfold transition progress depends on some hidden APIs that are not available in normal * apps. In order to re-use this code and use alternative implementations of these classes in other * apps and hidden APIs here. */ @Module abstract class SystemUnfoldSharedModule { Loading Loading @@ -61,4 +66,22 @@ abstract class SystemUnfoldSharedModule { @Binds @UnfoldSingleThreadBg abstract fun backgroundExecutor(@UiBackground executor: Executor): Executor companion object { @Provides @UnfoldBg @Singleton fun unfoldBgProgressHandler(@UnfoldBg looper: Looper): Handler { return Handler(looper) } @Provides @UnfoldBg @Singleton fun provideBgLooper(): Looper { return HandlerThread("UnfoldBg", Process.THREAD_PRIORITY_FOREGROUND) .apply { start() } .looper } } } packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java +19 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.dagger; import com.android.systemui.BootCompleteCacheImpl; import com.android.systemui.CoreStartable; import com.android.systemui.Dependency; import com.android.systemui.Flags; import com.android.systemui.InitController; import com.android.systemui.SystemUIAppComponentFactoryBase; import com.android.systemui.dagger.qualifiers.PerUser; Loading @@ -35,6 +36,7 @@ import com.android.systemui.unfold.FoldStateLogger; import com.android.systemui.unfold.FoldStateLoggingProvider; import com.android.systemui.unfold.SysUIUnfoldComponent; import com.android.systemui.unfold.UnfoldTransitionProgressProvider; import com.android.systemui.unfold.dagger.UnfoldBg; import com.android.systemui.unfold.progress.UnfoldTransitionProgressForwarder; import com.android.wm.shell.back.BackAnimation; import com.android.wm.shell.bubbles.Bubbles; Loading Loading @@ -144,7 +146,15 @@ public interface SysUIComponent { getConnectingDisplayViewModel().init(); getFoldStateLoggingProvider().ifPresent(FoldStateLoggingProvider::init); getFoldStateLogger().ifPresent(FoldStateLogger::init); getUnfoldTransitionProgressProvider() Optional<UnfoldTransitionProgressProvider> unfoldTransitionProgressProvider; if (Flags.unfoldAnimationBackgroundProgress()) { unfoldTransitionProgressProvider = getBgUnfoldTransitionProgressProvider(); } else { unfoldTransitionProgressProvider = getUnfoldTransitionProgressProvider(); } unfoldTransitionProgressProvider .ifPresent( (progressProvider) -> getUnfoldTransitionProgressForwarder() Loading @@ -170,7 +180,14 @@ public interface SysUIComponent { ContextComponentHelper getContextComponentHelper(); /** * Creates a UnfoldTransitionProgressProvider. * Creates a UnfoldTransitionProgressProvider that calculates progress in the background. */ @SysUISingleton @UnfoldBg Optional<UnfoldTransitionProgressProvider> getBgUnfoldTransitionProgressProvider(); /** * Creates a UnfoldTransitionProgressProvider that calculates progress in the main thread. */ @SysUISingleton Optional<UnfoldTransitionProgressProvider> getUnfoldTransitionProgressProvider(); Loading Loading
packages/SystemUI/aconfig/systemui.aconfig +7 −0 Original line number Diff line number Diff line Loading @@ -113,6 +113,13 @@ flag { bug: "278054201" } flag { name: "unfold_animation_background_progress" namespace: "systemui" description: "Moves unfold animation progress calculation to a background thread" bug: "277879146" } flag { name: "qs_new_pipeline" namespace: "systemui" Loading
packages/SystemUI/shared/src/com/android/systemui/unfold/system/ActivityManagerActivityTypeProvider.kt +1 −2 Original line number Diff line number Diff line Loading @@ -32,8 +32,7 @@ constructor(private val activityManager: ActivityManager) : CurrentActivityTypeP override val isHomeActivity: Boolean? get() = _isHomeActivity private var _isHomeActivity: Boolean? = null @Volatile private var _isHomeActivity: Boolean? = null override fun init() { _isHomeActivity = activityManager.isOnHomeActivity() Loading
packages/SystemUI/shared/src/com/android/systemui/unfold/system/DeviceStateManagerFoldProvider.kt +10 −13 Original line number Diff line number Diff line Loading @@ -18,18 +18,19 @@ import android.content.Context import android.hardware.devicestate.DeviceStateManager import com.android.systemui.unfold.updates.FoldProvider import com.android.systemui.unfold.updates.FoldProvider.FoldCallback import java.util.concurrent.ConcurrentHashMap import java.util.concurrent.Executor import javax.inject.Inject import javax.inject.Singleton @Singleton class DeviceStateManagerFoldProvider @Inject constructor( private val deviceStateManager: DeviceStateManager, private val context: Context ) : FoldProvider { class DeviceStateManagerFoldProvider @Inject constructor(private val deviceStateManager: DeviceStateManager, private val context: Context) : FoldProvider { private val callbacks: MutableMap<FoldCallback, DeviceStateManager.DeviceStateCallback> = hashMapOf() private val callbacks = ConcurrentHashMap<FoldCallback, DeviceStateManager.DeviceStateCallback>() override fun registerCallback(callback: FoldCallback, executor: Executor) { val listener = FoldStateListener(context, callback) Loading @@ -39,13 +40,9 @@ class DeviceStateManagerFoldProvider @Inject constructor( override fun unregisterCallback(callback: FoldCallback) { val listener = callbacks.remove(callback) listener?.let { deviceStateManager.unregisterCallback(it) } listener?.let { deviceStateManager.unregisterCallback(it) } } private inner class FoldStateListener( context: Context, listener: FoldCallback ) : DeviceStateManager.FoldStateListener(context, { listener.onFoldUpdated(it) }) private inner class FoldStateListener(context: Context, listener: FoldCallback) : DeviceStateManager.FoldStateListener(context, { listener.onFoldUpdated(it) }) }
packages/SystemUI/shared/src/com/android/systemui/unfold/system/SystemUnfoldSharedModule.kt +29 −6 Original line number Diff line number Diff line Loading @@ -15,24 +15,29 @@ package com.android.systemui.unfold.system import android.os.Handler import android.os.HandlerThread import android.os.Looper import android.os.Process import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.dagger.qualifiers.UiBackground import com.android.systemui.unfold.config.ResourceUnfoldTransitionConfig import com.android.systemui.unfold.config.UnfoldTransitionConfig import com.android.systemui.unfold.dagger.UnfoldSingleThreadBg import com.android.systemui.unfold.dagger.UnfoldBg import com.android.systemui.unfold.dagger.UnfoldMain import com.android.systemui.unfold.dagger.UnfoldSingleThreadBg import com.android.systemui.unfold.updates.FoldProvider import com.android.systemui.unfold.util.CurrentActivityTypeProvider import dagger.Binds import dagger.Module import dagger.Provides import java.util.concurrent.Executor import javax.inject.Singleton /** * Dagger module with system-only dependencies for the unfold animation. * The code that is used to calculate unfold transition progress * depends on some hidden APIs that are not available in normal * apps. In order to re-use this code and use alternative implementations * of these classes in other apps and hidden APIs here. * Dagger module with system-only dependencies for the unfold animation. The code that is used to * calculate unfold transition progress depends on some hidden APIs that are not available in normal * apps. In order to re-use this code and use alternative implementations of these classes in other * apps and hidden APIs here. */ @Module abstract class SystemUnfoldSharedModule { Loading Loading @@ -61,4 +66,22 @@ abstract class SystemUnfoldSharedModule { @Binds @UnfoldSingleThreadBg abstract fun backgroundExecutor(@UiBackground executor: Executor): Executor companion object { @Provides @UnfoldBg @Singleton fun unfoldBgProgressHandler(@UnfoldBg looper: Looper): Handler { return Handler(looper) } @Provides @UnfoldBg @Singleton fun provideBgLooper(): Looper { return HandlerThread("UnfoldBg", Process.THREAD_PRIORITY_FOREGROUND) .apply { start() } .looper } } }
packages/SystemUI/src/com/android/systemui/dagger/SysUIComponent.java +19 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ package com.android.systemui.dagger; import com.android.systemui.BootCompleteCacheImpl; import com.android.systemui.CoreStartable; import com.android.systemui.Dependency; import com.android.systemui.Flags; import com.android.systemui.InitController; import com.android.systemui.SystemUIAppComponentFactoryBase; import com.android.systemui.dagger.qualifiers.PerUser; Loading @@ -35,6 +36,7 @@ import com.android.systemui.unfold.FoldStateLogger; import com.android.systemui.unfold.FoldStateLoggingProvider; import com.android.systemui.unfold.SysUIUnfoldComponent; import com.android.systemui.unfold.UnfoldTransitionProgressProvider; import com.android.systemui.unfold.dagger.UnfoldBg; import com.android.systemui.unfold.progress.UnfoldTransitionProgressForwarder; import com.android.wm.shell.back.BackAnimation; import com.android.wm.shell.bubbles.Bubbles; Loading Loading @@ -144,7 +146,15 @@ public interface SysUIComponent { getConnectingDisplayViewModel().init(); getFoldStateLoggingProvider().ifPresent(FoldStateLoggingProvider::init); getFoldStateLogger().ifPresent(FoldStateLogger::init); getUnfoldTransitionProgressProvider() Optional<UnfoldTransitionProgressProvider> unfoldTransitionProgressProvider; if (Flags.unfoldAnimationBackgroundProgress()) { unfoldTransitionProgressProvider = getBgUnfoldTransitionProgressProvider(); } else { unfoldTransitionProgressProvider = getUnfoldTransitionProgressProvider(); } unfoldTransitionProgressProvider .ifPresent( (progressProvider) -> getUnfoldTransitionProgressForwarder() Loading @@ -170,7 +180,14 @@ public interface SysUIComponent { ContextComponentHelper getContextComponentHelper(); /** * Creates a UnfoldTransitionProgressProvider. * Creates a UnfoldTransitionProgressProvider that calculates progress in the background. */ @SysUISingleton @UnfoldBg Optional<UnfoldTransitionProgressProvider> getBgUnfoldTransitionProgressProvider(); /** * Creates a UnfoldTransitionProgressProvider that calculates progress in the main thread. */ @SysUISingleton Optional<UnfoldTransitionProgressProvider> getUnfoldTransitionProgressProvider(); Loading