summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/clipboardoverlay/ClipboardListener.java13
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardListenerTest.java47
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/clipboardoverlay/ClipboardOverlayEventTest.java5
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