Loading AconfigFlags.bp +14 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ aconfig_srcjars = [ ":android.app.usage.flags-aconfig-java{.generated_srcjars}", ":android.content.pm.flags-aconfig-java{.generated_srcjars}", ":android.nfc.flags-aconfig-java{.generated_srcjars}", ":android.os.flags-aconfig-java{.generated_srcjars}", ":android.os.vibrator.flags-aconfig-java{.generated_srcjars}", ":android.security.flags-aconfig-java{.generated_srcjars}", Loading Loading @@ -122,6 +123,19 @@ cc_aconfig_library { aconfig_declarations: "com.android.text.flags-aconfig", } // NFC aconfig_declarations { name: "android.nfc.flags-aconfig", package: "android.nfc", srcs: ["core/java/android/nfc/*.aconfig"], } java_aconfig_library { name: "android.nfc.flags-aconfig-java", aconfig_declarations: "android.nfc.flags-aconfig", defaults: ["framework-minus-apex-aconfig-java-defaults"], } // Security aconfig_declarations { name: "android.security.flags-aconfig", Loading apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +20 −4 Original line number Diff line number Diff line Loading @@ -1762,8 +1762,16 @@ public class JobSchedulerService extends com.android.server.SystemService sEnqueuedJwiHighWaterMarkLogger.logSampleWithUid(uId, jobStatus.getWorkCount()); } FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, uId, null, jobStatus.getBatteryName(), final int sourceUid = uId; FrameworkStatsLog.write(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, jobStatus.isProxyJob() ? new int[]{sourceUid, jobStatus.getUid()} : new int[]{sourceUid}, // Given that the source tag is set by the calling app, it should be connected // to the calling app in the attribution for a proxied job. jobStatus.isProxyJob() ? new String[]{null, jobStatus.getSourceTag()} : new String[]{jobStatus.getSourceTag()}, jobStatus.getBatteryName(), FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__SCHEDULED, JobProtoEnums.INTERNAL_STOP_REASON_UNKNOWN, jobStatus.getStandbyBucket(), jobStatus.getLoggingJobId(), Loading Loading @@ -2191,8 +2199,16 @@ public class JobSchedulerService extends com.android.server.SystemService cancelled, reason, internalReasonCode, debugReason); // If the job was running, the JobServiceContext should log with state FINISHED. if (!wasRunning) { FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, cancelled.getSourceUid(), null, cancelled.getBatteryName(), final int sourceUid = cancelled.getSourceUid(); FrameworkStatsLog.write(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, cancelled.isProxyJob() ? new int[]{sourceUid, cancelled.getUid()} : new int[]{sourceUid}, // Given that the source tag is set by the calling app, it should be connected // to the calling app in the attribution for a proxied job. cancelled.isProxyJob() ? new String[]{null, cancelled.getSourceTag()} : new String[]{cancelled.getSourceTag()}, cancelled.getBatteryName(), FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__CANCELLED, internalReasonCode, cancelled.getStandbyBucket(), cancelled.getLoggingJobId(), Loading apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java +19 −4 Original line number Diff line number Diff line Loading @@ -470,8 +470,15 @@ public final class JobServiceContext implements ServiceConnection { return false; } mJobPackageTracker.noteActive(job); FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, job.getSourceUid(), null, job.getBatteryName(), final int sourceUid = job.getSourceUid(); FrameworkStatsLog.write(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, job.isProxyJob() ? new int[]{sourceUid, job.getUid()} : new int[]{sourceUid}, // Given that the source tag is set by the calling app, it should be connected // to the calling app in the attribution for a proxied job. job.isProxyJob() ? new String[]{null, job.getSourceTag()} : new String[]{job.getSourceTag()}, job.getBatteryName(), FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__STARTED, JobProtoEnums.INTERNAL_STOP_REASON_UNKNOWN, job.getStandbyBucket(), Loading Loading @@ -1531,8 +1538,16 @@ public final class JobServiceContext implements ServiceConnection { } mJobPackageTracker.noteInactive(completedJob, loggingInternalStopReason, loggingDebugReason); FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, completedJob.getSourceUid(), null, completedJob.getBatteryName(), final int sourceUid = completedJob.getSourceUid(); FrameworkStatsLog.write(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, completedJob.isProxyJob() ? new int[]{sourceUid, completedJob.getUid()} : new int[]{sourceUid}, // Given that the source tag is set by the calling app, it should be connected // to the calling app in the attribution for a proxied job. completedJob.isProxyJob() ? new String[]{null, completedJob.getSourceTag()} : new String[]{completedJob.getSourceTag()}, completedJob.getBatteryName(), FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__FINISHED, loggingInternalStopReason, completedJob.getStandbyBucket(), completedJob.getLoggingJobId(), Loading apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java +23 −2 Original line number Diff line number Diff line Loading @@ -255,6 +255,9 @@ public final class JobStatus { final String tag; /** Whether this job was scheduled by one app on behalf of another. */ final boolean mIsProxyJob; private GrantedUriPermissions uriPerms; private boolean prepared; Loading Loading @@ -626,6 +629,9 @@ public final class JobStatus { : bnNamespace + job.getService().flattenToShortString(); this.tag = "*job*/" + this.batteryName + "#" + job.getId(); final String componentPackage = job.getService().getPackageName(); mIsProxyJob = !this.sourcePackageName.equals(componentPackage); this.earliestRunTimeElapsedMillis = earliestRunTimeElapsedMillis; this.latestRunTimeElapsedMillis = latestRunTimeElapsedMillis; this.mOriginalLatestRunTimeElapsedMillis = latestRunTimeElapsedMillis; Loading Loading @@ -1048,6 +1054,11 @@ public final class JobStatus { return mLoggingJobId; } /** Returns whether this job was scheduled by one app on behalf of another. */ public boolean isProxyJob() { return mIsProxyJob; } public void printUniqueId(PrintWriter pw) { if (mNamespace != null) { pw.print(mNamespace); Loading Loading @@ -1292,6 +1303,12 @@ public final class JobStatus { return mNamespaceHash; } /** * Returns the tag passed by the calling app to describe the source app work. This is primarily * only valid if {@link #isProxyJob()} returns true, but may be non-null if an app uses * {@link JobScheduler#scheduleAsPackage(JobInfo, String, int, String)} for itself. */ @Nullable public String getSourceTag() { return sourceTag; } Loading Loading @@ -1871,9 +1888,13 @@ public final class JobStatus { mReadyDynamicSatisfied = mDynamicConstraints != 0 && mDynamicConstraints == (satisfiedConstraints & mDynamicConstraints); if (STATS_LOG_ENABLED && (STATSD_CONSTRAINTS_TO_LOG & constraint) != 0) { FrameworkStatsLog.write_non_chained( FrameworkStatsLog.write( FrameworkStatsLog.SCHEDULED_JOB_CONSTRAINT_CHANGED, sourceUid, null, getBatteryName(), getProtoConstraint(constraint), isProxyJob() ? new int[]{sourceUid, getUid()} : new int[]{sourceUid}, // Given that the source tag is set by the calling app, it should be connected // to the calling app in the attribution for a proxied job. isProxyJob() ? new String[]{null, sourceTag} : new String[]{sourceTag}, getBatteryName(), getProtoConstraint(constraint), state ? FrameworkStatsLog.SCHEDULED_JOB_CONSTRAINT_CHANGED__STATE__SATISFIED : FrameworkStatsLog .SCHEDULED_JOB_CONSTRAINT_CHANGED__STATE__UNSATISFIED); Loading core/api/module-lib-current.txt +24 −0 Original line number Diff line number Diff line Loading @@ -554,6 +554,30 @@ package android.provider { } package android.se.omapi { @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public class SeFrameworkInitializer { method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) @Nullable public static android.se.omapi.SeServiceManager getSeServiceManager(); method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public static void setSeServiceManager(@NonNull android.se.omapi.SeServiceManager); } @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public class SeServiceManager { method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) @NonNull public android.se.omapi.SeServiceManager.ServiceRegisterer getSeManagerServiceRegisterer(); } @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public static class SeServiceManager.ServiceNotFoundException extends java.lang.Exception { ctor @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public SeServiceManager.ServiceNotFoundException(@NonNull String); } @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public static final class SeServiceManager.ServiceRegisterer { method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) @Nullable public android.os.IBinder get(); method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) @NonNull public android.os.IBinder getOrThrow() throws android.se.omapi.SeServiceManager.ServiceNotFoundException; method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public void register(@NonNull android.os.IBinder); method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) @Nullable public android.os.IBinder tryGet(); } } package android.telecom { public abstract class ConnectionService extends android.app.Service { Loading Loading
AconfigFlags.bp +14 −0 Original line number Diff line number Diff line Loading @@ -15,6 +15,7 @@ aconfig_srcjars = [ ":android.app.usage.flags-aconfig-java{.generated_srcjars}", ":android.content.pm.flags-aconfig-java{.generated_srcjars}", ":android.nfc.flags-aconfig-java{.generated_srcjars}", ":android.os.flags-aconfig-java{.generated_srcjars}", ":android.os.vibrator.flags-aconfig-java{.generated_srcjars}", ":android.security.flags-aconfig-java{.generated_srcjars}", Loading Loading @@ -122,6 +123,19 @@ cc_aconfig_library { aconfig_declarations: "com.android.text.flags-aconfig", } // NFC aconfig_declarations { name: "android.nfc.flags-aconfig", package: "android.nfc", srcs: ["core/java/android/nfc/*.aconfig"], } java_aconfig_library { name: "android.nfc.flags-aconfig-java", aconfig_declarations: "android.nfc.flags-aconfig", defaults: ["framework-minus-apex-aconfig-java-defaults"], } // Security aconfig_declarations { name: "android.security.flags-aconfig", Loading
apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +20 −4 Original line number Diff line number Diff line Loading @@ -1762,8 +1762,16 @@ public class JobSchedulerService extends com.android.server.SystemService sEnqueuedJwiHighWaterMarkLogger.logSampleWithUid(uId, jobStatus.getWorkCount()); } FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, uId, null, jobStatus.getBatteryName(), final int sourceUid = uId; FrameworkStatsLog.write(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, jobStatus.isProxyJob() ? new int[]{sourceUid, jobStatus.getUid()} : new int[]{sourceUid}, // Given that the source tag is set by the calling app, it should be connected // to the calling app in the attribution for a proxied job. jobStatus.isProxyJob() ? new String[]{null, jobStatus.getSourceTag()} : new String[]{jobStatus.getSourceTag()}, jobStatus.getBatteryName(), FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__SCHEDULED, JobProtoEnums.INTERNAL_STOP_REASON_UNKNOWN, jobStatus.getStandbyBucket(), jobStatus.getLoggingJobId(), Loading Loading @@ -2191,8 +2199,16 @@ public class JobSchedulerService extends com.android.server.SystemService cancelled, reason, internalReasonCode, debugReason); // If the job was running, the JobServiceContext should log with state FINISHED. if (!wasRunning) { FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, cancelled.getSourceUid(), null, cancelled.getBatteryName(), final int sourceUid = cancelled.getSourceUid(); FrameworkStatsLog.write(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, cancelled.isProxyJob() ? new int[]{sourceUid, cancelled.getUid()} : new int[]{sourceUid}, // Given that the source tag is set by the calling app, it should be connected // to the calling app in the attribution for a proxied job. cancelled.isProxyJob() ? new String[]{null, cancelled.getSourceTag()} : new String[]{cancelled.getSourceTag()}, cancelled.getBatteryName(), FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__CANCELLED, internalReasonCode, cancelled.getStandbyBucket(), cancelled.getLoggingJobId(), Loading
apex/jobscheduler/service/java/com/android/server/job/JobServiceContext.java +19 −4 Original line number Diff line number Diff line Loading @@ -470,8 +470,15 @@ public final class JobServiceContext implements ServiceConnection { return false; } mJobPackageTracker.noteActive(job); FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, job.getSourceUid(), null, job.getBatteryName(), final int sourceUid = job.getSourceUid(); FrameworkStatsLog.write(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, job.isProxyJob() ? new int[]{sourceUid, job.getUid()} : new int[]{sourceUid}, // Given that the source tag is set by the calling app, it should be connected // to the calling app in the attribution for a proxied job. job.isProxyJob() ? new String[]{null, job.getSourceTag()} : new String[]{job.getSourceTag()}, job.getBatteryName(), FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__STARTED, JobProtoEnums.INTERNAL_STOP_REASON_UNKNOWN, job.getStandbyBucket(), Loading Loading @@ -1531,8 +1538,16 @@ public final class JobServiceContext implements ServiceConnection { } mJobPackageTracker.noteInactive(completedJob, loggingInternalStopReason, loggingDebugReason); FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, completedJob.getSourceUid(), null, completedJob.getBatteryName(), final int sourceUid = completedJob.getSourceUid(); FrameworkStatsLog.write(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED, completedJob.isProxyJob() ? new int[]{sourceUid, completedJob.getUid()} : new int[]{sourceUid}, // Given that the source tag is set by the calling app, it should be connected // to the calling app in the attribution for a proxied job. completedJob.isProxyJob() ? new String[]{null, completedJob.getSourceTag()} : new String[]{completedJob.getSourceTag()}, completedJob.getBatteryName(), FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__FINISHED, loggingInternalStopReason, completedJob.getStandbyBucket(), completedJob.getLoggingJobId(), Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/JobStatus.java +23 −2 Original line number Diff line number Diff line Loading @@ -255,6 +255,9 @@ public final class JobStatus { final String tag; /** Whether this job was scheduled by one app on behalf of another. */ final boolean mIsProxyJob; private GrantedUriPermissions uriPerms; private boolean prepared; Loading Loading @@ -626,6 +629,9 @@ public final class JobStatus { : bnNamespace + job.getService().flattenToShortString(); this.tag = "*job*/" + this.batteryName + "#" + job.getId(); final String componentPackage = job.getService().getPackageName(); mIsProxyJob = !this.sourcePackageName.equals(componentPackage); this.earliestRunTimeElapsedMillis = earliestRunTimeElapsedMillis; this.latestRunTimeElapsedMillis = latestRunTimeElapsedMillis; this.mOriginalLatestRunTimeElapsedMillis = latestRunTimeElapsedMillis; Loading Loading @@ -1048,6 +1054,11 @@ public final class JobStatus { return mLoggingJobId; } /** Returns whether this job was scheduled by one app on behalf of another. */ public boolean isProxyJob() { return mIsProxyJob; } public void printUniqueId(PrintWriter pw) { if (mNamespace != null) { pw.print(mNamespace); Loading Loading @@ -1292,6 +1303,12 @@ public final class JobStatus { return mNamespaceHash; } /** * Returns the tag passed by the calling app to describe the source app work. This is primarily * only valid if {@link #isProxyJob()} returns true, but may be non-null if an app uses * {@link JobScheduler#scheduleAsPackage(JobInfo, String, int, String)} for itself. */ @Nullable public String getSourceTag() { return sourceTag; } Loading Loading @@ -1871,9 +1888,13 @@ public final class JobStatus { mReadyDynamicSatisfied = mDynamicConstraints != 0 && mDynamicConstraints == (satisfiedConstraints & mDynamicConstraints); if (STATS_LOG_ENABLED && (STATSD_CONSTRAINTS_TO_LOG & constraint) != 0) { FrameworkStatsLog.write_non_chained( FrameworkStatsLog.write( FrameworkStatsLog.SCHEDULED_JOB_CONSTRAINT_CHANGED, sourceUid, null, getBatteryName(), getProtoConstraint(constraint), isProxyJob() ? new int[]{sourceUid, getUid()} : new int[]{sourceUid}, // Given that the source tag is set by the calling app, it should be connected // to the calling app in the attribution for a proxied job. isProxyJob() ? new String[]{null, sourceTag} : new String[]{sourceTag}, getBatteryName(), getProtoConstraint(constraint), state ? FrameworkStatsLog.SCHEDULED_JOB_CONSTRAINT_CHANGED__STATE__SATISFIED : FrameworkStatsLog .SCHEDULED_JOB_CONSTRAINT_CHANGED__STATE__UNSATISFIED); Loading
core/api/module-lib-current.txt +24 −0 Original line number Diff line number Diff line Loading @@ -554,6 +554,30 @@ package android.provider { } package android.se.omapi { @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public class SeFrameworkInitializer { method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) @Nullable public static android.se.omapi.SeServiceManager getSeServiceManager(); method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public static void setSeServiceManager(@NonNull android.se.omapi.SeServiceManager); } @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public class SeServiceManager { method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) @NonNull public android.se.omapi.SeServiceManager.ServiceRegisterer getSeManagerServiceRegisterer(); } @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public static class SeServiceManager.ServiceNotFoundException extends java.lang.Exception { ctor @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public SeServiceManager.ServiceNotFoundException(@NonNull String); } @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public static final class SeServiceManager.ServiceRegisterer { method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) @Nullable public android.os.IBinder get(); method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) @NonNull public android.os.IBinder getOrThrow() throws android.se.omapi.SeServiceManager.ServiceNotFoundException; method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) public void register(@NonNull android.os.IBinder); method @FlaggedApi(Flags.FLAG_ENABLE_NFC_MAINLINE) @Nullable public android.os.IBinder tryGet(); } } package android.telecom { public abstract class ConnectionService extends android.app.Service { Loading