diff options
| author | 2024-10-04 14:36:14 +0000 | |
|---|---|---|
| committer | 2024-10-04 14:36:14 +0000 | |
| commit | 6c0ca0dd102c24a5bdb526356ac5f81653b01e7e (patch) | |
| tree | ffa5c55ef87cc08786601971251bad58e65cf6c4 | |
| parent | 3f713e0eaf14242071554659e994c60d84d91abb (diff) | |
| parent | 12692eca76c164cb4e2e3c21fccda7e1d641a42e (diff) | |
Merge "Block clipboard UI when device is locked" into tm-dev am: 12692eca76
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/29319301
Change-Id: I43706d359b29c2c9394db4838160e4905db8f092
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
3 files changed, 60 insertions, 5 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardListener.java b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardListener.java index da602caac0dc..cdf58db58a15 100644 --- a/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardListener.java +++ b/packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardListener.java @@ -25,6 +25,7 @@ import static com.android.systemui.clipboardoverlay.ClipboardOverlayEvent.CLIPBO import static com.google.android.setupcompat.util.WizardManagerHelper.SETTINGS_SECURE_USER_SETUP_COMPLETE; +import android.app.KeyguardManager; import android.content.ClipData; import android.content.ClipboardManager; import android.content.Context; @@ -59,18 +60,21 @@ public class ClipboardListener extends CoreStartable private final ClipboardOverlayControllerFactory mOverlayFactory; private final ClipboardToast mClipboardToast; private final ClipboardManager mClipboardManager; + private final KeyguardManager mKeyguardManager; private final UiEventLogger mUiEventLogger; private ClipboardOverlayController mClipboardOverlayController; @Inject public ClipboardListener(Context context, DeviceConfigProxy deviceConfigProxy, ClipboardOverlayControllerFactory overlayFactory, ClipboardManager clipboardManager, - ClipboardToast clipboardToast,UiEventLogger uiEventLogger) { + ClipboardToast clipboardToast, KeyguardManager keyguardManager, + UiEventLogger uiEventLogger) { super(context); mDeviceConfig = deviceConfigProxy; mOverlayFactory = overlayFactory; mClipboardToast = clipboardToast; mClipboardManager = clipboardManager; + mKeyguardManager = keyguardManager; mUiEventLogger = uiEventLogger; } @@ -96,8 +100,11 @@ public class ClipboardListener extends CoreStartable return; } - if (!isUserSetupComplete()) { - // just show a toast, user should not access intents from this state + // user should not access intents before setup or while device is locked + if (mKeyguardManager.isDeviceLocked() + || !isUserSetupComplete() + || clipData == null // shouldn't happen, but just in case + || clipData.getItemCount() == 0) { if (shouldShowToast(clipData)) { mUiEventLogger.log(CLIPBOARD_TOAST_SHOWN, 0, clipSource); mClipboardToast.showCopiedToast(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardListenerTest.java b/packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardListenerTest.java index 86402b3202d4..11803d68d5ac 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardListenerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardListenerTest.java @@ -29,6 +29,7 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; import static org.mockito.Mockito.when; +import android.app.KeyguardManager; import android.content.ClipData; import android.content.ClipDescription; import android.content.ClipboardManager; @@ -51,6 +52,8 @@ import org.mockito.Captor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import java.util.ArrayList; + @SmallTest @RunWith(AndroidJUnit4.class) public class ClipboardListenerTest extends SysuiTestCase { @@ -60,6 +63,8 @@ public class ClipboardListenerTest extends SysuiTestCase { @Mock private ClipboardOverlayControllerFactory mClipboardOverlayControllerFactory; @Mock + private KeyguardManager mKeyguardManager; + @Mock private ClipboardOverlayController mOverlayController; @Mock private ClipboardToast mClipboardToast; @@ -97,7 +102,7 @@ public class ClipboardListenerTest extends SysuiTestCase { mClipboardListener = new ClipboardListener(getContext(), mDeviceConfigProxy, mClipboardOverlayControllerFactory, mClipboardManager,mClipboardToast, - mUiEventLogger); + mKeyguardManager, mUiEventLogger); } @Test @@ -201,4 +206,44 @@ public class ClipboardListenerTest extends SysuiTestCase { verify(mClipboardToast, times(1)).showCopiedToast(); verifyZeroInteractions(mClipboardOverlayControllerFactory); } + + @Test + public void test_deviceLocked_showsToast() { + when(mKeyguardManager.isDeviceLocked()).thenReturn(true); + + mClipboardListener.start(); + mClipboardListener.onPrimaryClipChanged(); + + verify(mUiEventLogger, times(1)).log( + ClipboardOverlayEvent.CLIPBOARD_TOAST_SHOWN, 0, mSampleSource); + verify(mClipboardToast, times(1)).showCopiedToast(); + verifyZeroInteractions(mClipboardOverlayControllerFactory); + } + + @Test + public void test_nullClipData_showsNothing() { + when(mClipboardManager.getPrimaryClip()).thenReturn(null); + + mClipboardListener.start(); + mClipboardListener.onPrimaryClipChanged(); + + verifyZeroInteractions(mUiEventLogger); + verifyZeroInteractions(mClipboardToast); + verifyZeroInteractions(mClipboardOverlayControllerFactory); + } + + @Test + public void test_emptyClipData_showsToast() { + ClipDescription description = new ClipDescription("Test", new String[0]); + ClipData noItems = new ClipData(description, new ArrayList<>()); + when(mClipboardManager.getPrimaryClip()).thenReturn(noItems); + + mClipboardListener.start(); + mClipboardListener.onPrimaryClipChanged(); + + verify(mUiEventLogger, times(1)).log( + ClipboardOverlayEvent.CLIPBOARD_TOAST_SHOWN, 0, mSampleSource); + verify(mClipboardToast, times(1)).showCopiedToast(); + verifyZeroInteractions(mClipboardOverlayControllerFactory); + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardOverlayEventTest.java b/packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardOverlayEventTest.java index 5e2f6a0f7a70..022d1a2b411b 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardOverlayEventTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardOverlayEventTest.java @@ -23,6 +23,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.app.KeyguardManager; import android.content.ClipData; import android.content.ClipboardManager; import android.provider.DeviceConfig; @@ -51,6 +52,8 @@ public class ClipboardOverlayEventTest extends SysuiTestCase { @Mock private ClipboardOverlayController mOverlayController; @Mock + private KeyguardManager mKeyguardManager; + @Mock private ClipboardToast mClipboardToast; @Mock private UiEventLogger mUiEventLogger; @@ -78,7 +81,7 @@ public class ClipboardOverlayEventTest extends SysuiTestCase { mClipboardListener = new ClipboardListener(getContext(), deviceConfigProxy, mClipboardOverlayControllerFactory, mClipboardManager, mClipboardToast, - mUiEventLogger); + mKeyguardManager, mUiEventLogger); } @Test |