Merge "Don't fire pending remote input when is phone locked." into sc-dev

This commit is contained in:
Dave Mankoff
2021-07-01 19:12:21 +00:00
committed by Android (Google) Code Review
3 changed files with 23 additions and 6 deletions

View File

@@ -34,6 +34,7 @@ import androidx.annotation.Nullable;
import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.keyguard.dagger.KeyguardBouncerScope; import com.android.keyguard.dagger.KeyguardBouncerScope;
import com.android.systemui.statusbar.phone.ShadeController;
import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.ConfigurationController;
import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener; import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
import com.android.systemui.util.EmergencyDialerConstants; import com.android.systemui.util.EmergencyDialerConstants;
@@ -50,6 +51,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
private final TelephonyManager mTelephonyManager; private final TelephonyManager mTelephonyManager;
private final PowerManager mPowerManager; private final PowerManager mPowerManager;
private final ActivityTaskManager mActivityTaskManager; private final ActivityTaskManager mActivityTaskManager;
private ShadeController mShadeController;
private final TelecomManager mTelecomManager; private final TelecomManager mTelecomManager;
private final MetricsLogger mMetricsLogger; private final MetricsLogger mMetricsLogger;
@@ -79,6 +81,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
ConfigurationController configurationController, ConfigurationController configurationController,
KeyguardUpdateMonitor keyguardUpdateMonitor, TelephonyManager telephonyManager, KeyguardUpdateMonitor keyguardUpdateMonitor, TelephonyManager telephonyManager,
PowerManager powerManager, ActivityTaskManager activityTaskManager, PowerManager powerManager, ActivityTaskManager activityTaskManager,
ShadeController shadeController,
@Nullable TelecomManager telecomManager, MetricsLogger metricsLogger) { @Nullable TelecomManager telecomManager, MetricsLogger metricsLogger) {
super(view); super(view);
mConfigurationController = configurationController; mConfigurationController = configurationController;
@@ -86,6 +89,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
mTelephonyManager = telephonyManager; mTelephonyManager = telephonyManager;
mPowerManager = powerManager; mPowerManager = powerManager;
mActivityTaskManager = activityTaskManager; mActivityTaskManager = activityTaskManager;
mShadeController = shadeController;
mTelecomManager = telecomManager; mTelecomManager = telecomManager;
mMetricsLogger = metricsLogger; mMetricsLogger = metricsLogger;
} }
@@ -129,6 +133,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
mPowerManager.userActivity(SystemClock.uptimeMillis(), true); mPowerManager.userActivity(SystemClock.uptimeMillis(), true);
} }
mActivityTaskManager.stopSystemLockTaskMode(); mActivityTaskManager.stopSystemLockTaskMode();
mShadeController.collapsePanel(false);
if (mTelecomManager != null && mTelecomManager.isInCall()) { if (mTelecomManager != null && mTelecomManager.isInCall()) {
mTelecomManager.showInCallScreen(false); mTelecomManager.showInCallScreen(false);
if (mEmergencyButtonCallback != null) { if (mEmergencyButtonCallback != null) {
@@ -167,6 +172,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
private final TelephonyManager mTelephonyManager; private final TelephonyManager mTelephonyManager;
private final PowerManager mPowerManager; private final PowerManager mPowerManager;
private final ActivityTaskManager mActivityTaskManager; private final ActivityTaskManager mActivityTaskManager;
private ShadeController mShadeController;
@Nullable @Nullable
private final TelecomManager mTelecomManager; private final TelecomManager mTelecomManager;
private final MetricsLogger mMetricsLogger; private final MetricsLogger mMetricsLogger;
@@ -175,6 +181,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
public Factory(ConfigurationController configurationController, public Factory(ConfigurationController configurationController,
KeyguardUpdateMonitor keyguardUpdateMonitor, TelephonyManager telephonyManager, KeyguardUpdateMonitor keyguardUpdateMonitor, TelephonyManager telephonyManager,
PowerManager powerManager, ActivityTaskManager activityTaskManager, PowerManager powerManager, ActivityTaskManager activityTaskManager,
ShadeController shadeController,
@Nullable TelecomManager telecomManager, MetricsLogger metricsLogger) { @Nullable TelecomManager telecomManager, MetricsLogger metricsLogger) {
mConfigurationController = configurationController; mConfigurationController = configurationController;
@@ -182,6 +189,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
mTelephonyManager = telephonyManager; mTelephonyManager = telephonyManager;
mPowerManager = powerManager; mPowerManager = powerManager;
mActivityTaskManager = activityTaskManager; mActivityTaskManager = activityTaskManager;
mShadeController = shadeController;
mTelecomManager = telecomManager; mTelecomManager = telecomManager;
mMetricsLogger = metricsLogger; mMetricsLogger = metricsLogger;
} }
@@ -190,6 +198,7 @@ public class EmergencyButtonController extends ViewController<EmergencyButton> {
public EmergencyButtonController create(EmergencyButton view) { public EmergencyButtonController create(EmergencyButton view) {
return new EmergencyButtonController(view, mConfigurationController, return new EmergencyButtonController(view, mConfigurationController,
mKeyguardUpdateMonitor, mTelephonyManager, mPowerManager, mActivityTaskManager, mKeyguardUpdateMonitor, mTelephonyManager, mPowerManager, mActivityTaskManager,
mShadeController,
mTelecomManager, mMetricsLogger); mTelecomManager, mMetricsLogger);
} }
} }

View File

@@ -27,7 +27,6 @@ import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.IntentFilter; import android.content.IntentFilter;
import android.content.IntentSender; import android.content.IntentSender;
import android.os.Handler;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.UserHandle; import android.os.UserHandle;
import android.view.View; import android.view.View;
@@ -35,6 +34,7 @@ import android.view.ViewParent;
import com.android.systemui.ActivityIntentHelper; import com.android.systemui.ActivityIntentHelper;
import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.ActionClickLogger; import com.android.systemui.statusbar.ActionClickLogger;
@@ -50,6 +50,8 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import java.util.concurrent.Executor;
import javax.inject.Inject; import javax.inject.Inject;
/** /**
@@ -65,6 +67,7 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
private final Context mContext; private final Context mContext;
private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
private final ShadeController mShadeController; private final ShadeController mShadeController;
private Executor mExecutor;
private final ActivityIntentHelper mActivityIntentHelper; private final ActivityIntentHelper mActivityIntentHelper;
private final GroupExpansionManager mGroupExpansionManager; private final GroupExpansionManager mGroupExpansionManager;
private View mPendingWorkRemoteInputView; private View mPendingWorkRemoteInputView;
@@ -74,7 +77,6 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
private final ActionClickLogger mActionClickLogger; private final ActionClickLogger mActionClickLogger;
private int mDisabled2; private int mDisabled2;
protected BroadcastReceiver mChallengeReceiver = new ChallengeReceiver(); protected BroadcastReceiver mChallengeReceiver = new ChallengeReceiver();
private Handler mMainHandler = new Handler();
/** /**
*/ */
@@ -89,10 +91,12 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
ActivityStarter activityStarter, ActivityStarter activityStarter,
ShadeController shadeController, ShadeController shadeController,
CommandQueue commandQueue, CommandQueue commandQueue,
ActionClickLogger clickLogger) { ActionClickLogger clickLogger,
@Main Executor executor) {
mContext = context; mContext = context;
mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
mShadeController = shadeController; mShadeController = shadeController;
mExecutor = executor;
mContext.registerReceiverAsUser(mChallengeReceiver, UserHandle.ALL, mContext.registerReceiverAsUser(mChallengeReceiver, UserHandle.ALL,
new IntentFilter(ACTION_DEVICE_LOCKED_CHANGED), null, null); new IntentFilter(ACTION_DEVICE_LOCKED_CHANGED), null, null);
mLockscreenUserManager = notificationLockscreenUserManager; mLockscreenUserManager = notificationLockscreenUserManager;
@@ -113,9 +117,10 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
boolean hasPendingRemoteInput = mPendingRemoteInputView != null; boolean hasPendingRemoteInput = mPendingRemoteInputView != null;
if (state == StatusBarState.SHADE if (state == StatusBarState.SHADE
&& (mStatusBarStateController.leaveOpenOnKeyguardHide() || hasPendingRemoteInput)) { && (mStatusBarStateController.leaveOpenOnKeyguardHide() || hasPendingRemoteInput)) {
if (!mStatusBarStateController.isKeyguardRequested()) { if (!mStatusBarStateController.isKeyguardRequested()
&& mKeyguardStateController.isUnlocked()) {
if (hasPendingRemoteInput) { if (hasPendingRemoteInput) {
mMainHandler.post(mPendingRemoteInputView::callOnClick); mExecutor.execute(mPendingRemoteInputView::callOnClick);
} }
mPendingRemoteInputView = null; mPendingRemoteInputView = null;
} }

View File

@@ -39,6 +39,8 @@ import com.android.systemui.statusbar.notification.NotificationEntryManager;
import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy; import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy;
import com.android.systemui.statusbar.policy.DeviceProvisionedController; import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.util.concurrency.FakeExecutor;
import com.android.systemui.util.time.FakeSystemClock;
import org.junit.Before; import org.junit.Before;
import org.junit.Test; import org.junit.Test;
@@ -58,6 +60,7 @@ public class StatusBarRemoteInputCallbackTest extends SysuiTestCase {
@Mock private SysuiStatusBarStateController mStatusBarStateController; @Mock private SysuiStatusBarStateController mStatusBarStateController;
@Mock private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; @Mock private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
@Mock private ActivityStarter mActivityStarter; @Mock private ActivityStarter mActivityStarter;
private final FakeExecutor mFakeExecutor = new FakeExecutor(new FakeSystemClock());
private int mCurrentUserId = 0; private int mCurrentUserId = 0;
private StatusBarRemoteInputCallback mRemoteInputCallback; private StatusBarRemoteInputCallback mRemoteInputCallback;
@@ -76,7 +79,7 @@ public class StatusBarRemoteInputCallbackTest extends SysuiTestCase {
mock(NotificationGroupManagerLegacy.class), mNotificationLockscreenUserManager, mock(NotificationGroupManagerLegacy.class), mNotificationLockscreenUserManager,
mKeyguardStateController, mStatusBarStateController, mStatusBarKeyguardViewManager, mKeyguardStateController, mStatusBarStateController, mStatusBarKeyguardViewManager,
mActivityStarter, mShadeController, new CommandQueue(mContext), mActivityStarter, mShadeController, new CommandQueue(mContext),
mock(ActionClickLogger.class))); mock(ActionClickLogger.class), mFakeExecutor));
mRemoteInputCallback.mChallengeReceiver = mRemoteInputCallback.new ChallengeReceiver(); mRemoteInputCallback.mChallengeReceiver = mRemoteInputCallback.new ChallengeReceiver();
} }