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

Commit 454a9777 authored by Makoto Onuki's avatar Makoto Onuki Committed by Android (Google) Code Review
Browse files

Merge "Add client package name to WTF message"

parents c755fb64 3a2541e6
Loading
Loading
Loading
Loading
+15 −8
Original line number Diff line number Diff line
@@ -38,15 +38,21 @@ import java.util.List;
interface ILauncherApps {
    void addOnAppsChangedListener(String callingPackage, in IOnAppsChangedListener listener);
    void removeOnAppsChangedListener(in IOnAppsChangedListener listener);
    ParceledListSlice getLauncherActivities(String packageName, in UserHandle user);
    ActivityInfo resolveActivity(in ComponentName component, in UserHandle user);
    void startActivityAsUser(in ComponentName component, in Rect sourceBounds,
    ParceledListSlice getLauncherActivities(
            String callingPackage, String packageName, in UserHandle user);
    ActivityInfo resolveActivity(
            String callingPackage, in ComponentName component, in UserHandle user);
    void startActivityAsUser(String callingPackage,
            in ComponentName component, in Rect sourceBounds,
            in Bundle opts, in UserHandle user);
    void showAppDetailsAsUser(in ComponentName component, in Rect sourceBounds,
    void showAppDetailsAsUser(
            String callingPackage, in ComponentName component, in Rect sourceBounds,
            in Bundle opts, in UserHandle user);
    boolean isPackageEnabled(String packageName, in UserHandle user);
    boolean isActivityEnabled(in ComponentName component, in UserHandle user);
    ApplicationInfo getApplicationInfo(String packageName, int flags, in UserHandle user);
    boolean isPackageEnabled(String callingPackage, String packageName, in UserHandle user);
    boolean isActivityEnabled(
            String callingPackage, in ComponentName component, in UserHandle user);
    ApplicationInfo getApplicationInfo(
            String callingPackage, String packageName, int flags, in UserHandle user);

    ParceledListSlice getShortcuts(String callingPackage, long changedSince, String packageName,
            in List shortcutIds, in ComponentName componentName, int flags, in UserHandle user);
@@ -62,7 +68,8 @@ interface ILauncherApps {

    boolean hasShortcutHostPermission(String callingPackage);

    ParceledListSlice getShortcutConfigActivities(String packageName, in UserHandle user);
    ParceledListSlice getShortcutConfigActivities(
            String callingPackage, String packageName, in UserHandle user);
    IntentSender getShortcutConfigActivityIntent(String callingPackage, in ComponentName component,
            in UserHandle user);
}
+13 −8
Original line number Diff line number Diff line
@@ -407,7 +407,8 @@ public class LauncherApps {
     */
    public List<LauncherActivityInfo> getActivityList(String packageName, UserHandle user) {
        try {
            return convertToActivityList(mService.getLauncherActivities(packageName, user), user);
            return convertToActivityList(mService.getLauncherActivities(mContext.getPackageName(),
                    packageName, user), user);
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
@@ -423,7 +424,8 @@ public class LauncherApps {
     */
    public LauncherActivityInfo resolveActivity(Intent intent, UserHandle user) {
        try {
            ActivityInfo ai = mService.resolveActivity(intent.getComponent(), user);
            ActivityInfo ai = mService.resolveActivity(mContext.getPackageName(),
                    intent.getComponent(), user);
            if (ai != null) {
                LauncherActivityInfo info = new LauncherActivityInfo(mContext, ai, user);
                return info;
@@ -448,7 +450,8 @@ public class LauncherApps {
            Log.i(TAG, "StartMainActivity " + component + " " + user.getIdentifier());
        }
        try {
            mService.startActivityAsUser(component, sourceBounds, opts, user);
            mService.startActivityAsUser(mContext.getPackageName(),
                    component, sourceBounds, opts, user);
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
@@ -466,7 +469,8 @@ public class LauncherApps {
    public void startAppDetailsActivity(ComponentName component, UserHandle user,
            Rect sourceBounds, Bundle opts) {
        try {
            mService.showAppDetailsAsUser(component, sourceBounds, opts, user);
            mService.showAppDetailsAsUser(mContext.getPackageName(),
                    component, sourceBounds, opts, user);
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
@@ -486,7 +490,8 @@ public class LauncherApps {
    public List<LauncherActivityInfo> getShortcutConfigActivityList(@Nullable String packageName,
            @NonNull UserHandle user) {
        try {
            return convertToActivityList(mService.getShortcutConfigActivities(packageName, user),
            return convertToActivityList(mService.getShortcutConfigActivities(
                    mContext.getPackageName(), packageName, user),
                    user);
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
@@ -549,7 +554,7 @@ public class LauncherApps {
     */
    public boolean isPackageEnabled(String packageName, UserHandle user) {
        try {
            return mService.isPackageEnabled(packageName, user);
            return mService.isPackageEnabled(mContext.getPackageName(), packageName, user);
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
@@ -569,7 +574,7 @@ public class LauncherApps {
    public ApplicationInfo getApplicationInfo(String packageName, @ApplicationInfoFlags int flags,
            UserHandle user) {
        try {
            return mService.getApplicationInfo(packageName, flags, user);
            return mService.getApplicationInfo(mContext.getPackageName(), packageName, flags, user);
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
@@ -585,7 +590,7 @@ public class LauncherApps {
     */
    public boolean isActivityEnabled(ComponentName component, UserHandle user) {
        try {
            return mService.isActivityEnabled(component, user);
            return mService.isActivityEnabled(mContext.getPackageName(), component, user);
        } catch (RemoteException re) {
            throw re.rethrowFromSystemServer();
        }
+34 −27
Original line number Diff line number Diff line
@@ -219,11 +219,12 @@ public class LauncherAppsService extends SystemService {
        /**
         * Checks if the caller is in the same group as the userToCheck.
         */
        private void ensureInUserProfiles(UserHandle userToCheck, String message) {
            ensureInUserProfiles(userToCheck.getIdentifier(), message);
        private void ensureInUserProfiles(
                String callingPackage, UserHandle userToCheck, String message) {
            ensureInUserProfiles(callingPackage, userToCheck.getIdentifier(), message);
        }

        private void ensureInUserProfiles(int targetUserId, String message) {
        private void ensureInUserProfiles(String callingPackage, int targetUserId, String message) {
            final int callingUserId = injectCallingUserId();

            if (targetUserId == callingUserId) return;
@@ -236,8 +237,8 @@ public class LauncherAppsService extends SystemService {
                    // throw new SecurityException(message + " for another profile " + targetUserId);

                    // TODO: Report caller package name.
                    Slog.wtfStack(TAG, message + " for another profile " + targetUserId
                            + " from " + callingUserId);
                    Slog.wtfStack(TAG, message + " by " + callingPackage + " for another profile "
                            + targetUserId + " from " + callingUserId);
                }

                UserInfo targetUserInfo = mUm.getUserInfo(targetUserId);
@@ -286,9 +287,10 @@ public class LauncherAppsService extends SystemService {
        }

        @Override
        public ParceledListSlice<ResolveInfo> getLauncherActivities(String packageName, UserHandle user)
        public ParceledListSlice<ResolveInfo> getLauncherActivities(String callingPackage,
                String packageName, UserHandle user)
                throws RemoteException {
            return queryActivitiesForUser(
            return queryActivitiesForUser(callingPackage,
                    new Intent(Intent.ACTION_MAIN)
                            .addCategory(Intent.CATEGORY_LAUNCHER)
                            .setPackage(packageName),
@@ -296,9 +298,10 @@ public class LauncherAppsService extends SystemService {
        }

        @Override
        public ActivityInfo resolveActivity(ComponentName component, UserHandle user)
        public ActivityInfo resolveActivity(
                String callingPackage, ComponentName component, UserHandle user)
                throws RemoteException {
            ensureInUserProfiles(user, "Cannot resolve activity");
            ensureInUserProfiles(callingPackage, user, "Cannot resolve activity");
            if (!isUserEnabled(user)) {
                return null;
            }
@@ -316,15 +319,16 @@ public class LauncherAppsService extends SystemService {
        }

        @Override
        public ParceledListSlice getShortcutConfigActivities(String packageName, UserHandle user)
        public ParceledListSlice getShortcutConfigActivities(
                String callingPackage, String packageName, UserHandle user)
                throws RemoteException {
            return queryActivitiesForUser(
            return queryActivitiesForUser(callingPackage,
                    new Intent(Intent.ACTION_CREATE_SHORTCUT).setPackage(packageName), user);
        }

        private ParceledListSlice<ResolveInfo> queryActivitiesForUser(Intent intent,
                UserHandle user) {
            ensureInUserProfiles(user, "Cannot retrieve activities");
        private ParceledListSlice<ResolveInfo> queryActivitiesForUser(String callingPackage,
                Intent intent, UserHandle user) {
            ensureInUserProfiles(callingPackage, user, "Cannot retrieve activities");
            if (!isUserEnabled(user)) {
                return null;
            }
@@ -363,9 +367,9 @@ public class LauncherAppsService extends SystemService {
        }

        @Override
        public boolean isPackageEnabled(String packageName, UserHandle user)
        public boolean isPackageEnabled(String callingPackage, String packageName, UserHandle user)
                throws RemoteException {
            ensureInUserProfiles(user, "Cannot check package");
            ensureInUserProfiles(callingPackage, user, "Cannot check package");
            if (!isUserEnabled(user)) {
                return false;
            }
@@ -384,9 +388,10 @@ public class LauncherAppsService extends SystemService {
        }

        @Override
        public ApplicationInfo getApplicationInfo(String packageName, int flags, UserHandle user)
        public ApplicationInfo getApplicationInfo(
                String callingPackage, String packageName, int flags, UserHandle user)
                throws RemoteException {
            ensureInUserProfiles(user, "Cannot check package");
            ensureInUserProfiles(callingPackage, user, "Cannot check package");
            if (!isUserEnabled(user)) {
                return null;
            }
@@ -408,7 +413,7 @@ public class LauncherAppsService extends SystemService {

        private void ensureShortcutPermission(@NonNull String callingPackage, int userId) {
            verifyCallingPackage(callingPackage);
            ensureInUserProfiles(userId, "Cannot access shortcuts");
            ensureInUserProfiles(callingPackage, userId, "Cannot access shortcuts");

            if (!mShortcutServiceInternal.hasShortcutHostPermission(getCallingUserId(),
                    callingPackage)) {
@@ -484,7 +489,7 @@ public class LauncherAppsService extends SystemService {
        public boolean startShortcut(String callingPackage, String packageName, String shortcutId,
                Rect sourceBounds, Bundle startActivityOptions, int userId) {
            verifyCallingPackage(callingPackage);
            ensureInUserProfiles(userId, "Cannot start activity");
            ensureInUserProfiles(callingPackage, userId, "Cannot start activity");

            if (!isUserEnabled(userId)) {
                throw new IllegalStateException("Cannot start a shortcut for disabled profile "
@@ -535,9 +540,10 @@ public class LauncherAppsService extends SystemService {
        }

        @Override
        public boolean isActivityEnabled(ComponentName component, UserHandle user)
        public boolean isActivityEnabled(
                String callingPackage, ComponentName component, UserHandle user)
                throws RemoteException {
            ensureInUserProfiles(user, "Cannot check component");
            ensureInUserProfiles(callingPackage , user, "Cannot check component");
            if (!isUserEnabled(user)) {
                return false;
            }
@@ -556,9 +562,10 @@ public class LauncherAppsService extends SystemService {
        }

        @Override
        public void startActivityAsUser(ComponentName component, Rect sourceBounds,
        public void startActivityAsUser(String callingPackage,
                ComponentName component, Rect sourceBounds,
                Bundle opts, UserHandle user) throws RemoteException {
            ensureInUserProfiles(user, "Cannot start activity");
            ensureInUserProfiles(callingPackage, user, "Cannot start activity");
            if (!isUserEnabled(user)) {
                throw new IllegalStateException("Cannot start activity for disabled profile "  + user);
            }
@@ -609,9 +616,9 @@ public class LauncherAppsService extends SystemService {
        }

        @Override
        public void showAppDetailsAsUser(ComponentName component, Rect sourceBounds,
                Bundle opts, UserHandle user) throws RemoteException {
            ensureInUserProfiles(user, "Cannot show app details");
        public void showAppDetailsAsUser(String callingPackage, ComponentName component,
                Rect sourceBounds, Bundle opts, UserHandle user) throws RemoteException {
            ensureInUserProfiles(callingPackage, user, "Cannot show app details");
            if (!isUserEnabled(user)) {
                throw new IllegalStateException("Cannot show app details for disabled profile "
                        + user);