Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ae808ff7 authored by Mehdi Alizadeh's avatar Mehdi Alizadeh
Browse files

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
parent 9f680190
Loading
Loading
Loading
Loading
+4 −0
Original line number Original line Diff line number Diff line
@@ -2100,6 +2100,10 @@ package android.content.pm {
    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LauncherApps.AppUsageLimit> CREATOR;
    field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LauncherApps.AppUsageLimit> CREATOR;
  }
  }
  public static class LauncherApps.ShortcutQuery {
    method @NonNull public android.content.pm.LauncherApps.ShortcutQuery setLocusIds(@Nullable java.util.List<android.content.LocusId>);
  }
  public class PackageInstaller {
  public class PackageInstaller {
    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setPermissionsResult(int, boolean);
    method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setPermissionsResult(int, boolean);
    field public static final int DATA_LOADER_TYPE_INCREMENTAL = 2; // 0x2
    field public static final int DATA_LOADER_TYPE_INCREMENTAL = 2; // 0x2
+6 −3
Original line number Original line Diff line number Diff line
@@ -20,6 +20,7 @@ import android.app.IApplicationThread;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.Intent;
import android.content.Intent;
import android.content.IntentSender;
import android.content.IntentSender;
import android.content.LocusId;
import android.content.pm.ActivityInfo;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.IOnAppsChangedListener;
import android.content.pm.IOnAppsChangedListener;
@@ -67,7 +68,8 @@ interface ILauncherApps {
            in UserHandle user);
            in UserHandle user);


    ParceledListSlice getShortcuts(String callingPackage, long changedSince, String packageName,
    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,
    void pinShortcuts(String callingPackage, String packageName, in List<String> shortcutIds,
            in UserHandle user);
            in UserHandle user);
    boolean startShortcut(String callingPackage, String packageName, String id,
    boolean startShortcut(String callingPackage, String packageName, String id,
@@ -92,7 +94,8 @@ interface ILauncherApps {
    ParceledListSlice getAllSessions(String callingPackage);
    ParceledListSlice getAllSessions(String callingPackage);


    void registerShortcutChangeCallback(String callingPackage, long changedSince,
    void registerShortcutChangeCallback(String callingPackage, long changedSince,
            String packageName, in List shortcutIds, in ComponentName componentName, int flags,
            String packageName, in List shortcutIds, in List<LocusId> locusIds,
            in IShortcutChangeCallback callback, int callbackId);
            in ComponentName componentName, int flags, in IShortcutChangeCallback callback,
            int callbackId);
    void unregisterShortcutChangeCallback(String callingPackage, int callbackId);
    void unregisterShortcutChangeCallback(String callingPackage, int callbackId);
}
}
+22 −4
Original line number Original line Diff line number Diff line
@@ -34,6 +34,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.IntentSender;
import android.content.IntentSender;
import android.content.LocusId;
import android.content.pm.PackageInstaller.SessionCallback;
import android.content.pm.PackageInstaller.SessionCallback;
import android.content.pm.PackageInstaller.SessionCallbackDelegate;
import android.content.pm.PackageInstaller.SessionCallbackDelegate;
import android.content.pm.PackageInstaller.SessionInfo;
import android.content.pm.PackageInstaller.SessionInfo;
@@ -414,6 +415,9 @@ public class LauncherApps {
        @Nullable
        @Nullable
        List<String> mShortcutIds;
        List<String> mShortcutIds;


        @Nullable
        List<LocusId> mLocusIds;

        @Nullable
        @Nullable
        ComponentName mActivity;
        ComponentName mActivity;


@@ -450,6 +454,19 @@ public class LauncherApps {
            return this;
            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.
         * If non-null, returns only shortcuts associated with the activity; i.e.
         * {@link ShortcutInfo}s whose {@link ShortcutInfo#getActivity()} are equal
         * {@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
            // changed callback, but that only returns shortcuts with the "key" information, so
            // that won't return disabled message.
            // that won't return disabled message.
            return maybeUpdateDisabledMessage(mService.getShortcuts(mContext.getPackageName(),
            return maybeUpdateDisabledMessage(mService.getShortcuts(mContext.getPackageName(),
                    query.mChangedSince, query.mPackage, query.mShortcutIds, query.mActivity,
                    query.mChangedSince, query.mPackage, query.mShortcutIds, query.mLocusIds,
                    query.mQueryFlags, user)
                    query.mActivity, query.mQueryFlags, user)
                    .getList());
                    .getList());
        } catch (RemoteException e) {
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
            throw e.rethrowFromSystemServer();
@@ -1680,8 +1697,9 @@ public class LauncherApps {
            mShortcutChangeCallbacks.put(callbackId, state);
            mShortcutChangeCallbacks.put(callbackId, state);
            try {
            try {
                mService.registerShortcutChangeCallback(mContext.getPackageName(),
                mService.registerShortcutChangeCallback(mContext.getPackageName(),
                        query.mChangedSince, query.mPackage, query.mShortcutIds, query.mActivity,
                        query.mChangedSince, query.mPackage, query.mShortcutIds, query.mLocusIds,
                        query.mQueryFlags, new ShortcutChangeCallbackProxy(state), callbackId);
                        query.mActivity, query.mQueryFlags, new ShortcutChangeCallbackProxy(state),
                        callbackId);
            } catch (RemoteException e) {
            } catch (RemoteException e) {
                throw e.rethrowFromSystemServer();
                throw e.rethrowFromSystemServer();
            }
            }
+3 −2
Original line number Original line Diff line number Diff line
@@ -23,6 +23,7 @@ import android.appwidget.AppWidgetProviderInfo;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.Intent;
import android.content.Intent;
import android.content.IntentSender;
import android.content.IntentSender;
import android.content.LocusId;
import android.content.pm.LauncherApps.ShortcutQuery;
import android.content.pm.LauncherApps.ShortcutQuery;
import android.os.Bundle;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
import android.os.ParcelFileDescriptor;
@@ -45,8 +46,8 @@ public abstract class ShortcutServiceInternal {
            getShortcuts(int launcherUserId,
            getShortcuts(int launcherUserId,
            @NonNull String callingPackage, long changedSince,
            @NonNull String callingPackage, long changedSince,
            @Nullable String packageName, @Nullable List<String> shortcutIds,
            @Nullable String packageName, @Nullable List<String> shortcutIds,
            @Nullable ComponentName componentName, @ShortcutQuery.QueryFlags int flags,
            @Nullable List<LocusId> locusIds, @Nullable ComponentName componentName,
            int userId, int callingPid, int callingUid);
            @ShortcutQuery.QueryFlags int flags, int userId, int callingPid, int callingUid);


    public abstract boolean
    public abstract boolean
            isPinnedByCaller(int launcherUserId, @NonNull String callingPackage,
            isPinnedByCaller(int launcherUserId, @NonNull String callingPackage,
+12 −6
Original line number Original line Diff line number Diff line
@@ -29,6 +29,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Context;
import android.content.Intent;
import android.content.Intent;
import android.content.IntentSender;
import android.content.IntentSender;
import android.content.LocusId;
import android.content.pm.ActivityInfo;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.ILauncherApps;
import android.content.pm.ILauncherApps;
@@ -662,8 +663,8 @@ public class LauncherAppsService extends SystemService {


        @Override
        @Override
        public ParceledListSlice getShortcuts(String callingPackage, long changedSince,
        public ParceledListSlice getShortcuts(String callingPackage, long changedSince,
                String packageName, List shortcutIds, ComponentName componentName, int flags,
                String packageName, List shortcutIds, List<LocusId> locusIds,
                UserHandle targetUser) {
                ComponentName componentName, int flags, UserHandle targetUser) {
            ensureShortcutPermission(callingPackage);
            ensureShortcutPermission(callingPackage);
            if (!canAccessProfile(targetUser.getIdentifier(), "Cannot get shortcuts")) {
            if (!canAccessProfile(targetUser.getIdentifier(), "Cannot get shortcuts")) {
                return new ParceledListSlice<>(Collections.EMPTY_LIST);
                return new ParceledListSlice<>(Collections.EMPTY_LIST);
@@ -672,19 +673,24 @@ public class LauncherAppsService extends SystemService {
                throw new IllegalArgumentException(
                throw new IllegalArgumentException(
                        "To query by shortcut ID, package name must also be set");
                        "To query by shortcut ID, package name must also be set");
            }
            }
            if (locusIds != null && packageName == null) {
                throw new IllegalArgumentException(
                        "To query by locus ID, package name must also be set");
            }


            // TODO(b/29399275): Eclipse compiler requires explicit List<ShortcutInfo> cast below.
            // TODO(b/29399275): Eclipse compiler requires explicit List<ShortcutInfo> cast below.
            return new ParceledListSlice<>((List<ShortcutInfo>)
            return new ParceledListSlice<>((List<ShortcutInfo>)
                    mShortcutServiceInternal.getShortcuts(getCallingUserId(),
                    mShortcutServiceInternal.getShortcuts(getCallingUserId(),
                            callingPackage, changedSince, packageName, shortcutIds,
                            callingPackage, changedSince, packageName, shortcutIds, locusIds,
                            componentName, flags, targetUser.getIdentifier(),
                            componentName, flags, targetUser.getIdentifier(),
                            injectBinderCallingPid(), injectBinderCallingUid()));
                            injectBinderCallingPid(), injectBinderCallingUid()));
        }
        }


        @Override
        @Override
        public void registerShortcutChangeCallback(String callingPackage, long changedSince,
        public void registerShortcutChangeCallback(String callingPackage, long changedSince,
                String packageName, List shortcutIds, ComponentName componentName, int flags,
                String packageName, List shortcutIds, List<LocusId> locusIds,
                IShortcutChangeCallback callback, int callbackId) {
                ComponentName componentName, int flags, IShortcutChangeCallback callback,
                int callbackId) {
        }
        }


        @Override
        @Override
@@ -1148,7 +1154,7 @@ public class LauncherAppsService extends SystemService {
                                mShortcutServiceInternal.getShortcuts(launcherUserId,
                                mShortcutServiceInternal.getShortcuts(launcherUserId,
                                        cookie.packageName,
                                        cookie.packageName,
                                        /* changedSince= */ 0, packageName, /* shortcutIds=*/ null,
                                        /* changedSince= */ 0, packageName, /* shortcutIds=*/ null,
                                        /* component= */ null,
                                        /* locusIds=*/ null, /* component= */ null,
                                        ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY
                                        ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY
                                        | ShortcutQuery.FLAG_MATCH_ALL_KINDS_WITH_ALL_PINNED
                                        | ShortcutQuery.FLAG_MATCH_ALL_KINDS_WITH_ALL_PINNED
                                        , userId, cookie.callingPid, cookie.callingUid);
                                        , userId, cookie.callingPid, cookie.callingUid);
Loading