From 8975ce55c0add493d91fb43333c681f028586857 Mon Sep 17 00:00:00 2001 From: Song Hu Date: Thu, 15 Apr 2021 00:44:41 -0700 Subject: [PATCH] Pass ScreenshotSmartActionType as a new parameter into ScreenshotNotificationSmartActionsProviderGoogle#getActions where it maps to InteractionType to differentiate Quick Share action from regular smart actions. SystemUI side change. Test: test on local device Bug: 185423664 Change-Id: I7d12244e21d655c10fb842c8f1bb2690499f5412 --- .../ScreenshotNotificationSmartActionsProvider.java | 10 +++++++++- .../systemui/screenshot/ScreenshotSmartActions.java | 5 +++-- .../ScreenshotNotificationSmartActionsTest.java | 7 ++++--- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java index 29f67f348f7b9..6ebab8a608875 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsProvider.java @@ -57,6 +57,13 @@ public class ScreenshotNotificationSmartActionsProvider { ERROR, TIMEOUT } + + /* Enum to define screenshot smart action types. */ + public enum ScreenshotSmartActionType { + REGULAR_SMART_ACTIONS, + QUICK_SHARE_ACTION + } + /** * Default implementation that returns an empty list. * This method is overridden in vendor-specific Sys UI implementation. @@ -68,7 +75,8 @@ public class ScreenshotNotificationSmartActionsProvider { * @param userHandle user handle of the foreground task owner */ public CompletableFuture> getActions(String screenshotId, - Uri screenshotUri, Bitmap bitmap, ComponentName componentName, UserHandle userHandle) { + Uri screenshotUri, Bitmap bitmap, ComponentName componentName, + ScreenshotSmartActionType actionType, UserHandle userHandle) { if (DEBUG_ACTIONS) { Log.d(TAG, "Returning empty smart action list."); } diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java index 1184dc7fe1a4f..9bd7923016f2b 100644 --- a/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java +++ b/packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotSmartActions.java @@ -20,6 +20,7 @@ import static android.os.AsyncTask.THREAD_POOL_EXECUTOR; import static com.android.systemui.screenshot.LogConfig.DEBUG_ACTIONS; import static com.android.systemui.screenshot.LogConfig.logTag; +import static com.android.systemui.screenshot.ScreenshotNotificationSmartActionsProvider.ScreenshotSmartActionType; import android.app.ActivityManager; import android.app.Notification; @@ -87,8 +88,8 @@ public class ScreenshotSmartActions { (runningTask != null && runningTask.topActivity != null) ? runningTask.topActivity : new ComponentName("", ""); - smartActionsFuture = smartActionsProvider.getActions( - screenshotId, screenshotUri, image, componentName, userHandle); + smartActionsFuture = smartActionsProvider.getActions(screenshotId, screenshotUri, image, + componentName, ScreenshotSmartActionType.REGULAR_SMART_ACTIONS, userHandle); } catch (Throwable e) { long waitTimeMs = SystemClock.uptimeMillis() - startTimeMs; smartActionsFuture = CompletableFuture.completedFuture(Collections.emptyList()); diff --git a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java index 03f93fa124513..8c7d762b23072 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/screenshot/ScreenshotNotificationSmartActionsTest.java @@ -82,7 +82,7 @@ public class ScreenshotNotificationSmartActionsTest extends SysuiTestCase { when(bitmap.getConfig()).thenReturn(Bitmap.Config.HARDWARE); ScreenshotNotificationSmartActionsProvider smartActionsProvider = mock( ScreenshotNotificationSmartActionsProvider.class); - when(smartActionsProvider.getActions(any(), any(), any(), any(), any())) + when(smartActionsProvider.getActions(any(), any(), any(), any(), any(), any())) .thenThrow(RuntimeException.class); CompletableFuture> smartActionsFuture = mScreenshotSmartActions.getSmartActionsFuture( @@ -128,7 +128,7 @@ public class ScreenshotNotificationSmartActionsTest extends SysuiTestCase { mScreenshotSmartActions.getSmartActionsFuture( "", Uri.parse("content://autority/data"), bitmap, mSmartActionsProvider, true, UserHandle.of(UserHandle.myUserId())); - verify(mSmartActionsProvider, never()).getActions(any(), any(), any(), any(), any()); + verify(mSmartActionsProvider, never()).getActions(any(), any(), any(), any(), any(), any()); assertNotNull(smartActionsFuture); List smartActions = smartActionsFuture.get(5, TimeUnit.MILLISECONDS); assertEquals(Collections.emptyList(), smartActions); @@ -142,7 +142,8 @@ public class ScreenshotNotificationSmartActionsTest extends SysuiTestCase { mScreenshotSmartActions.getSmartActionsFuture( "", Uri.parse("content://autority/data"), bitmap, mSmartActionsProvider, true, UserHandle.of(UserHandle.myUserId())); - verify(mSmartActionsProvider, times(1)).getActions(any(), any(), any(), any(), any()); + verify(mSmartActionsProvider, times(1)).getActions( + any(), any(), any(), any(), any(), any()); } // Tests for a hardware bitmap, a completed future is returned.