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

Commit 1549391e authored by Naomi Musgrave's avatar Naomi Musgrave Committed by Android (Google) Code Review
Browse files

Merge "WMS retrieves uid for the package based on the linux user" into tm-qpr-dev

parents 6058b731 2f88f7a9
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -727,9 +727,8 @@ interface IWindowManager
     * If invoked through a package other than a launcher app, returns an empty list.
     *
     * @param displayId the id of the logical display
     * @param packageName the name of the calling package
     */
    List<DisplayInfo> getPossibleDisplayInfo(int displayId, String packageName);
    List<DisplayInfo> getPossibleDisplayInfo(int displayId);

    /**
     * Called to show global actions.
+1 −1
Original line number Diff line number Diff line
@@ -357,7 +357,7 @@ public final class WindowManagerImpl implements WindowManager {
        List<DisplayInfo> possibleDisplayInfos;
        try {
            possibleDisplayInfos = WindowManagerGlobal.getWindowManagerService()
                    .getPossibleDisplayInfo(displayId, mContext.getPackageName());
                    .getPossibleDisplayInfo(displayId);
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
+4 −29
Original line number Diff line number Diff line
@@ -8878,14 +8878,14 @@ public class WindowManagerService extends IWindowManager.Stub
    }

    @Override
    public List<DisplayInfo> getPossibleDisplayInfo(int displayId, String packageName) {
    public List<DisplayInfo> getPossibleDisplayInfo(int displayId) {
        final int callingUid = Binder.getCallingUid();
        final long origId = Binder.clearCallingIdentity();
        try {
            synchronized (mGlobalLock) {
                if (packageName == null || !isRecentsComponent(packageName, callingUid)) {
                    Slog.e(TAG, "Unable to verify uid for package " + packageName
                            + " for getPossibleMaximumWindowMetrics");
                if (!mAtmService.isCallerRecents(callingUid)) {
                    Slog.e(TAG, "Unable to verify uid for getPossibleDisplayInfo"
                            + " on uid " + callingUid);
                    return new ArrayList<>();
                }

@@ -8903,31 +8903,6 @@ public class WindowManagerService extends IWindowManager.Stub
        return mPossibleDisplayInfoMapper.getPossibleDisplayInfos(displayId);
    }

    /**
     * Returns {@code true} when the calling package is the recents component.
     */
    boolean isRecentsComponent(@NonNull String callingPackageName, int callingUid) {
        String recentsPackage;
        try {
            String recentsComponent = mContext.getResources().getString(
                    R.string.config_recentsComponentName);
            if (recentsComponent == null) {
                return false;
            }
            recentsPackage = ComponentName.unflattenFromString(recentsComponent).getPackageName();
        } catch (Resources.NotFoundException e) {
            Slog.e(TAG, "Unable to verify if recents component", e);
            return false;
        }
        try {
            return callingUid == mContext.getPackageManager().getPackageUid(callingPackageName, 0)
                    && callingPackageName.equals(recentsPackage);
        } catch (PackageManager.NameNotFoundException e) {
            Slog.e(TAG, "Unable to verify if recents component", e);
            return false;
        }
    }

    void grantEmbeddedWindowFocus(Session session, IBinder focusToken, boolean grantFocus) {
        synchronized (mGlobalLock) {
            final EmbeddedWindowController.EmbeddedWindow embeddedWindow =