Merge "Add userId to the package name API."

am: dcc401b7b7

Change-Id: Ib1b52a3f1082ce6f6d6087080e3e1bc5677f5026
This commit is contained in:
Anna Trostanetski
2019-10-24 05:53:50 -07:00
committed by android-build-merger
4 changed files with 22 additions and 18 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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);
} }

View File

@@ -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