Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java +36 −4 Original line number Diff line number Diff line Loading @@ -34,11 +34,15 @@ import android.view.ViewParent; import androidx.annotation.Nullable; import com.android.compose.animation.scene.ObservableTransitionState; import com.android.systemui.ActivityIntentHelper; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.scene.domain.interactor.SceneInteractor; import com.android.systemui.scene.shared.flag.SceneContainerFlag; import com.android.systemui.shade.ShadeController; import com.android.systemui.statusbar.ActionClickLogger; import com.android.systemui.statusbar.CommandQueue; Loading @@ -52,6 +56,9 @@ import com.android.systemui.statusbar.notification.collection.render.GroupExpans import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.kotlin.JavaAdapter; import dagger.Lazy; import java.util.concurrent.Executor; Loading Loading @@ -80,6 +87,8 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks, private final ActionClickLogger mActionClickLogger; private int mDisabled2; protected BroadcastReceiver mChallengeReceiver = new ChallengeReceiver(); private final Lazy<DeviceUnlockedInteractor> mDeviceUnlockedInteractorLazy; private final Lazy<SceneInteractor> mSceneInteractorLazy; /** */ Loading @@ -95,7 +104,10 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks, ShadeController shadeController, CommandQueue commandQueue, ActionClickLogger clickLogger, @Main Executor executor) { @Main Executor executor, Lazy<DeviceUnlockedInteractor> deviceUnlockedInteractorLazy, Lazy<SceneInteractor> sceneInteractorLazy, JavaAdapter javaAdapter) { mContext = context; mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; mShadeController = shadeController; Loading @@ -113,6 +125,17 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks, mActionClickLogger = clickLogger; mActivityIntentHelper = new ActivityIntentHelper(mContext); mGroupExpansionManager = groupExpansionManager; mDeviceUnlockedInteractorLazy = deviceUnlockedInteractorLazy; mSceneInteractorLazy = sceneInteractorLazy; if (SceneContainerFlag.isEnabled()) { javaAdapter.alwaysCollectFlow( mDeviceUnlockedInteractorLazy.get().getDeviceUnlockStatus(), deviceUnlockStatus -> onStateChanged(mStatusBarStateController.getState())); javaAdapter.alwaysCollectFlow( mSceneInteractorLazy.get().getTransitionState(), deviceUnlockStatus -> onStateChanged(mStatusBarStateController.getState())); } } @Override Loading Loading @@ -318,12 +341,21 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks, } /** * Returns {@code true} if it is safe to retry a pending remote input. * Returns {@code true} if it is safe to retry a pending remote input. The exact criteria for * this vary depending whether the scene container is enabled. */ private boolean canRetryPendingRemoteInput() { if (SceneContainerFlag.isEnabled()) { final boolean isUnlocked = mDeviceUnlockedInteractorLazy.get() .getDeviceUnlockStatus().getValue().isUnlocked(); final boolean isIdle = mSceneInteractorLazy.get() .getTransitionState().getValue() instanceof ObservableTransitionState.Idle; return isUnlocked && isIdle; } else { return mKeyguardStateController.isUnlocked() && !mStatusBarStateController.isKeyguardRequested(); } } protected class ChallengeReceiver extends BroadcastReceiver { @Override Loading packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java +13 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,9 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.scene.domain.interactor.SceneInteractor; import com.android.systemui.settings.FakeDisplayTracker; import com.android.systemui.shade.ShadeController; import com.android.systemui.statusbar.ActionClickLogger; Loading @@ -50,8 +52,11 @@ import com.android.systemui.statusbar.notification.row.NotificationContentView; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.kotlin.JavaAdapter; import com.android.systemui.util.time.FakeSystemClock; import dagger.Lazy; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -71,8 +76,14 @@ public class StatusBarRemoteInputCallbackTest extends SysuiTestCase { @Mock private SysuiStatusBarStateController mStatusBarStateController; @Mock private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; @Mock private ActivityStarter mActivityStarter; @Mock private Lazy<DeviceUnlockedInteractor> mDeviceUnlockedInteractorLazy; @Mock private Lazy<SceneInteractor> mSceneInteractorLazy; @Mock private JavaAdapter mJavaAdapter; private final FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock()); @Mock private DeviceUnlockedInteractor mDeviceUnlockedInteractor; @Mock private SceneInteractor mSceneInteractor; private int mCurrentUserId = 0; private StatusBarRemoteInputCallback mRemoteInputCallback; Loading @@ -90,7 +101,8 @@ public class StatusBarRemoteInputCallbackTest extends SysuiTestCase { mKeyguardStateController, mStatusBarStateController, mStatusBarKeyguardViewManager, mActivityStarter, mShadeController, new CommandQueue(mContext, new FakeDisplayTracker(mContext)), mock(ActionClickLogger.class), mFakeExecutor)); mock(ActionClickLogger.class), mFakeExecutor, mDeviceUnlockedInteractorLazy, mSceneInteractorLazy, mJavaAdapter)); mRemoteInputCallback.mChallengeReceiver = mRemoteInputCallback.new ChallengeReceiver(); } Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java +36 −4 Original line number Diff line number Diff line Loading @@ -34,11 +34,15 @@ import android.view.ViewParent; import androidx.annotation.Nullable; import com.android.compose.animation.scene.ObservableTransitionState; import com.android.systemui.ActivityIntentHelper; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.scene.domain.interactor.SceneInteractor; import com.android.systemui.scene.shared.flag.SceneContainerFlag; import com.android.systemui.shade.ShadeController; import com.android.systemui.statusbar.ActionClickLogger; import com.android.systemui.statusbar.CommandQueue; Loading @@ -52,6 +56,9 @@ import com.android.systemui.statusbar.notification.collection.render.GroupExpans import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.kotlin.JavaAdapter; import dagger.Lazy; import java.util.concurrent.Executor; Loading Loading @@ -80,6 +87,8 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks, private final ActionClickLogger mActionClickLogger; private int mDisabled2; protected BroadcastReceiver mChallengeReceiver = new ChallengeReceiver(); private final Lazy<DeviceUnlockedInteractor> mDeviceUnlockedInteractorLazy; private final Lazy<SceneInteractor> mSceneInteractorLazy; /** */ Loading @@ -95,7 +104,10 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks, ShadeController shadeController, CommandQueue commandQueue, ActionClickLogger clickLogger, @Main Executor executor) { @Main Executor executor, Lazy<DeviceUnlockedInteractor> deviceUnlockedInteractorLazy, Lazy<SceneInteractor> sceneInteractorLazy, JavaAdapter javaAdapter) { mContext = context; mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; mShadeController = shadeController; Loading @@ -113,6 +125,17 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks, mActionClickLogger = clickLogger; mActivityIntentHelper = new ActivityIntentHelper(mContext); mGroupExpansionManager = groupExpansionManager; mDeviceUnlockedInteractorLazy = deviceUnlockedInteractorLazy; mSceneInteractorLazy = sceneInteractorLazy; if (SceneContainerFlag.isEnabled()) { javaAdapter.alwaysCollectFlow( mDeviceUnlockedInteractorLazy.get().getDeviceUnlockStatus(), deviceUnlockStatus -> onStateChanged(mStatusBarStateController.getState())); javaAdapter.alwaysCollectFlow( mSceneInteractorLazy.get().getTransitionState(), deviceUnlockStatus -> onStateChanged(mStatusBarStateController.getState())); } } @Override Loading Loading @@ -318,12 +341,21 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks, } /** * Returns {@code true} if it is safe to retry a pending remote input. * Returns {@code true} if it is safe to retry a pending remote input. The exact criteria for * this vary depending whether the scene container is enabled. */ private boolean canRetryPendingRemoteInput() { if (SceneContainerFlag.isEnabled()) { final boolean isUnlocked = mDeviceUnlockedInteractorLazy.get() .getDeviceUnlockStatus().getValue().isUnlocked(); final boolean isIdle = mSceneInteractorLazy.get() .getTransitionState().getValue() instanceof ObservableTransitionState.Idle; return isUnlocked && isIdle; } else { return mKeyguardStateController.isUnlocked() && !mStatusBarStateController.isKeyguardRequested(); } } protected class ChallengeReceiver extends BroadcastReceiver { @Override Loading
packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java +13 −1 Original line number Diff line number Diff line Loading @@ -36,7 +36,9 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; import com.android.systemui.deviceentry.domain.interactor.DeviceUnlockedInteractor; import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.scene.domain.interactor.SceneInteractor; import com.android.systemui.settings.FakeDisplayTracker; import com.android.systemui.shade.ShadeController; import com.android.systemui.statusbar.ActionClickLogger; Loading @@ -50,8 +52,11 @@ import com.android.systemui.statusbar.notification.row.NotificationContentView; import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.concurrency.FakeExecutor; import com.android.systemui.util.kotlin.JavaAdapter; import com.android.systemui.util.time.FakeSystemClock; import dagger.Lazy; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; Loading @@ -71,8 +76,14 @@ public class StatusBarRemoteInputCallbackTest extends SysuiTestCase { @Mock private SysuiStatusBarStateController mStatusBarStateController; @Mock private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; @Mock private ActivityStarter mActivityStarter; @Mock private Lazy<DeviceUnlockedInteractor> mDeviceUnlockedInteractorLazy; @Mock private Lazy<SceneInteractor> mSceneInteractorLazy; @Mock private JavaAdapter mJavaAdapter; private final FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock()); @Mock private DeviceUnlockedInteractor mDeviceUnlockedInteractor; @Mock private SceneInteractor mSceneInteractor; private int mCurrentUserId = 0; private StatusBarRemoteInputCallback mRemoteInputCallback; Loading @@ -90,7 +101,8 @@ public class StatusBarRemoteInputCallbackTest extends SysuiTestCase { mKeyguardStateController, mStatusBarStateController, mStatusBarKeyguardViewManager, mActivityStarter, mShadeController, new CommandQueue(mContext, new FakeDisplayTracker(mContext)), mock(ActionClickLogger.class), mFakeExecutor)); mock(ActionClickLogger.class), mFakeExecutor, mDeviceUnlockedInteractorLazy, mSceneInteractorLazy, mJavaAdapter)); mRemoteInputCallback.mChallengeReceiver = mRemoteInputCallback.new ChallengeReceiver(); } Loading