summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/ActivityThread.java45
-rw-r--r--core/java/android/app/ClientTransactionHandler.java4
-rw-r--r--core/java/android/app/IApplicationThread.aidl5
-rw-r--r--core/java/android/app/servertransaction/LaunchActivityItem.java19
-rw-r--r--core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java4
-rw-r--r--core/tests/coretests/src/android/app/servertransaction/TestUtils.java9
-rw-r--r--core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java7
-rw-r--r--core/tests/mockingcoretests/src/android/app/activity/ActivityThreadClientTest.java4
-rw-r--r--services/core/java/com/android/server/am/ActiveServices.java2
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java7
-rw-r--r--services/core/java/com/android/server/am/BroadcastQueue.java2
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java5
-rw-r--r--services/core/java/com/android/server/wm/ActivityTaskSupervisor.java3
-rw-r--r--services/usage/java/com/android/server/usage/UsageStatsService.java19
14 files changed, 54 insertions, 81 deletions
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 2a83cbddd3dc..b383d7daafd0 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -374,6 +374,7 @@ public final class ActivityThread extends ClientTransactionHandler
int mCurDefaultDisplayDpi;
@UnsupportedAppUsage
boolean mDensityCompatMode;
+ private CompatibilityInfo mCompatibilityInfo;
@UnsupportedAppUsage(trackingBug = 176961850, maxTargetSdk = Build.VERSION_CODES.R,
publicAlternatives = "Use {@code Context#getResources()#getConfiguration()} instead.")
Configuration mConfiguration;
@@ -612,7 +613,7 @@ public final class ActivityThread extends ClientTransactionHandler
}
public ActivityClientRecord(IBinder token, Intent intent, int ident,
- ActivityInfo info, Configuration overrideConfig, CompatibilityInfo compatInfo,
+ ActivityInfo info, Configuration overrideConfig,
String referrer, IVoiceInteractor voiceInteractor, Bundle state,
PersistableBundle persistentState, List<ResultInfo> pendingResults,
List<ReferrerIntent> pendingNewIntents, ActivityOptions activityOptions,
@@ -627,7 +628,6 @@ public final class ActivityThread extends ClientTransactionHandler
this.referrer = referrer;
this.voiceInteractor = voiceInteractor;
this.activityInfo = info;
- this.compatInfo = compatInfo;
this.state = state;
this.persistentState = persistentState;
this.pendingResults = pendingResults;
@@ -635,8 +635,7 @@ public final class ActivityThread extends ClientTransactionHandler
this.isForward = isForward;
this.profilerInfo = profilerInfo;
this.overrideConfig = overrideConfig;
- this.packageInfo = client.getPackageInfoNoCheck(activityInfo.applicationInfo,
- compatInfo);
+ this.packageInfo = client.getPackageInfoNoCheck(activityInfo.applicationInfo);
mActivityOptions = activityOptions;
mLaunchedFromBubble = launchedFromBubble;
mInitialTaskFragmentToken = initialTaskFragmentToken;
@@ -804,7 +803,6 @@ public final class ActivityThread extends ClientTransactionHandler
static final class CreateBackupAgentData {
ApplicationInfo appInfo;
- CompatibilityInfo compatInfo;
int backupMode;
int userId;
int operationType;
@@ -1038,15 +1036,13 @@ public final class ActivityThread extends ClientTransactionHandler
ReceiverData r = new ReceiverData(intent, resultCode, data, extras,
sync, false, mAppThread.asBinder(), sendingUser);
r.info = info;
- r.compatInfo = compatInfo;
sendMessage(H.RECEIVER, r);
}
public final void scheduleCreateBackupAgent(ApplicationInfo app,
- CompatibilityInfo compatInfo, int backupMode, int userId, int operationType) {
+ int backupMode, int userId, int operationType) {
CreateBackupAgentData d = new CreateBackupAgentData();
d.appInfo = app;
- d.compatInfo = compatInfo;
d.backupMode = backupMode;
d.userId = userId;
d.operationType = operationType;
@@ -1054,11 +1050,9 @@ public final class ActivityThread extends ClientTransactionHandler
sendMessage(H.CREATE_BACKUP_AGENT, d);
}
- public final void scheduleDestroyBackupAgent(ApplicationInfo app,
- CompatibilityInfo compatInfo, int userId) {
+ public final void scheduleDestroyBackupAgent(ApplicationInfo app, int userId) {
CreateBackupAgentData d = new CreateBackupAgentData();
d.appInfo = app;
- d.compatInfo = compatInfo;
d.userId = userId;
sendMessage(H.DESTROY_BACKUP_AGENT, d);
@@ -1070,7 +1064,6 @@ public final class ActivityThread extends ClientTransactionHandler
CreateServiceData s = new CreateServiceData();
s.token = token;
s.info = info;
- s.compatInfo = compatInfo;
sendMessage(H.CREATE_SERVICE, s);
}
@@ -2577,16 +2570,16 @@ public final class ActivityThread extends ClientTransactionHandler
registerPackage);
}
- @Override
@UnsupportedAppUsage
public final LoadedApk getPackageInfoNoCheck(ApplicationInfo ai,
CompatibilityInfo compatInfo) {
return getPackageInfo(ai, compatInfo, null, false, true, false);
}
- private LoadedApk getPackageInfoNoCheck(ApplicationInfo ai, CompatibilityInfo compatInfo,
- boolean isSdkSandbox) {
- return getPackageInfo(ai, compatInfo, null, false, true, false, isSdkSandbox);
+ @Override
+ public LoadedApk getPackageInfoNoCheck(ApplicationInfo ai) {
+ return getPackageInfo(ai, mCompatibilityInfo, null /* baseLoader */,
+ false /* securityViolation */, true /* includeCode */, false /* registerPackage */);
}
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
@@ -3538,7 +3531,7 @@ public final class ActivityThread extends ClientTransactionHandler
private Activity performLaunchActivity(ActivityClientRecord r, Intent customIntent) {
ActivityInfo aInfo = r.activityInfo;
if (r.packageInfo == null) {
- r.packageInfo = getPackageInfo(aInfo.applicationInfo, r.compatInfo,
+ r.packageInfo = getPackageInfo(aInfo.applicationInfo, mCompatibilityInfo,
Context.CONTEXT_INCLUDE_CODE);
}
@@ -4279,8 +4272,7 @@ public final class ActivityThread extends ClientTransactionHandler
String component = data.intent.getComponent().getClassName();
- LoadedApk packageInfo = getPackageInfoNoCheck(
- data.info.applicationInfo, data.compatInfo);
+ final LoadedApk packageInfo = getPackageInfoNoCheck(data.info.applicationInfo);
IActivityManager mgr = ActivityManager.getService();
@@ -4366,7 +4358,7 @@ public final class ActivityThread extends ClientTransactionHandler
unscheduleGcIdler();
// instantiate the BackupAgent class named in the manifest
- LoadedApk packageInfo = getPackageInfoNoCheck(data.appInfo, data.compatInfo);
+ final LoadedApk packageInfo = getPackageInfoNoCheck(data.appInfo);
String packageName = packageInfo.mPackageName;
if (packageName == null) {
Slog.d(TAG, "Asked to create backup agent for nonexistent package");
@@ -4439,7 +4431,7 @@ public final class ActivityThread extends ClientTransactionHandler
private void handleDestroyBackupAgent(CreateBackupAgentData data) {
if (DEBUG_BACKUP) Slog.v(TAG, "handleDestroyBackupAgent: " + data);
- LoadedApk packageInfo = getPackageInfoNoCheck(data.appInfo, data.compatInfo);
+ final LoadedApk packageInfo = getPackageInfoNoCheck(data.appInfo);
String packageName = packageInfo.mPackageName;
ArrayMap<String, BackupAgent> backupAgents = getBackupAgentsForUser(data.userId);
BackupAgent agent = backupAgents.get(packageName);
@@ -4471,8 +4463,7 @@ public final class ActivityThread extends ClientTransactionHandler
// we are back active so skip it.
unscheduleGcIdler();
- LoadedApk packageInfo = getPackageInfoNoCheck(
- data.info.applicationInfo, data.compatInfo);
+ final LoadedApk packageInfo = getPackageInfoNoCheck(data.info.applicationInfo);
Service service = null;
try {
if (localLOGV) Slog.v(TAG, "Creating service " + data.info.name);
@@ -5306,6 +5297,7 @@ public final class ActivityThread extends ClientTransactionHandler
}
private void handleUpdatePackageCompatibilityInfo(UpdateCompatibilityData data) {
+ mCompatibilityInfo = data.info;
LoadedApk apk = peekPackageInfo(data.pkg, false);
if (apk != null) {
apk.setCompatibilityInfo(data.info);
@@ -6486,6 +6478,7 @@ public final class ActivityThread extends ClientTransactionHandler
mConfigurationController.setConfiguration(data.config);
mConfigurationController.setCompatConfiguration(data.config);
mConfiguration = mConfigurationController.getConfiguration();
+ mCompatibilityInfo = data.compatInfo;
mProfiler = new Profiler();
String agent = null;
@@ -6569,7 +6562,9 @@ public final class ActivityThread extends ClientTransactionHandler
}
final boolean isSdkSandbox = data.sdkSandboxClientAppPackage != null;
- data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo, isSdkSandbox);
+ data.info = getPackageInfo(data.appInfo, mCompatibilityInfo, null /* baseLoader */,
+ false /* securityViolation */, true /* includeCode */,
+ false /* registerPackage */, isSdkSandbox);
if (isSdkSandbox) {
data.info.setSdkSandboxStorage(data.sdkSandboxClientAppVolumeUuid,
data.sdkSandboxClientAppPackage);
@@ -6844,7 +6839,7 @@ public final class ActivityThread extends ClientTransactionHandler
private void handleInstrumentWithoutRestart(AppBindData data) {
try {
data.compatInfo = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO;
- data.info = getPackageInfoNoCheck(data.appInfo, data.compatInfo);
+ data.info = getPackageInfoNoCheck(data.appInfo);
mInstrumentingWithoutRestart = true;
final InstrumentationInfo ii = prepareInstrumentation(data);
final ContextImpl appContext =
diff --git a/core/java/android/app/ClientTransactionHandler.java b/core/java/android/app/ClientTransactionHandler.java
index 65e6ab7a2137..389da2d094d5 100644
--- a/core/java/android/app/ClientTransactionHandler.java
+++ b/core/java/android/app/ClientTransactionHandler.java
@@ -23,7 +23,6 @@ import android.app.servertransaction.PendingTransactionActions;
import android.app.servertransaction.TransactionExecutor;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
-import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.os.IBinder;
import android.util.MergedConfiguration;
@@ -180,8 +179,7 @@ public abstract class ClientTransactionHandler {
PendingTransactionActions pendingActions, ActivityOptions activityOptions);
/** Get package info. */
- public abstract LoadedApk getPackageInfoNoCheck(ApplicationInfo ai,
- CompatibilityInfo compatInfo);
+ public abstract LoadedApk getPackageInfoNoCheck(ApplicationInfo ai);
/** Deliver app configuration change notification. */
public abstract void handleConfigurationChanged(Configuration config);
diff --git a/core/java/android/app/IApplicationThread.aidl b/core/java/android/app/IApplicationThread.aidl
index 75ad363a2668..843b6846d053 100644
--- a/core/java/android/app/IApplicationThread.aidl
+++ b/core/java/android/app/IApplicationThread.aidl
@@ -102,10 +102,9 @@ oneway interface IApplicationThread {
void scheduleLowMemory();
void profilerControl(boolean start, in ProfilerInfo profilerInfo, int profileType);
void setSchedulingGroup(int group);
- void scheduleCreateBackupAgent(in ApplicationInfo app, in CompatibilityInfo compatInfo,
+ void scheduleCreateBackupAgent(in ApplicationInfo app,
int backupMode, int userId, int operationType);
- void scheduleDestroyBackupAgent(in ApplicationInfo app,
- in CompatibilityInfo compatInfo, int userId);
+ void scheduleDestroyBackupAgent(in ApplicationInfo app, int userId);
void scheduleOnNewActivityOptions(IBinder token, in Bundle options);
void scheduleSuicide();
void dispatchPackageBroadcast(int cmd, in String[] packages);
diff --git a/core/java/android/app/servertransaction/LaunchActivityItem.java b/core/java/android/app/servertransaction/LaunchActivityItem.java
index 076dbef9ebc4..03d6e27d6a8d 100644
--- a/core/java/android/app/servertransaction/LaunchActivityItem.java
+++ b/core/java/android/app/servertransaction/LaunchActivityItem.java
@@ -30,7 +30,6 @@ import android.app.ResultInfo;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Intent;
import android.content.pm.ActivityInfo;
-import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.os.BaseBundle;
import android.os.Bundle;
@@ -58,7 +57,6 @@ public class LaunchActivityItem extends ClientTransactionItem {
private ActivityInfo mInfo;
private Configuration mCurConfig;
private Configuration mOverrideConfig;
- private CompatibilityInfo mCompatInfo;
private String mReferrer;
private IVoiceInteractor mVoiceInteractor;
private int mProcState;
@@ -94,7 +92,7 @@ public class LaunchActivityItem extends ClientTransactionItem {
PendingTransactionActions pendingActions) {
Trace.traceBegin(TRACE_TAG_ACTIVITY_MANAGER, "activityStart");
ActivityClientRecord r = new ActivityClientRecord(token, mIntent, mIdent, mInfo,
- mOverrideConfig, mCompatInfo, mReferrer, mVoiceInteractor, mState, mPersistentState,
+ mOverrideConfig, mReferrer, mVoiceInteractor, mState, mPersistentState,
mPendingResults, mPendingNewIntents, mActivityOptions, mIsForward, mProfilerInfo,
client, mAssistToken, mShareableActivityToken, mLaunchedFromBubble,
mTaskFragmentToken);
@@ -115,7 +113,7 @@ public class LaunchActivityItem extends ClientTransactionItem {
/** Obtain an instance initialized with provided params. */
public static LaunchActivityItem obtain(Intent intent, int ident, ActivityInfo info,
- Configuration curConfig, Configuration overrideConfig, CompatibilityInfo compatInfo,
+ Configuration curConfig, Configuration overrideConfig,
String referrer, IVoiceInteractor voiceInteractor, int procState, Bundle state,
PersistableBundle persistentState, List<ResultInfo> pendingResults,
List<ReferrerIntent> pendingNewIntents, ActivityOptions activityOptions,
@@ -126,7 +124,7 @@ public class LaunchActivityItem extends ClientTransactionItem {
if (instance == null) {
instance = new LaunchActivityItem();
}
- setValues(instance, intent, ident, info, curConfig, overrideConfig, compatInfo, referrer,
+ setValues(instance, intent, ident, info, curConfig, overrideConfig, referrer,
voiceInteractor, procState, state, persistentState, pendingResults,
pendingNewIntents, activityOptions, isForward, profilerInfo, assistToken,
activityClientController, shareableActivityToken,
@@ -137,7 +135,7 @@ public class LaunchActivityItem extends ClientTransactionItem {
@Override
public void recycle() {
- setValues(this, null, 0, null, null, null, null, null, null, 0, null, null, null, null,
+ setValues(this, null, 0, null, null, null, null, null, 0, null, null, null, null,
null, false, null, null, null, null, false, null);
ObjectPool.recycle(this);
}
@@ -153,7 +151,6 @@ public class LaunchActivityItem extends ClientTransactionItem {
dest.writeTypedObject(mInfo, flags);
dest.writeTypedObject(mCurConfig, flags);
dest.writeTypedObject(mOverrideConfig, flags);
- dest.writeTypedObject(mCompatInfo, flags);
dest.writeString(mReferrer);
dest.writeStrongInterface(mVoiceInteractor);
dest.writeInt(mProcState);
@@ -175,8 +172,7 @@ public class LaunchActivityItem extends ClientTransactionItem {
private LaunchActivityItem(Parcel in) {
setValues(this, in.readTypedObject(Intent.CREATOR), in.readInt(),
in.readTypedObject(ActivityInfo.CREATOR), in.readTypedObject(Configuration.CREATOR),
- in.readTypedObject(Configuration.CREATOR),
- in.readTypedObject(CompatibilityInfo.CREATOR), in.readString(),
+ in.readTypedObject(Configuration.CREATOR), in.readString(),
IVoiceInteractor.Stub.asInterface(in.readStrongBinder()), in.readInt(),
in.readBundle(getClass().getClassLoader()),
in.readPersistableBundle(getClass().getClassLoader()),
@@ -216,7 +212,6 @@ public class LaunchActivityItem extends ClientTransactionItem {
return intentsEqual && mIdent == other.mIdent
&& activityInfoEqual(other.mInfo) && Objects.equals(mCurConfig, other.mCurConfig)
&& Objects.equals(mOverrideConfig, other.mOverrideConfig)
- && Objects.equals(mCompatInfo, other.mCompatInfo)
&& Objects.equals(mReferrer, other.mReferrer)
&& mProcState == other.mProcState && areBundlesEqualRoughly(mState, other.mState)
&& areBundlesEqualRoughly(mPersistentState, other.mPersistentState)
@@ -237,7 +232,6 @@ public class LaunchActivityItem extends ClientTransactionItem {
result = 31 * result + mIdent;
result = 31 * result + Objects.hashCode(mCurConfig);
result = 31 * result + Objects.hashCode(mOverrideConfig);
- result = 31 * result + Objects.hashCode(mCompatInfo);
result = 31 * result + Objects.hashCode(mReferrer);
result = 31 * result + Objects.hashCode(mProcState);
result = 31 * result + getRoughBundleHashCode(mState);
@@ -292,7 +286,7 @@ public class LaunchActivityItem extends ClientTransactionItem {
// Using the same method to set and clear values to make sure we don't forget anything
private static void setValues(LaunchActivityItem instance, Intent intent, int ident,
ActivityInfo info, Configuration curConfig, Configuration overrideConfig,
- CompatibilityInfo compatInfo, String referrer, IVoiceInteractor voiceInteractor,
+ String referrer, IVoiceInteractor voiceInteractor,
int procState, Bundle state, PersistableBundle persistentState,
List<ResultInfo> pendingResults, List<ReferrerIntent> pendingNewIntents,
ActivityOptions activityOptions, boolean isForward, ProfilerInfo profilerInfo,
@@ -303,7 +297,6 @@ public class LaunchActivityItem extends ClientTransactionItem {
instance.mInfo = info;
instance.mCurConfig = curConfig;
instance.mOverrideConfig = overrideConfig;
- instance.mCompatInfo = compatInfo;
instance.mReferrer = referrer;
instance.mVoiceInteractor = voiceInteractor;
instance.mProcState = procState;
diff --git a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
index 50639be57f22..0a5a4d5a9adb 100644
--- a/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/ObjectPoolTests.java
@@ -32,7 +32,6 @@ import android.app.servertransaction.TestUtils.LaunchActivityItemBuilder;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
-import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.os.Binder;
import android.os.Bundle;
@@ -140,7 +139,6 @@ public class ObjectPoolTests {
activityInfo.name = "name";
Configuration overrideConfig = new Configuration();
overrideConfig.assetsSeq = 5;
- CompatibilityInfo compat = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO;
String referrer = "referrer";
int procState = 4;
Bundle bundle = new Bundle();
@@ -152,7 +150,7 @@ public class ObjectPoolTests {
Supplier<LaunchActivityItem> itemSupplier = () -> new LaunchActivityItemBuilder()
.setIntent(intent).setIdent(ident).setInfo(activityInfo).setCurConfig(config())
- .setOverrideConfig(overrideConfig).setCompatInfo(compat).setReferrer(referrer)
+ .setOverrideConfig(overrideConfig).setReferrer(referrer)
.setProcState(procState).setState(bundle).setPersistentState(persistableBundle)
.setPendingResults(resultInfoList()).setPendingNewIntents(referrerIntentList())
.setIsForward(true).setAssistToken(assistToken)
diff --git a/core/tests/coretests/src/android/app/servertransaction/TestUtils.java b/core/tests/coretests/src/android/app/servertransaction/TestUtils.java
index 26d9628ba55b..2cd890cd9d18 100644
--- a/core/tests/coretests/src/android/app/servertransaction/TestUtils.java
+++ b/core/tests/coretests/src/android/app/servertransaction/TestUtils.java
@@ -23,7 +23,6 @@ import android.app.ProfilerInfo;
import android.app.ResultInfo;
import android.content.Intent;
import android.content.pm.ActivityInfo;
-import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.IBinder;
@@ -96,7 +95,6 @@ class TestUtils {
private ActivityInfo mInfo;
private Configuration mCurConfig;
private Configuration mOverrideConfig;
- private CompatibilityInfo mCompatInfo;
private String mReferrer;
private IVoiceInteractor mVoiceInteractor;
private int mProcState;
@@ -137,11 +135,6 @@ class TestUtils {
return this;
}
- LaunchActivityItemBuilder setCompatInfo(CompatibilityInfo compatInfo) {
- mCompatInfo = compatInfo;
- return this;
- }
-
LaunchActivityItemBuilder setReferrer(String referrer) {
mReferrer = referrer;
return this;
@@ -214,7 +207,7 @@ class TestUtils {
LaunchActivityItem build() {
return LaunchActivityItem.obtain(mIntent, mIdent, mInfo,
- mCurConfig, mOverrideConfig, mCompatInfo, mReferrer, mVoiceInteractor,
+ mCurConfig, mOverrideConfig, mReferrer, mVoiceInteractor,
mProcState, mState, mPersistentState, mPendingResults, mPendingNewIntents,
mActivityOptions, mIsForward, mProfilerInfo, mAssistToken,
null /* activityClientController */, mShareableActivityToken,
diff --git a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
index 0eca0a8cb1a7..e9bbdbee576c 100644
--- a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
+++ b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java
@@ -187,7 +187,6 @@ public class TransactionParcelTests {
activityInfo.name = "name";
Configuration overrideConfig = new Configuration();
overrideConfig.assetsSeq = 5;
- CompatibilityInfo compat = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO;
String referrer = "referrer";
int procState = 4;
Bundle bundle = new Bundle();
@@ -198,7 +197,7 @@ public class TransactionParcelTests {
LaunchActivityItem item = new LaunchActivityItemBuilder()
.setIntent(intent).setIdent(ident).setInfo(activityInfo).setCurConfig(config())
- .setOverrideConfig(overrideConfig).setCompatInfo(compat).setReferrer(referrer)
+ .setOverrideConfig(overrideConfig).setReferrer(referrer)
.setProcState(procState).setState(bundle).setPersistentState(persistableBundle)
.setPendingResults(resultInfoList()).setActivityOptions(ActivityOptions.makeBasic())
.setPendingNewIntents(referrerIntentList()).setIsForward(true)
@@ -489,13 +488,13 @@ public class TransactionParcelTests {
@Override
public void scheduleCreateBackupAgent(ApplicationInfo applicationInfo,
- CompatibilityInfo compatibilityInfo, int i, int userId, int operatioType)
+ int i, int userId, int operatioType)
throws RemoteException {
}
@Override
public void scheduleDestroyBackupAgent(ApplicationInfo applicationInfo,
- CompatibilityInfo compatibilityInfo, int userId) throws RemoteException {
+ int userId) throws RemoteException {
}
@Override
diff --git a/core/tests/mockingcoretests/src/android/app/activity/ActivityThreadClientTest.java b/core/tests/mockingcoretests/src/android/app/activity/ActivityThreadClientTest.java
index 47f70ddf2d42..f4a6f025074e 100644
--- a/core/tests/mockingcoretests/src/android/app/activity/ActivityThreadClientTest.java
+++ b/core/tests/mockingcoretests/src/android/app/activity/ActivityThreadClientTest.java
@@ -54,7 +54,6 @@ import android.content.ComponentName;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
-import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.os.IBinder;
import android.os.UserHandle;
@@ -339,8 +338,7 @@ public class ActivityThreadClientTest {
doNothing().when(packageInfo).updateApplicationInfo(any(), any());
return new ActivityClientRecord(mock(IBinder.class), Intent.makeMainActivity(component),
- 0 /* ident */, info, new Configuration(),
- CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO, null /* referrer */,
+ 0 /* ident */, info, new Configuration(), null /* referrer */,
null /* voiceInteractor */, null /* state */, null /* persistentState */,
null /* pendingResults */, null /* pendingNewIntents */,
null /* activityOptions */, true /* isForward */, null /* profilerInfo */,
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index c5b5fb941e05..002aa773d85a 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -4413,7 +4413,7 @@ public final class ActiveServices {
mAm.notifyPackageUse(r.serviceInfo.packageName,
PackageManager.NOTIFY_PACKAGE_USE_SERVICE);
thread.scheduleCreateService(r, r.serviceInfo,
- mAm.compatibilityInfoForPackage(r.serviceInfo.applicationInfo),
+ null /* compatInfo (unused but need to keep method signature) */,
app.mState.getReportedProcState());
r.postNotification();
created = true;
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 9f0aeec40bd7..5729a06830cf 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -4980,7 +4980,6 @@ public class ActivityManagerService extends IActivityManager.Stub
PackageManager.NOTIFY_PACKAGE_USE_BACKUP);
try {
thread.scheduleCreateBackupAgent(backupTarget.appInfo,
- compatibilityInfoForPackage(backupTarget.appInfo),
backupTarget.backupMode, backupTarget.userId, backupTarget.operationType);
} catch (Exception e) {
Slog.wtf(TAG, "Exception thrown creating backup agent in " + app, e);
@@ -12900,8 +12899,7 @@ public class ActivityManagerService extends IActivityManager.Stub
if (thread != null) {
if (DEBUG_BACKUP) Slog.v(TAG_BACKUP, "Agent proc already running: " + proc);
try {
- thread.scheduleCreateBackupAgent(app,
- compatibilityInfoForPackage(app), backupMode, targetUserId,
+ thread.scheduleCreateBackupAgent(app, backupMode, targetUserId,
operationType);
} catch (RemoteException e) {
// Will time out on the backup manager side
@@ -13027,8 +13025,7 @@ public class ActivityManagerService extends IActivityManager.Stub
final IApplicationThread thread = proc.getThread();
if (thread != null) {
try {
- thread.scheduleDestroyBackupAgent(appInfo,
- compatibilityInfoForPackage(appInfo), userId);
+ thread.scheduleDestroyBackupAgent(appInfo, userId);
} catch (Exception e) {
Slog.e(TAG, "Exception when unbinding backup agent:");
e.printStackTrace();
diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java
index 0cd1bfa3740a..6d520c3c6be8 100644
--- a/services/core/java/com/android/server/am/BroadcastQueue.java
+++ b/services/core/java/com/android/server/am/BroadcastQueue.java
@@ -361,7 +361,7 @@ public final class BroadcastQueue {
mService.notifyPackageUse(r.intent.getComponent().getPackageName(),
PackageManager.NOTIFY_PACKAGE_USE_BROADCAST_RECEIVER);
thread.scheduleReceiver(new Intent(r.intent), r.curReceiver,
- mService.compatibilityInfoForPackage(r.curReceiver.applicationInfo),
+ null /* compatInfo (unused but need to keep method signature) */,
r.resultCode, r.resultData, r.resultExtras, r.ordered, r.userId,
app.mState.getReportedProcState());
if (DEBUG_BROADCAST) Slog.v(TAG_BROADCAST,
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 69bbff3a4db1..42e0533f178f 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -272,7 +272,6 @@ import android.content.pm.ActivityInfo;
import android.content.pm.ApplicationInfo;
import android.content.pm.ConstrainDisplayApisConfig;
import android.content.pm.PackageManager;
-import android.content.res.CompatibilityInfo;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Bitmap;
@@ -478,7 +477,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
private int mLastReportedDisplayId;
boolean mLastReportedMultiWindowMode;
boolean mLastReportedPictureInPictureMode;
- CompatibilityInfo compat;// last used compatibility mode
ActivityRecord resultTo; // who started this entry, so will get our reply
final String resultWho; // additional identifier for use by resultTo.
final int requestCode; // code given by requester (resultTo)
@@ -1022,7 +1020,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
if (rootVoiceInteraction) {
pw.print(prefix); pw.print("rootVoiceInteraction="); pw.println(rootVoiceInteraction);
}
- pw.print(prefix); pw.print("compat="); pw.print(compat);
+ pw.print(prefix); pw.print("compat=");
+ pw.print(mAtmService.compatibilityInfoForPackageLocked(info.applicationInfo));
pw.print(" labelRes=0x"); pw.print(Integer.toHexString(labelRes));
pw.print(" icon=0x"); pw.print(Integer.toHexString(icon));
pw.print(" theme=0x"); pw.println(Integer.toHexString(theme));
diff --git a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
index 84740683f6aa..345ec117b03a 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskSupervisor.java
@@ -875,7 +875,6 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
r.intent.getComponent().getPackageName(), NOTIFY_PACKAGE_USE_ACTIVITY);
r.forceNewConfig = false;
mService.getAppWarningsLocked().onStartActivity(r);
- r.compat = mService.compatibilityInfoForPackageLocked(r.info.applicationInfo);
// Because we could be starting an Activity in the system process this may not go
// across a Binder interface which would create a new Configuration. Consequently
@@ -905,7 +904,7 @@ public class ActivityTaskSupervisor implements RecentTasks.Callbacks {
// TODO: Have this take the merged configuration instead of separate global
// and override configs.
mergedConfiguration.getGlobalConfiguration(),
- mergedConfiguration.getOverrideConfiguration(), r.compat,
+ mergedConfiguration.getOverrideConfiguration(),
r.getFilteredReferrer(r.launchedFromPackage), task.voiceInteractor,
proc.getReportedProcState(), r.getSavedState(), r.getPersistentSavedState(),
results, newIntents, r.takeOptions(), isTransitionForward,
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index a0b01a7fc27d..959429e255dd 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -639,6 +639,11 @@ public class UsageStatsService extends SystemService implements
mAppStandby.initializeDefaultsForSystemApps(userId);
}
+ private boolean sameApp(int callingUid, @UserIdInt int userId, String packageName) {
+ return mPackageManagerInternal.getPackageUid(packageName, 0 /* flags */, userId)
+ == callingUid;
+ }
+
private boolean isInstantApp(String packageName, int userId) {
return mPackageManagerInternal.isPackageEphemeral(userId, packageName);
}
@@ -2354,17 +2359,15 @@ public class UsageStatsService extends SystemService implements
}
final int packageUid = mPackageManagerInternal.getPackageUid(packageName, 0, userId);
// If the calling app is asking about itself, continue, else check for permission.
- if (packageUid != callingUid) {
- if (!hasPermission(callingPackage)) {
- throw new SecurityException(
- "Don't have permission to query app standby bucket");
- }
+ final boolean sameApp = packageUid == callingUid;
+ if (!sameApp && !hasPermission(callingPackage)) {
+ throw new SecurityException("Don't have permission to query app standby bucket");
}
final boolean isInstantApp = isInstantApp(packageName, userId);
final boolean cannotAccessInstantApps = shouldObfuscateInstantAppsForCaller(callingUid,
userId);
- if (packageUid < 0 || (isInstantApp && cannotAccessInstantApps)) {
+ if (packageUid < 0 || (!sameApp && isInstantApp && cannotAccessInstantApps)) {
throw new IllegalArgumentException(
"Cannot get standby bucket for non existent package (" + packageName + ")");
}
@@ -2418,7 +2421,9 @@ public class UsageStatsService extends SystemService implements
}
final int targetUserId = userId;
standbyBucketList.removeIf(
- i -> cannotAccessInstantApps && isInstantApp(i.mPackageName, targetUserId));
+ i -> !sameApp(callingUid, targetUserId, i.mPackageName)
+ && isInstantApp(i.mPackageName, targetUserId)
+ && cannotAccessInstantApps);
return new ParceledListSlice<>(standbyBucketList);
} finally {
Binder.restoreCallingIdentity(token);