Merge "Get rid of setInteractionHandler call to the host in launcher" into tm-qpr-dev am: 4421353ce8
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/20274922
Change-Id: Ib5219481f120ed86021b59c80509303bd1073f97
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java b/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java
index f450496..729eea9 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/ApiWrapper.java
@@ -17,10 +17,18 @@
package com.android.launcher3.uioverrides;
import android.app.Person;
+import android.appwidget.AppWidgetHost;
import android.content.pm.ShortcutInfo;
-import com.android.launcher3.Utilities;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.widget.LauncherAppWidgetHost;
+
+/**
+ * A wrapper for the hidden API calls
+ */
public class ApiWrapper {
public static final boolean TASKBAR_DRAWN_IN_PROCESS = true;
@@ -29,4 +37,14 @@
Person[] persons = si.getPersons();
return persons == null ? Utilities.EMPTY_PERSON_ARRAY : persons;
}
+
+ /**
+ * Set the interaction handler for the host
+ * @param host AppWidgetHost that needs the interaction handler
+ * @param handler InteractionHandler for the views in the host
+ */
+ public static void setHostInteractionHandler(@NonNull AppWidgetHost host,
+ @Nullable LauncherAppWidgetHost.LauncherWidgetInteractionHandler handler) {
+ host.setInteractionHandler(handler::onInteraction);
+ }
}
diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java
index 08d147f..2dde6b6 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepInteractionHandler.java
@@ -33,10 +33,12 @@
import com.android.launcher3.logging.StatsLogManager;
import com.android.launcher3.model.data.ItemInfo;
import com.android.launcher3.util.ActivityOptionsWrapper;
+import com.android.launcher3.widget.LauncherAppWidgetHost;
import com.android.launcher3.widget.LauncherAppWidgetHostView;
/** Provides a Quickstep specific animation when launching an activity from an app widget. */
-class QuickstepInteractionHandler implements RemoteViews.InteractionHandler {
+class QuickstepInteractionHandler implements
+ LauncherAppWidgetHost.LauncherWidgetInteractionHandler {
private static final String TAG = "QuickstepInteractionHandler";
diff --git a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
index 2bf6f12..23794b0 100644
--- a/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
+++ b/quickstep/src/com/android/launcher3/uioverrides/QuickstepLauncher.java
@@ -490,7 +490,8 @@
protected LauncherAppWidgetHost createAppWidgetHost() {
LauncherAppWidgetHost appWidgetHost = super.createAppWidgetHost();
- appWidgetHost.setInteractionHandler(new QuickstepInteractionHandler(this));
+ ApiWrapper.setHostInteractionHandler(appWidgetHost,
+ new QuickstepInteractionHandler(this));
return appWidgetHost;
}
diff --git a/src/com/android/launcher3/widget/LauncherAppWidgetHost.java b/src/com/android/launcher3/widget/LauncherAppWidgetHost.java
index 3e80699..fff8fbb 100644
--- a/src/com/android/launcher3/widget/LauncherAppWidgetHost.java
+++ b/src/com/android/launcher3/widget/LauncherAppWidgetHost.java
@@ -18,6 +18,7 @@
import static android.app.Activity.RESULT_CANCELED;
+import android.app.PendingIntent;
import android.appwidget.AppWidgetHost;
import android.appwidget.AppWidgetHostView;
import android.appwidget.AppWidgetManager;
@@ -28,6 +29,7 @@
import android.os.Bundle;
import android.os.Handler;
import android.util.SparseArray;
+import android.view.View;
import android.widget.RemoteViews;
import android.widget.Toast;
@@ -80,6 +82,24 @@
private IntConsumer mAppWidgetRemovedCallback = null;
+ /**
+ * This serves for the purpose of getting rid of the hidden API calling of InteractionHandler
+ */
+ public interface LauncherWidgetInteractionHandler {
+ /**
+ * Invoked when the user performs an interaction on the View.
+ *
+ * @param view the View with which the user interacted
+ * @param pendingIntent the base PendingIntent associated with the view
+ * @param response the response to the interaction, which knows how to fill in the
+ * attached PendingIntent
+ */
+ boolean onInteraction(
+ View view,
+ PendingIntent pendingIntent,
+ RemoteViews.RemoteResponse response);
+ }
+
public LauncherAppWidgetHost(Context context) {
this(context, null);
}
diff --git a/src_ui_overrides/com/android/launcher3/uioverrides/ApiWrapper.java b/src_ui_overrides/com/android/launcher3/uioverrides/ApiWrapper.java
index c8b5e2f..ea0f5a3 100644
--- a/src_ui_overrides/com/android/launcher3/uioverrides/ApiWrapper.java
+++ b/src_ui_overrides/com/android/launcher3/uioverrides/ApiWrapper.java
@@ -17,10 +17,18 @@
package com.android.launcher3.uioverrides;
import android.app.Person;
+import android.appwidget.AppWidgetHost;
import android.content.pm.ShortcutInfo;
-import com.android.launcher3.Utilities;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import com.android.launcher3.Utilities;
+import com.android.launcher3.widget.LauncherAppWidgetHost;
+
+/**
+ * A wrapper for the hidden API calls
+ */
public class ApiWrapper {
public static final boolean TASKBAR_DRAWN_IN_PROCESS = false;
@@ -28,4 +36,14 @@
public static Person[] getPersons(ShortcutInfo si) {
return Utilities.EMPTY_PERSON_ARRAY;
}
+
+ /**
+ * Set the interaction handler for the host
+ * @param host AppWidgetHost that needs the interaction handler
+ * @param handler InteractionHandler for the views in the host
+ */
+ public static void setHostInteractionHandler(@NonNull AppWidgetHost host,
+ @Nullable LauncherAppWidgetHost.LauncherWidgetInteractionHandler handler) {
+ // No-op
+ }
}