Adds locus Id to ShortcutQuery to find shortcuts based on LocusId

Bug: 148085173
Test: atest com.android.server.pm.ShortcutManagerTest1 \
            com.android.server.pm.ShortcutManagerTest2 \
            com.android.server.pm.ShortcutManagerTest3 \
            com.android.server.pm.ShortcutManagerTest4 \
            com.android.server.pm.ShortcutManagerTest5 \
            com.android.server.pm.ShortcutManagerTest6 \
            com.android.server.pm.ShortcutManagerTest7 \
            com.android.server.pm.ShortcutManagerTest8 \
            com.android.server.pm.ShortcutManagerTest9 \
            com.android.server.pm.ShortcutManagerTest10
Test: atest DataManagerTest

Change-Id: Ie789582a43db6d53130f4a0e5bff646a3c08c71e
This commit is contained in:
Mehdi Alizadeh
2020-01-21 13:39:53 -08:00
parent 9f68019066
commit ae808ff765
10 changed files with 130 additions and 34 deletions

View File

@@ -20,6 +20,7 @@ import android.app.IApplicationThread;
import android.content.ComponentName;
import android.content.Intent;
import android.content.IntentSender;
import android.content.LocusId;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.IOnAppsChangedListener;
@@ -67,7 +68,8 @@ interface ILauncherApps {
in UserHandle user);
ParceledListSlice getShortcuts(String callingPackage, long changedSince, String packageName,
in List shortcutIds, in ComponentName componentName, int flags, in UserHandle user);
in List shortcutIds, in List<LocusId> locusIds, in ComponentName componentName,
int flags, in UserHandle user);
void pinShortcuts(String callingPackage, String packageName, in List<String> shortcutIds,
in UserHandle user);
boolean startShortcut(String callingPackage, String packageName, String id,
@@ -92,7 +94,8 @@ interface ILauncherApps {
ParceledListSlice getAllSessions(String callingPackage);
void registerShortcutChangeCallback(String callingPackage, long changedSince,
String packageName, in List shortcutIds, in ComponentName componentName, int flags,
in IShortcutChangeCallback callback, int callbackId);
String packageName, in List shortcutIds, in List<LocusId> locusIds,
in ComponentName componentName, int flags, in IShortcutChangeCallback callback,
int callbackId);
void unregisterShortcutChangeCallback(String callingPackage, int callbackId);
}

View File

@@ -34,6 +34,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.IntentSender;
import android.content.LocusId;
import android.content.pm.PackageInstaller.SessionCallback;
import android.content.pm.PackageInstaller.SessionCallbackDelegate;
import android.content.pm.PackageInstaller.SessionInfo;
@@ -414,6 +415,9 @@ public class LauncherApps {
@Nullable
List<String> mShortcutIds;
@Nullable
List<LocusId> mLocusIds;
@Nullable
ComponentName mActivity;
@@ -450,6 +454,19 @@ public class LauncherApps {
return this;
}
/**
* If non-null, return only the specified shortcuts by locus ID. When setting this field,
* a package name must also be set with {@link #setPackage}.
*
* @hide
*/
@SystemApi
@NonNull
public ShortcutQuery setLocusIds(@Nullable List<LocusId> locusIds) {
mLocusIds = locusIds;
return this;
}
/**
* If non-null, returns only shortcuts associated with the activity; i.e.
* {@link ShortcutInfo}s whose {@link ShortcutInfo#getActivity()} are equal
@@ -1022,8 +1039,8 @@ public class LauncherApps {
// changed callback, but that only returns shortcuts with the "key" information, so
// that won't return disabled message.
return maybeUpdateDisabledMessage(mService.getShortcuts(mContext.getPackageName(),
query.mChangedSince, query.mPackage, query.mShortcutIds, query.mActivity,
query.mQueryFlags, user)
query.mChangedSince, query.mPackage, query.mShortcutIds, query.mLocusIds,
query.mActivity, query.mQueryFlags, user)
.getList());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -1680,8 +1697,9 @@ public class LauncherApps {
mShortcutChangeCallbacks.put(callbackId, state);
try {
mService.registerShortcutChangeCallback(mContext.getPackageName(),
query.mChangedSince, query.mPackage, query.mShortcutIds, query.mActivity,
query.mQueryFlags, new ShortcutChangeCallbackProxy(state), callbackId);
query.mChangedSince, query.mPackage, query.mShortcutIds, query.mLocusIds,
query.mActivity, query.mQueryFlags, new ShortcutChangeCallbackProxy(state),
callbackId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}

View File

@@ -23,6 +23,7 @@ import android.appwidget.AppWidgetProviderInfo;
import android.content.ComponentName;
import android.content.Intent;
import android.content.IntentSender;
import android.content.LocusId;
import android.content.pm.LauncherApps.ShortcutQuery;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
@@ -45,8 +46,8 @@ public abstract class ShortcutServiceInternal {
getShortcuts(int launcherUserId,
@NonNull String callingPackage, long changedSince,
@Nullable String packageName, @Nullable List<String> shortcutIds,
@Nullable ComponentName componentName, @ShortcutQuery.QueryFlags int flags,
int userId, int callingPid, int callingUid);
@Nullable List<LocusId> locusIds, @Nullable ComponentName componentName,
@ShortcutQuery.QueryFlags int flags, int userId, int callingPid, int callingUid);
public abstract boolean
isPinnedByCaller(int launcherUserId, @NonNull String callingPackage,