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

Commit 443d3d0f authored by Anna Trostanetski's avatar Anna Trostanetski Committed by android-build-merger
Browse files

Merge "Add userId to the package name API."

am: dcc401b7

Change-Id: Ib1b52a3f1082ce6f6d6087080e3e1bc5677f5026
parents eef56a4e dcc401b7
Loading
Loading
Loading
Loading
+5 −3
Original line number Original line Diff line number Diff line
@@ -49,9 +49,10 @@ interface IPlatformCompat
     * you do not need to call this API directly. The change will be reported for you.
     * you do not need to call this API directly. The change will be reported for you.
     *
     *
     * @param changeId    The ID of the compatibility change taking effect.
     * @param changeId    The ID of the compatibility change taking effect.
     * @param userId      The ID of the user that the operation is done for.
     * @param packageName The package name of the app in question.
     * @param packageName The package name of the app in question.
     */
     */
     void reportChangeByPackageName(long changeId, in String packageName);
     void reportChangeByPackageName(long changeId, in String packageName, int userId);


    /**
    /**
     * Reports that a compatibility change is affecting an app process now.
     * Reports that a compatibility change is affecting an app process now.
@@ -86,7 +87,7 @@ interface IPlatformCompat
     * be called when implementing functionality on behalf of the affected app.
     * be called when implementing functionality on behalf of the affected app.
     *
     *
     * <p>Same as {@link #isChangeEnabled(long, ApplicationInfo)}, except it receives a package name
     * <p>Same as {@link #isChangeEnabled(long, ApplicationInfo)}, except it receives a package name
     * instead of an {@link ApplicationInfo}
     * and userId instead of an {@link ApplicationInfo}
     * object, and finds an app info object based on the package name. Returns {@code true} if
     * object, and finds an app info object based on the package name. Returns {@code true} if
     * there is no installed package by that name.
     * there is no installed package by that name.
     *
     *
@@ -100,9 +101,10 @@ interface IPlatformCompat
     *
     *
     * @param changeId    The ID of the compatibility change in question.
     * @param changeId    The ID of the compatibility change in question.
     * @param packageName The package name of the app in question.
     * @param packageName The package name of the app in question.
     * @param userId      The ID of the user that the operation is done for.
     * @return {@code true} if the change is enabled for the current app.
     * @return {@code true} if the change is enabled for the current app.
     */
     */
    boolean isChangeEnabledByPackageName(long changeId, in String packageName);
    boolean isChangeEnabledByPackageName(long changeId, in String packageName, int userId);


    /**
    /**
     * Query if a given compatibility change is enabled for an app process. This method should
     * Query if a given compatibility change is enabled for an app process. This method should
+4 −2
Original line number Original line Diff line number Diff line
@@ -33,9 +33,10 @@ interface IPlatformCompatNative
     * you do not need to call this API directly. The change will be reported for you.
     * you do not need to call this API directly. The change will be reported for you.
     *
     *
     * @param changeId    The ID of the compatibility change taking effect.
     * @param changeId    The ID of the compatibility change taking effect.
     * @param userId      The ID of the user that the operation is done for.
     * @param packageName The package name of the app in question.
     * @param packageName The package name of the app in question.
     */
     */
     void reportChangeByPackageName(long changeId, @utf8InCpp String packageName);
     void reportChangeByPackageName(long changeId, @utf8InCpp String packageName, int userId);


    /**
    /**
     * Reports that a compatibility change is affecting an app process now.
     * Reports that a compatibility change is affecting an app process now.
@@ -64,9 +65,10 @@ interface IPlatformCompatNative
     *
     *
     * @param changeId    The ID of the compatibility change in question.
     * @param changeId    The ID of the compatibility change in question.
     * @param packageName The package name of the app in question.
     * @param packageName The package name of the app in question.
     * @param userId      The ID of the user that the operation is done for.
     * @return {@code true} if the change is enabled for the current app.
     * @return {@code true} if the change is enabled for the current app.
     */
     */
    boolean isChangeEnabledByPackageName(long changeId, @utf8InCpp String packageName);
    boolean isChangeEnabledByPackageName(long changeId, @utf8InCpp String packageName, int userId);


    /**
    /**
     * Query if a given compatibility change is enabled for an app process. This method should
     * Query if a given compatibility change is enabled for an app process. This method should
+9 −9
Original line number Original line Diff line number Diff line
@@ -19,7 +19,7 @@ package com.android.server.compat;
import android.content.Context;
import android.content.Context;
import android.content.pm.ApplicationInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager;
import android.os.Process;
import android.os.UserHandle;
import android.util.Slog;
import android.util.Slog;
import android.util.StatsLog;
import android.util.StatsLog;


@@ -54,8 +54,8 @@ public class PlatformCompat extends IPlatformCompat.Stub {
    }
    }


    @Override
    @Override
    public void reportChangeByPackageName(long changeId, String packageName) {
    public void reportChangeByPackageName(long changeId, String packageName, int userId) {
        ApplicationInfo appInfo = getApplicationInfo(packageName);
        ApplicationInfo appInfo = getApplicationInfo(packageName, userId);
        if (appInfo == null) {
        if (appInfo == null) {
            return;
            return;
        }
        }
@@ -80,8 +80,8 @@ public class PlatformCompat extends IPlatformCompat.Stub {
    }
    }


    @Override
    @Override
    public boolean isChangeEnabledByPackageName(long changeId, String packageName) {
    public boolean isChangeEnabledByPackageName(long changeId, String packageName, int userId) {
        ApplicationInfo appInfo = getApplicationInfo(packageName);
        ApplicationInfo appInfo = getApplicationInfo(packageName, userId);
        if (appInfo == null) {
        if (appInfo == null) {
            return true;
            return true;
        }
        }
@@ -96,7 +96,8 @@ public class PlatformCompat extends IPlatformCompat.Stub {
        }
        }
        boolean enabled = true;
        boolean enabled = true;
        for (String packageName : packages) {
        for (String packageName : packages) {
            enabled = enabled && isChangeEnabledByPackageName(changeId, packageName);
            enabled = enabled && isChangeEnabledByPackageName(changeId, packageName,
                    UserHandle.getUserId(uid));
        }
        }
        return enabled;
        return enabled;
    }
    }
@@ -127,10 +128,9 @@ public class PlatformCompat extends IPlatformCompat.Stub {
        mChangeReporter.resetReportedChanges(appInfo.uid);
        mChangeReporter.resetReportedChanges(appInfo.uid);
    }
    }


    private ApplicationInfo getApplicationInfo(String packageName) {
    private ApplicationInfo getApplicationInfo(String packageName, int userId) {
        try {
        try {
            return mContext.getPackageManager().getApplicationInfoAsUser(packageName, 0,
            return mContext.getPackageManager().getApplicationInfoAsUser(packageName, 0, userId);
                    Process.myUid());
        } catch (PackageManager.NameNotFoundException e) {
        } catch (PackageManager.NameNotFoundException e) {
            Slog.e(TAG, "No installed package " + packageName);
            Slog.e(TAG, "No installed package " + packageName);
        }
        }
+4 −4
Original line number Original line Diff line number Diff line
@@ -29,8 +29,8 @@ public class PlatformCompatNative extends IPlatformCompatNative.Stub {
    }
    }


    @Override
    @Override
    public void reportChangeByPackageName(long changeId, String packageName) {
    public void reportChangeByPackageName(long changeId, String packageName, int userId) {
        mPlatformCompat.reportChangeByPackageName(changeId, packageName);
        mPlatformCompat.reportChangeByPackageName(changeId, packageName, userId);
    }
    }


    @Override
    @Override
@@ -39,8 +39,8 @@ public class PlatformCompatNative extends IPlatformCompatNative.Stub {
    }
    }


    @Override
    @Override
    public boolean isChangeEnabledByPackageName(long changeId, String packageName) {
    public boolean isChangeEnabledByPackageName(long changeId, String packageName, int userId) {
        return mPlatformCompat.isChangeEnabledByPackageName(changeId, packageName);
        return mPlatformCompat.isChangeEnabledByPackageName(changeId, packageName, userId);
    }
    }


    @Override
    @Override