Enable @TestApi access for instrumentation.
Since introduction of ALLOW_TEST_API_ACCESS, it is now possible to grant access to test apis for the whole UID, instead of just a starting process. This resolves the issue, where a forked test process cannot access @TestApi's. Bug: 147113465 Test: atest CameraEvictionTest#testBasicCamera2ActivityEviction Change-Id: I8dd3bbacdb263a3e30539f43d8081f6d78e80155
This commit is contained in:
@@ -174,10 +174,6 @@ public class Am extends BaseCommand {
|
||||
instrument.noWindowAnimation = true;
|
||||
} else if (opt.equals("--no-hidden-api-checks")) {
|
||||
instrument.disableHiddenApiChecks = true;
|
||||
} else if (opt.equals("--no-test-api-checks")) {
|
||||
// TODO(satayev): remove this option, only kept for backwards compatibility with
|
||||
// cached tradefed instance
|
||||
instrument.disableTestApiChecks = false;
|
||||
} else if (opt.equals("--no-test-api-access")) {
|
||||
instrument.disableTestApiChecks = false;
|
||||
} else if (opt.equals("--no-isolated-storage")) {
|
||||
@@ -200,7 +196,6 @@ public class Am extends BaseCommand {
|
||||
}
|
||||
|
||||
instrument.componentNameArg = nextArgRequired();
|
||||
|
||||
instrument.run();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -180,6 +180,7 @@ import android.app.usage.UsageEvents.Event;
|
||||
import android.app.usage.UsageStatsManager;
|
||||
import android.app.usage.UsageStatsManagerInternal;
|
||||
import android.appwidget.AppWidgetManager;
|
||||
import android.compat.Compatibility;
|
||||
import android.content.AutofillOptions;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.ComponentCallbacks2;
|
||||
@@ -303,6 +304,7 @@ import com.android.internal.app.IAppOpsService;
|
||||
import com.android.internal.app.ProcessMap;
|
||||
import com.android.internal.app.SystemUserHomeActivity;
|
||||
import com.android.internal.app.procstats.ProcessStats;
|
||||
import com.android.internal.compat.CompatibilityChangeConfig;
|
||||
import com.android.internal.content.PackageHelper;
|
||||
import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
|
||||
import com.android.internal.notification.SystemNotificationChannels;
|
||||
@@ -14394,6 +14396,8 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
if (disableHiddenApiChecks || disableTestApiChecks) {
|
||||
enforceCallingPermission(android.Manifest.permission.DISABLE_HIDDEN_API_CHECKS,
|
||||
"disable hidden API checks");
|
||||
|
||||
enableTestApiAccess(ii.packageName);
|
||||
}
|
||||
|
||||
// TODO(b/158750470): remove
|
||||
@@ -14566,6 +14570,25 @@ public class ActivityManagerService extends IActivityManager.Stub
|
||||
app.userId,
|
||||
"finished inst");
|
||||
}
|
||||
|
||||
disableTestApiAccess(app.info.packageName);
|
||||
}
|
||||
|
||||
private void enableTestApiAccess(String packageName) {
|
||||
if (mPlatformCompat != null) {
|
||||
Compatibility.ChangeConfig config = new Compatibility.ChangeConfig(
|
||||
Collections.singleton(166236554L /* VMRuntime.ALLOW_TEST_API_ACCESS */),
|
||||
Collections.emptySet());
|
||||
CompatibilityChangeConfig override = new CompatibilityChangeConfig(config);
|
||||
mPlatformCompat.setOverridesForTest(override, packageName);
|
||||
}
|
||||
}
|
||||
|
||||
private void disableTestApiAccess(String packageName) {
|
||||
if (mPlatformCompat != null) {
|
||||
mPlatformCompat.clearOverrideForTest(166236554L /* VMRuntime.ALLOW_TEST_API_ACCESS */,
|
||||
packageName);
|
||||
}
|
||||
}
|
||||
|
||||
public void finishInstrumentation(IApplicationThread target,
|
||||
|
||||
Reference in New Issue
Block a user