diff --git a/Android.bp b/Android.bp index 8f0e341b32b51..9c01c17b27228 100644 --- a/Android.bp +++ b/Android.bp @@ -703,6 +703,7 @@ filegroup { // TODO: remove these annotations as soon as we can use andoid.support.annotations.* ":framework-annotations", "core/java/android/net/DhcpResults.java", + "core/java/android/util/IndentingPrintWriter.java", "core/java/android/util/LocalLog.java", "core/java/com/android/internal/util/HexDump.java", "core/java/com/android/internal/util/IndentingPrintWriter.java", @@ -733,6 +734,7 @@ filegroup { filegroup { name: "framework-tethering-shared-srcs", srcs: [ + "core/java/android/util/IndentingPrintWriter.java", "core/java/android/util/LocalLog.java", "core/java/com/android/internal/util/IndentingPrintWriter.java", "core/java/com/android/internal/util/IState.java", @@ -1131,6 +1133,7 @@ filegroup { "core/java/android/os/BasicShellCommandHandler.java", "core/java/android/os/RegistrantList.java", "core/java/android/os/Registrant.java", + "core/java/android/util/IndentingPrintWriter.java", "core/java/android/util/LocalLog.java", "core/java/android/util/TimeUtils.java", "core/java/com/android/internal/os/SomeArgs.java", @@ -1153,6 +1156,7 @@ filegroup { filegroup { name: "framework-telephony-shared-srcs", srcs: [ + "core/java/android/util/IndentingPrintWriter.java", "core/java/android/util/RecurrenceRule.java", "core/java/com/android/internal/os/SomeArgs.java", "core/java/com/android/internal/util/BitwiseInputStream.java", diff --git a/apex/jobscheduler/framework/java/com/android/server/usage/AppStandbyInternal.java b/apex/jobscheduler/framework/java/com/android/server/usage/AppStandbyInternal.java index 887d82c6413f8..648a1e1722be7 100644 --- a/apex/jobscheduler/framework/java/com/android/server/usage/AppStandbyInternal.java +++ b/apex/jobscheduler/framework/java/com/android/server/usage/AppStandbyInternal.java @@ -8,8 +8,7 @@ import android.app.usage.UsageStatsManager.StandbyBuckets; import android.app.usage.UsageStatsManager.SystemForcedReasons; import android.content.Context; import android.os.Looper; - -import com.android.internal.util.IndentingPrintWriter; +import android.util.IndentingPrintWriter; import java.io.PrintWriter; import java.lang.reflect.Constructor; diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java index 435384dd23199..a8906ac9d7a57 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java @@ -25,6 +25,7 @@ import android.content.IntentFilter; import android.os.Handler; import android.os.PowerManager; import android.os.RemoteException; +import android.util.IndentingPrintWriter; import android.util.Slog; import android.util.TimeUtils; import android.util.proto.ProtoOutputStream; @@ -33,7 +34,6 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.procstats.ProcessStats; import com.android.internal.os.BackgroundThread; -import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.StatLogger; import com.android.server.job.JobSchedulerService.Constants; import com.android.server.job.JobSchedulerService.MaxJobCountsPerMemoryTrimLevel; diff --git a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java index e88865161dfa4..a1c13a9ad51cb 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java @@ -70,6 +70,7 @@ import android.os.WorkSource; import android.provider.Settings; import android.text.format.DateUtils; import android.util.ArrayMap; +import android.util.IndentingPrintWriter; import android.util.KeyValueListParser; import android.util.Log; import android.util.Slog; @@ -84,7 +85,6 @@ import com.android.internal.app.IBatteryStats; import com.android.internal.util.ArrayUtils; import com.android.internal.util.DumpUtils; import com.android.internal.util.FrameworkStatsLog; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.AppStateTracker; import com.android.server.DeviceIdleInternal; import com.android.server.FgThread; @@ -684,12 +684,12 @@ public class JobSchedulerService extends com.android.server.SystemService void dump(IndentingPrintWriter pw) { pw.println("Settings:"); pw.increaseIndent(); - pw.printPair(KEY_MIN_READY_NON_ACTIVE_JOBS_COUNT, + pw.print(KEY_MIN_READY_NON_ACTIVE_JOBS_COUNT, MIN_READY_NON_ACTIVE_JOBS_COUNT).println(); - pw.printPair(KEY_MAX_NON_ACTIVE_JOB_BATCH_DELAY_MS, + pw.print(KEY_MAX_NON_ACTIVE_JOB_BATCH_DELAY_MS, MAX_NON_ACTIVE_JOB_BATCH_DELAY_MS).println(); - pw.printPair(KEY_HEAVY_USE_FACTOR, HEAVY_USE_FACTOR).println(); - pw.printPair(KEY_MODERATE_USE_FACTOR, MODERATE_USE_FACTOR).println(); + pw.print(KEY_HEAVY_USE_FACTOR, HEAVY_USE_FACTOR).println(); + pw.print(KEY_MODERATE_USE_FACTOR, MODERATE_USE_FACTOR).println(); MAX_JOB_COUNTS_SCREEN_ON.normal.dump(pw, ""); MAX_JOB_COUNTS_SCREEN_ON.moderate.dump(pw, ""); @@ -703,15 +703,15 @@ public class JobSchedulerService extends com.android.server.SystemService SCREEN_OFF_JOB_CONCURRENCY_INCREASE_DELAY_MS.dump(pw, ""); - pw.printPair(KEY_MIN_LINEAR_BACKOFF_TIME, MIN_LINEAR_BACKOFF_TIME).println(); - pw.printPair(KEY_MIN_EXP_BACKOFF_TIME, MIN_EXP_BACKOFF_TIME).println(); - pw.printPair(KEY_CONN_CONGESTION_DELAY_FRAC, CONN_CONGESTION_DELAY_FRAC).println(); - pw.printPair(KEY_CONN_PREFETCH_RELAX_FRAC, CONN_PREFETCH_RELAX_FRAC).println(); + pw.print(KEY_MIN_LINEAR_BACKOFF_TIME, MIN_LINEAR_BACKOFF_TIME).println(); + pw.print(KEY_MIN_EXP_BACKOFF_TIME, MIN_EXP_BACKOFF_TIME).println(); + pw.print(KEY_CONN_CONGESTION_DELAY_FRAC, CONN_CONGESTION_DELAY_FRAC).println(); + pw.print(KEY_CONN_PREFETCH_RELAX_FRAC, CONN_PREFETCH_RELAX_FRAC).println(); - pw.printPair(KEY_ENABLE_API_QUOTAS, ENABLE_API_QUOTAS).println(); - pw.printPair(KEY_API_QUOTA_SCHEDULE_COUNT, API_QUOTA_SCHEDULE_COUNT).println(); - pw.printPair(KEY_API_QUOTA_SCHEDULE_WINDOW_MS, API_QUOTA_SCHEDULE_WINDOW_MS).println(); - pw.printPair(KEY_API_QUOTA_SCHEDULE_THROW_EXCEPTION, + pw.print(KEY_ENABLE_API_QUOTAS, ENABLE_API_QUOTAS).println(); + pw.print(KEY_API_QUOTA_SCHEDULE_COUNT, API_QUOTA_SCHEDULE_COUNT).println(); + pw.print(KEY_API_QUOTA_SCHEDULE_WINDOW_MS, API_QUOTA_SCHEDULE_WINDOW_MS).println(); + pw.print(KEY_API_QUOTA_SCHEDULE_THROW_EXCEPTION, API_QUOTA_SCHEDULE_THROW_EXCEPTION).println(); pw.decreaseIndent(); diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java index 1645bcb928c12..fd26b72ef9d9b 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java @@ -20,11 +20,11 @@ import static com.android.server.job.JobSchedulerService.NEVER_INDEX; import android.os.SystemClock; import android.os.UserHandle; +import android.util.IndentingPrintWriter; import android.util.Log; import android.util.Slog; import android.util.proto.ProtoOutputStream; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.AppStateTracker; import com.android.server.AppStateTracker.Listener; import com.android.server.LocalServices; diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/BatteryController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/BatteryController.java index 461ef21af7eef..28269c89d13b9 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/BatteryController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/BatteryController.java @@ -26,12 +26,12 @@ import android.os.BatteryManager; import android.os.BatteryManagerInternal; import android.os.UserHandle; import android.util.ArraySet; +import android.util.IndentingPrintWriter; import android.util.Log; import android.util.Slog; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.LocalServices; import com.android.server.job.JobSchedulerService; import com.android.server.job.StateControllerProto; diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java index bb94275fc409b..f1c624d1d9f51 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java @@ -39,6 +39,7 @@ import android.text.format.DateUtils; import android.util.ArrayMap; import android.util.ArraySet; import android.util.DataUnit; +import android.util.IndentingPrintWriter; import android.util.Log; import android.util.Slog; import android.util.SparseArray; @@ -46,7 +47,6 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.LocalServices; import com.android.server.job.JobSchedulerService; import com.android.server.job.JobSchedulerService.Constants; diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/ContentObserverController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/ContentObserverController.java index 5fcd774189ac2..50723c7c2841c 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/ContentObserverController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/ContentObserverController.java @@ -24,13 +24,13 @@ import android.os.Handler; import android.os.UserHandle; import android.util.ArrayMap; import android.util.ArraySet; +import android.util.IndentingPrintWriter; import android.util.Log; import android.util.Slog; import android.util.SparseArray; import android.util.TimeUtils; import android.util.proto.ProtoOutputStream; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.job.JobSchedulerService; import com.android.server.job.StateControllerProto; import com.android.server.job.StateControllerProto.ContentObserverController.Observer.TriggerContentData; diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java index 01f5fa62f8899..04b41646b48ba 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java @@ -27,13 +27,13 @@ import android.os.Message; import android.os.PowerManager; import android.os.UserHandle; import android.util.ArraySet; +import android.util.IndentingPrintWriter; import android.util.Log; import android.util.Slog; import android.util.SparseBooleanArray; import android.util.proto.ProtoOutputStream; import com.android.internal.util.ArrayUtils; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.DeviceIdleInternal; import com.android.server.LocalServices; import com.android.server.job.JobSchedulerService; diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/IdleController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/IdleController.java index c0b3204192d67..2fe827e338e99 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/IdleController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/IdleController.java @@ -20,9 +20,9 @@ import android.content.Context; import android.content.pm.PackageManager; import android.os.UserHandle; import android.util.ArraySet; +import android.util.IndentingPrintWriter; import android.util.proto.ProtoOutputStream; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.job.JobSchedulerService; import com.android.server.job.StateControllerProto; import com.android.server.job.controllers.idle.CarIdlenessTracker; diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java index d108f0b698f77..bc4e396a4fe13 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/QuotaController.java @@ -52,6 +52,7 @@ import android.os.RemoteException; import android.os.UserHandle; import android.provider.Settings; import android.util.ArraySet; +import android.util.IndentingPrintWriter; import android.util.KeyValueListParser; import android.util.Log; import android.util.Pair; @@ -64,7 +65,6 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.BackgroundThread; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.LocalServices; import com.android.server.job.ConstantsProto; import com.android.server.job.JobSchedulerService; @@ -2496,32 +2496,32 @@ public final class QuotaController extends StateController { pw.println(); pw.println("QuotaController:"); pw.increaseIndent(); - pw.printPair(KEY_ALLOWED_TIME_PER_PERIOD_MS, ALLOWED_TIME_PER_PERIOD_MS).println(); - pw.printPair(KEY_IN_QUOTA_BUFFER_MS, IN_QUOTA_BUFFER_MS).println(); - pw.printPair(KEY_WINDOW_SIZE_ACTIVE_MS, WINDOW_SIZE_ACTIVE_MS).println(); - pw.printPair(KEY_WINDOW_SIZE_WORKING_MS, WINDOW_SIZE_WORKING_MS).println(); - pw.printPair(KEY_WINDOW_SIZE_FREQUENT_MS, WINDOW_SIZE_FREQUENT_MS).println(); - pw.printPair(KEY_WINDOW_SIZE_RARE_MS, WINDOW_SIZE_RARE_MS).println(); - pw.printPair(KEY_WINDOW_SIZE_RESTRICTED_MS, WINDOW_SIZE_RESTRICTED_MS).println(); - pw.printPair(KEY_MAX_EXECUTION_TIME_MS, MAX_EXECUTION_TIME_MS).println(); - pw.printPair(KEY_MAX_JOB_COUNT_ACTIVE, MAX_JOB_COUNT_ACTIVE).println(); - pw.printPair(KEY_MAX_JOB_COUNT_WORKING, MAX_JOB_COUNT_WORKING).println(); - pw.printPair(KEY_MAX_JOB_COUNT_FREQUENT, MAX_JOB_COUNT_FREQUENT).println(); - pw.printPair(KEY_MAX_JOB_COUNT_RARE, MAX_JOB_COUNT_RARE).println(); - pw.printPair(KEY_MAX_JOB_COUNT_RESTRICTED, MAX_JOB_COUNT_RESTRICTED).println(); - pw.printPair(KEY_RATE_LIMITING_WINDOW_MS, RATE_LIMITING_WINDOW_MS).println(); - pw.printPair(KEY_MAX_JOB_COUNT_PER_RATE_LIMITING_WINDOW, + pw.print(KEY_ALLOWED_TIME_PER_PERIOD_MS, ALLOWED_TIME_PER_PERIOD_MS).println(); + pw.print(KEY_IN_QUOTA_BUFFER_MS, IN_QUOTA_BUFFER_MS).println(); + pw.print(KEY_WINDOW_SIZE_ACTIVE_MS, WINDOW_SIZE_ACTIVE_MS).println(); + pw.print(KEY_WINDOW_SIZE_WORKING_MS, WINDOW_SIZE_WORKING_MS).println(); + pw.print(KEY_WINDOW_SIZE_FREQUENT_MS, WINDOW_SIZE_FREQUENT_MS).println(); + pw.print(KEY_WINDOW_SIZE_RARE_MS, WINDOW_SIZE_RARE_MS).println(); + pw.print(KEY_WINDOW_SIZE_RESTRICTED_MS, WINDOW_SIZE_RESTRICTED_MS).println(); + pw.print(KEY_MAX_EXECUTION_TIME_MS, MAX_EXECUTION_TIME_MS).println(); + pw.print(KEY_MAX_JOB_COUNT_ACTIVE, MAX_JOB_COUNT_ACTIVE).println(); + pw.print(KEY_MAX_JOB_COUNT_WORKING, MAX_JOB_COUNT_WORKING).println(); + pw.print(KEY_MAX_JOB_COUNT_FREQUENT, MAX_JOB_COUNT_FREQUENT).println(); + pw.print(KEY_MAX_JOB_COUNT_RARE, MAX_JOB_COUNT_RARE).println(); + pw.print(KEY_MAX_JOB_COUNT_RESTRICTED, MAX_JOB_COUNT_RESTRICTED).println(); + pw.print(KEY_RATE_LIMITING_WINDOW_MS, RATE_LIMITING_WINDOW_MS).println(); + pw.print(KEY_MAX_JOB_COUNT_PER_RATE_LIMITING_WINDOW, MAX_JOB_COUNT_PER_RATE_LIMITING_WINDOW).println(); - pw.printPair(KEY_MAX_SESSION_COUNT_ACTIVE, MAX_SESSION_COUNT_ACTIVE).println(); - pw.printPair(KEY_MAX_SESSION_COUNT_WORKING, MAX_SESSION_COUNT_WORKING).println(); - pw.printPair(KEY_MAX_SESSION_COUNT_FREQUENT, MAX_SESSION_COUNT_FREQUENT).println(); - pw.printPair(KEY_MAX_SESSION_COUNT_RARE, MAX_SESSION_COUNT_RARE).println(); - pw.printPair(KEY_MAX_SESSION_COUNT_RESTRICTED, MAX_SESSION_COUNT_RESTRICTED).println(); - pw.printPair(KEY_MAX_SESSION_COUNT_PER_RATE_LIMITING_WINDOW, + pw.print(KEY_MAX_SESSION_COUNT_ACTIVE, MAX_SESSION_COUNT_ACTIVE).println(); + pw.print(KEY_MAX_SESSION_COUNT_WORKING, MAX_SESSION_COUNT_WORKING).println(); + pw.print(KEY_MAX_SESSION_COUNT_FREQUENT, MAX_SESSION_COUNT_FREQUENT).println(); + pw.print(KEY_MAX_SESSION_COUNT_RARE, MAX_SESSION_COUNT_RARE).println(); + pw.print(KEY_MAX_SESSION_COUNT_RESTRICTED, MAX_SESSION_COUNT_RESTRICTED).println(); + pw.print(KEY_MAX_SESSION_COUNT_PER_RATE_LIMITING_WINDOW, MAX_SESSION_COUNT_PER_RATE_LIMITING_WINDOW).println(); - pw.printPair(KEY_TIMING_SESSION_COALESCING_DURATION_MS, + pw.print(KEY_TIMING_SESSION_COALESCING_DURATION_MS, TIMING_SESSION_COALESCING_DURATION_MS).println(); - pw.printPair(KEY_MIN_QUOTA_CHECK_DELAY_MS, MIN_QUOTA_CHECK_DELAY_MS).println(); + pw.print(KEY_MIN_QUOTA_CHECK_DELAY_MS, MIN_QUOTA_CHECK_DELAY_MS).println(); pw.decreaseIndent(); } diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java index 51be38be990dc..71c759931f576 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/StateController.java @@ -19,10 +19,10 @@ package com.android.server.job.controllers; import static com.android.server.job.JobSchedulerService.DEBUG; import android.content.Context; +import android.util.IndentingPrintWriter; import android.util.Slog; import android.util.proto.ProtoOutputStream; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.job.JobSchedulerService; import com.android.server.job.JobSchedulerService.Constants; import com.android.server.job.StateChangedListener; diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/StorageController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/StorageController.java index 51187dff4d596..0731918d83a1d 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/StorageController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/StorageController.java @@ -24,12 +24,12 @@ import android.content.Intent; import android.content.IntentFilter; import android.os.UserHandle; import android.util.ArraySet; +import android.util.IndentingPrintWriter; import android.util.Log; import android.util.Slog; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.job.JobSchedulerService; import com.android.server.job.StateControllerProto; import com.android.server.storage.DeviceStorageMonitorService; diff --git a/apex/jobscheduler/service/java/com/android/server/job/controllers/TimeController.java b/apex/jobscheduler/service/java/com/android/server/job/controllers/TimeController.java index 1bb9e967c025d..361ebe55ccd84 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/controllers/TimeController.java +++ b/apex/jobscheduler/service/java/com/android/server/job/controllers/TimeController.java @@ -31,6 +31,7 @@ import android.os.Process; import android.os.UserHandle; import android.os.WorkSource; import android.provider.Settings; +import android.util.IndentingPrintWriter; import android.util.KeyValueListParser; import android.util.Log; import android.util.Slog; @@ -38,7 +39,6 @@ import android.util.TimeUtils; import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.job.ConstantsProto; import com.android.server.job.JobSchedulerService; import com.android.server.job.StateControllerProto; @@ -498,7 +498,7 @@ public final class TimeController extends StateController { pw.println(); pw.println("TimeController:"); pw.increaseIndent(); - pw.printPair(KEY_USE_NON_WAKEUP_ALARM_FOR_DELAY, + pw.print(KEY_USE_NON_WAKEUP_ALARM_FOR_DELAY, USE_NON_WAKEUP_ALARM_FOR_DELAY).println(); pw.decreaseIndent(); } diff --git a/apex/jobscheduler/service/java/com/android/server/job/restrictions/JobRestriction.java b/apex/jobscheduler/service/java/com/android/server/job/restrictions/JobRestriction.java index e180c55e1bf23..ac59f9542e993 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/restrictions/JobRestriction.java +++ b/apex/jobscheduler/service/java/com/android/server/job/restrictions/JobRestriction.java @@ -17,9 +17,9 @@ package com.android.server.job.restrictions; import android.app.job.JobInfo; +import android.util.IndentingPrintWriter; import android.util.proto.ProtoOutputStream; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.job.JobSchedulerService; import com.android.server.job.controllers.JobStatus; diff --git a/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java b/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java index aa7696df6dbd5..40c8ce0d5c892 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java +++ b/apex/jobscheduler/service/java/com/android/server/job/restrictions/ThermalStatusRestriction.java @@ -19,9 +19,9 @@ package com.android.server.job.restrictions; import android.app.job.JobParameters; import android.os.PowerManager; import android.os.PowerManager.OnThermalStatusChangedListener; +import android.util.IndentingPrintWriter; import android.util.proto.ProtoOutputStream; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.job.JobSchedulerService; import com.android.server.job.JobSchedulerServiceDumpProto; import com.android.server.job.controllers.JobStatus; diff --git a/apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java b/apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java index 372ec981df02a..4b8d6f3e0e03e 100644 --- a/apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java +++ b/apex/jobscheduler/service/java/com/android/server/usage/AppIdleHistory.java @@ -36,6 +36,7 @@ import android.app.usage.UsageStatsManager; import android.os.SystemClock; import android.util.ArrayMap; import android.util.AtomicFile; +import android.util.IndentingPrintWriter; import android.util.Slog; import android.util.SparseArray; import android.util.TimeUtils; @@ -45,7 +46,6 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.util.CollectionUtils; import com.android.internal.util.FastXmlSerializer; import com.android.internal.util.FrameworkStatsLog; -import com.android.internal.util.IndentingPrintWriter; import libcore.io.IoUtils; diff --git a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java index 5bd9420a90df6..182e4e45c043d 100644 --- a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java +++ b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java @@ -95,6 +95,7 @@ import android.provider.Settings.Global; import android.telephony.TelephonyManager; import android.util.ArrayMap; import android.util.ArraySet; +import android.util.IndentingPrintWriter; import android.util.KeyValueListParser; import android.util.Slog; import android.util.SparseArray; @@ -109,7 +110,6 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.IBatteryStats; import com.android.internal.util.ArrayUtils; import com.android.internal.util.ConcurrentUtils; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.LocalServices; import com.android.server.pm.parsing.pkg.AndroidPackage; import com.android.server.usage.AppIdleHistory.AppUsageHistory; diff --git a/config/preloaded-classes b/config/preloaded-classes index 36e73d26ca726..feb0692da403d 100644 --- a/config/preloaded-classes +++ b/config/preloaded-classes @@ -6315,6 +6315,7 @@ android.util.FeatureFlagUtils android.util.FloatProperty android.util.Half android.util.IconDrawableFactory +android.util.IndentingPrintWriter android.util.IntArray android.util.IntProperty android.util.JsonReader$1 @@ -9113,7 +9114,6 @@ com.android.internal.util.GrowingArrayUtils com.android.internal.util.HexDump com.android.internal.util.IState com.android.internal.util.ImageUtils -com.android.internal.util.IndentingPrintWriter com.android.internal.util.IntPair com.android.internal.util.JournaledFile com.android.internal.util.LatencyTracker$1 diff --git a/core/java/android/util/IndentingPrintWriter.java b/core/java/android/util/IndentingPrintWriter.java new file mode 100644 index 0000000000000..9d2ebe85a1cbf --- /dev/null +++ b/core/java/android/util/IndentingPrintWriter.java @@ -0,0 +1,252 @@ +/* + * Copyright (C) 2020 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package android.util; + +import android.annotation.NonNull; +import android.annotation.Nullable; + +import java.io.PrintWriter; +import java.io.Writer; +import java.util.Arrays; + +/** + * Lightweight wrapper around {@link PrintWriter} that automatically indents + * newlines based on internal state. It also automatically wraps long lines + * based on given line length. + *

+ * Delays writing indent until first actual write on a newline, enabling indent + * modification after newline. + * + * @hide + */ +public class IndentingPrintWriter extends PrintWriter { + private final String mSingleIndent; + private final int mWrapLength; + + /** Mutable version of current indent */ + private StringBuilder mIndentBuilder = new StringBuilder(); + /** Cache of current {@link #mIndentBuilder} value */ + private char[] mCurrentIndent; + /** Length of current line being built, excluding any indent */ + private int mCurrentLength; + + /** + * Flag indicating if we're currently sitting on an empty line, and that + * next write should be prefixed with the current indent. + */ + private boolean mEmptyLine = true; + + private char[] mSingleChar = new char[1]; + + public IndentingPrintWriter(@NonNull Writer writer) { + this(writer, " ", -1); + } + + public IndentingPrintWriter(@NonNull Writer writer, @NonNull String singleIndent) { + this(writer, singleIndent, null, -1); + } + + public IndentingPrintWriter(@NonNull Writer writer, @NonNull String singleIndent, + String prefix) { + this(writer, singleIndent, prefix, -1); + } + + public IndentingPrintWriter(@NonNull Writer writer, @NonNull String singleIndent, + int wrapLength) { + this(writer, singleIndent, null, wrapLength); + } + + public IndentingPrintWriter(@NonNull Writer writer, @NonNull String singleIndent, + @Nullable String prefix, int wrapLength) { + super(writer); + mSingleIndent = singleIndent; + mWrapLength = wrapLength; + if (prefix != null) { + mIndentBuilder.append(prefix); + } + } + + /** + * Overrides the indent set in the constructor for the next printed line. + * + * @deprecated Use the "prefix" constructor parameter + * @hide + */ + @NonNull + @Deprecated + public IndentingPrintWriter setIndent(@NonNull String indent) { + mIndentBuilder.setLength(0); + mIndentBuilder.append(indent); + mCurrentIndent = null; + return this; + } + + /** + * Overrides the indent set in the constructor with {@code singleIndent} repeated {@code indent} + * times. + * + * @deprecated Use the "prefix" constructor parameter + * @hide + */ + @NonNull + @Deprecated + public IndentingPrintWriter setIndent(int indent) { + mIndentBuilder.setLength(0); + for (int i = 0; i < indent; i++) { + increaseIndent(); + } + return this; + } + + /** + * Increases the indent starting with the next printed line. + */ + @NonNull + public IndentingPrintWriter increaseIndent() { + mIndentBuilder.append(mSingleIndent); + mCurrentIndent = null; + return this; + } + + /** + * Decreases the indent starting with the next printed line. + */ + @NonNull + public IndentingPrintWriter decreaseIndent() { + mIndentBuilder.delete(0, mSingleIndent.length()); + mCurrentIndent = null; + return this; + } + + /** + * Prints a key-value pair. + */ + @NonNull + public IndentingPrintWriter print(@NonNull String key, @Nullable Object value) { + String string; + if (value == null) { + string = "null"; + } else if (value.getClass().isArray()) { + if (value.getClass() == boolean[].class) { + string = Arrays.toString((boolean[]) value); + } else if (value.getClass() == byte[].class) { + string = Arrays.toString((byte[]) value); + } else if (value.getClass() == char[].class) { + string = Arrays.toString((char[]) value); + } else if (value.getClass() == double[].class) { + string = Arrays.toString((double[]) value); + } else if (value.getClass() == float[].class) { + string = Arrays.toString((float[]) value); + } else if (value.getClass() == int[].class) { + string = Arrays.toString((int[]) value); + } else if (value.getClass() == long[].class) { + string = Arrays.toString((long[]) value); + } else if (value.getClass() == short[].class) { + string = Arrays.toString((short[]) value); + } else { + string = Arrays.toString((Object[]) value); + } + } else { + string = String.valueOf(value); + } + print(key + "=" + string + " "); + return this; + } + + /** + * Prints a key-value pair, using hexadecimal format for the value. + */ + @NonNull + public IndentingPrintWriter printHexInt(@NonNull String key, int value) { + print(key + "=0x" + Integer.toHexString(value) + " "); + return this; + } + + @Override + public void println() { + write('\n'); + } + + @Override + public void write(int c) { + mSingleChar[0] = (char) c; + write(mSingleChar, 0, 1); + } + + @Override + public void write(@NonNull String s, int off, int len) { + final char[] buf = new char[len]; + s.getChars(off, len - off, buf, 0); + write(buf, 0, len); + } + + @Override + public void write(@NonNull char[] buf, int offset, int count) { + final int indentLength = mIndentBuilder.length(); + final int bufferEnd = offset + count; + int lineStart = offset; + int lineEnd = offset; + + // March through incoming buffer looking for newlines + while (lineEnd < bufferEnd) { + char ch = buf[lineEnd++]; + mCurrentLength++; + if (ch == '\n') { + maybeWriteIndent(); + super.write(buf, lineStart, lineEnd - lineStart); + lineStart = lineEnd; + mEmptyLine = true; + mCurrentLength = 0; + } + + // Wrap if we've pushed beyond line length + if (mWrapLength > 0 && mCurrentLength >= mWrapLength - indentLength) { + if (!mEmptyLine) { + // Give ourselves a fresh line to work with + super.write('\n'); + mEmptyLine = true; + mCurrentLength = lineEnd - lineStart; + } else { + // We need more than a dedicated line, slice it hard + maybeWriteIndent(); + super.write(buf, lineStart, lineEnd - lineStart); + super.write('\n'); + mEmptyLine = true; + lineStart = lineEnd; + mCurrentLength = 0; + } + } + } + + if (lineStart != lineEnd) { + maybeWriteIndent(); + super.write(buf, lineStart, lineEnd - lineStart); + } + } + + private void maybeWriteIndent() { + if (mEmptyLine) { + mEmptyLine = false; + if (mIndentBuilder.length() != 0) { + if (mCurrentIndent == null) { + mCurrentIndent = mIndentBuilder.toString().toCharArray(); + } + super.write(mCurrentIndent, 0, mCurrentIndent.length); + } + } + } +} diff --git a/core/java/com/android/internal/util/IndentingPrintWriter.java b/core/java/com/android/internal/util/IndentingPrintWriter.java index 34c6a055d5bdb..2435afb61083a 100644 --- a/core/java/com/android/internal/util/IndentingPrintWriter.java +++ b/core/java/com/android/internal/util/IndentingPrintWriter.java @@ -18,163 +18,61 @@ package com.android.internal.util; import android.compat.annotation.UnsupportedAppUsage; -import java.io.PrintWriter; import java.io.Writer; -import java.util.Arrays; /** - * Lightweight wrapper around {@link PrintWriter} that automatically indents - * newlines based on internal state. It also automatically wraps long lines - * based on given line length. - *

- * Delays writing indent until first actual write on a newline, enabling indent - * modification after newline. + * @deprecated Use {@link android.util.IndentingPrintWriter} */ -public class IndentingPrintWriter extends PrintWriter { - private final String mSingleIndent; - private final int mWrapLength; - - /** Mutable version of current indent */ - private StringBuilder mIndentBuilder = new StringBuilder(); - /** Cache of current {@link #mIndentBuilder} value */ - private char[] mCurrentIndent; - /** Length of current line being built, excluding any indent */ - private int mCurrentLength; - - /** - * Flag indicating if we're currently sitting on an empty line, and that - * next write should be prefixed with the current indent. - */ - private boolean mEmptyLine = true; - - private char[] mSingleChar = new char[1]; +@Deprecated +public class IndentingPrintWriter extends android.util.IndentingPrintWriter { @UnsupportedAppUsage public IndentingPrintWriter(Writer writer, String singleIndent) { - this(writer, singleIndent, -1); + super(writer, singleIndent, -1); } public IndentingPrintWriter(Writer writer, String singleIndent, int wrapLength) { - super(writer); - mSingleIndent = singleIndent; - mWrapLength = wrapLength; + super(writer, singleIndent, wrapLength); + } + + public IndentingPrintWriter(Writer writer, String singleIndent, String prefix, int wrapLength) { + super(writer, singleIndent, prefix, wrapLength); } public IndentingPrintWriter setIndent(String indent) { - mIndentBuilder.setLength(0); - mIndentBuilder.append(indent); - mCurrentIndent = null; + super.setIndent(indent); return this; } public IndentingPrintWriter setIndent(int indent) { - mIndentBuilder.setLength(0); - for (int i = 0; i < indent; i++) { - increaseIndent(); - } + super.setIndent(indent); return this; } @UnsupportedAppUsage public IndentingPrintWriter increaseIndent() { - mIndentBuilder.append(mSingleIndent); - mCurrentIndent = null; + super.increaseIndent(); return this; } @UnsupportedAppUsage public IndentingPrintWriter decreaseIndent() { - mIndentBuilder.delete(0, mSingleIndent.length()); - mCurrentIndent = null; + super.decreaseIndent(); return this; } public IndentingPrintWriter printPair(String key, Object value) { - print(key + "=" + String.valueOf(value) + " "); + super.print(key, value); return this; } public IndentingPrintWriter printPair(String key, Object[] value) { - print(key + "=" + Arrays.toString(value) + " "); + super.print(key, value); return this; } public IndentingPrintWriter printHexPair(String key, int value) { - print(key + "=0x" + Integer.toHexString(value) + " "); + super.printHexInt(key, value); return this; } - - @Override - public void println() { - write('\n'); - } - - @Override - public void write(int c) { - mSingleChar[0] = (char) c; - write(mSingleChar, 0, 1); - } - - @Override - public void write(String s, int off, int len) { - final char[] buf = new char[len]; - s.getChars(off, len - off, buf, 0); - write(buf, 0, len); - } - - @Override - public void write(char[] buf, int offset, int count) { - final int indentLength = mIndentBuilder.length(); - final int bufferEnd = offset + count; - int lineStart = offset; - int lineEnd = offset; - - // March through incoming buffer looking for newlines - while (lineEnd < bufferEnd) { - char ch = buf[lineEnd++]; - mCurrentLength++; - if (ch == '\n') { - maybeWriteIndent(); - super.write(buf, lineStart, lineEnd - lineStart); - lineStart = lineEnd; - mEmptyLine = true; - mCurrentLength = 0; - } - - // Wrap if we've pushed beyond line length - if (mWrapLength > 0 && mCurrentLength >= mWrapLength - indentLength) { - if (!mEmptyLine) { - // Give ourselves a fresh line to work with - super.write('\n'); - mEmptyLine = true; - mCurrentLength = lineEnd - lineStart; - } else { - // We need more than a dedicated line, slice it hard - maybeWriteIndent(); - super.write(buf, lineStart, lineEnd - lineStart); - super.write('\n'); - mEmptyLine = true; - lineStart = lineEnd; - mCurrentLength = 0; - } - } - } - - if (lineStart != lineEnd) { - maybeWriteIndent(); - super.write(buf, lineStart, lineEnd - lineStart); - } - } - - private void maybeWriteIndent() { - if (mEmptyLine) { - mEmptyLine = false; - if (mIndentBuilder.length() != 0) { - if (mCurrentIndent == null) { - mCurrentIndent = mIndentBuilder.toString().toCharArray(); - } - super.write(mCurrentIndent, 0, mCurrentIndent.length); - } - } - } } diff --git a/core/java/com/android/internal/util/StatLogger.java b/core/java/com/android/internal/util/StatLogger.java index ca6acd6f66305..29568d5020e3a 100644 --- a/core/java/com/android/internal/util/StatLogger.java +++ b/core/java/com/android/internal/util/StatLogger.java @@ -17,6 +17,7 @@ package com.android.internal.util; import android.os.SystemClock; +import android.util.IndentingPrintWriter; import android.util.Slog; import android.util.proto.ProtoOutputStream; diff --git a/core/tests/benchmarks/src/com/android/internal/util/IndentingPrintWriterBenchmark.java b/core/tests/benchmarks/src/com/android/internal/util/IndentingPrintWriterBenchmark.java index 1112d5c40e959..34129947f31ff 100644 --- a/core/tests/benchmarks/src/com/android/internal/util/IndentingPrintWriterBenchmark.java +++ b/core/tests/benchmarks/src/com/android/internal/util/IndentingPrintWriterBenchmark.java @@ -16,9 +16,12 @@ package com.android.internal.util; +import android.util.IndentingPrintWriter; + import com.google.android.collect.Lists; import com.google.caliper.AfterExperiment; import com.google.caliper.BeforeExperiment; + import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -92,7 +95,7 @@ public class IndentingPrintWriterBenchmark { public void timePairIndenting(int reps) { final int value = 1024; for (int i = 0; i < reps; i++) { - mIndenting.printPair("key", value); + mIndenting.print("key", value); } } @@ -135,7 +138,7 @@ public class IndentingPrintWriterBenchmark { pw.println(); } - public void dumpIndenting(IndentingPrintWriter pw) { + public void dumpIndenting(android.util.IndentingPrintWriter pw) { dumpSelf(pw); if (children != null) { diff --git a/core/tests/utiltests/src/com/android/internal/util/IndentingPrintWriterTest.java b/core/tests/utiltests/src/android/util/IndentingPrintWriterTest.java similarity index 82% rename from core/tests/utiltests/src/com/android/internal/util/IndentingPrintWriterTest.java rename to core/tests/utiltests/src/android/util/IndentingPrintWriterTest.java index 67736124f1750..3c38c269fe9b5 100644 --- a/core/tests/utiltests/src/com/android/internal/util/IndentingPrintWriterTest.java +++ b/core/tests/utiltests/src/android/util/IndentingPrintWriterTest.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2013 The Android Open Source Project + * Copyright (C) 2020 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -14,9 +14,15 @@ * limitations under the License. */ -package com.android.internal.util; +package android.util; -import junit.framework.TestCase; +import static junit.framework.Assert.assertEquals; + +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; import java.io.ByteArrayOutputStream; import java.io.PrintWriter; @@ -24,19 +30,19 @@ import java.io.PrintWriter; /** * Tests for {@link IndentingPrintWriter}. */ -public class IndentingPrintWriterTest extends TestCase { +@RunWith(AndroidJUnit4.class) +public class IndentingPrintWriterTest { private ByteArrayOutputStream mStream; private PrintWriter mWriter; - @Override - protected void setUp() throws Exception { - super.setUp(); - + @Before + public void setUp() throws Exception { mStream = new ByteArrayOutputStream(); mWriter = new PrintWriter(mStream); } + @Test public void testMultipleIndents() throws Exception { final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, " "); @@ -59,6 +65,7 @@ public class IndentingPrintWriterTest extends TestCase { assertEquals("Hello\n World\n And\n Goodbye\nWorld\n", mStream.toString()); } + @Test public void testAdjustIndentAfterNewline() throws Exception { final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, " "); @@ -70,6 +77,7 @@ public class IndentingPrintWriterTest extends TestCase { assertEquals("Hello\n World\n", mStream.toString()); } + @Test public void testWrapping() throws Exception { final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, "", 10); @@ -82,6 +90,7 @@ public class IndentingPrintWriterTest extends TestCase { assertEquals("dog cat \ncow meow ", mStream.toString()); } + @Test public void testWrappingIndented() throws Exception { final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, " ", 10); @@ -96,6 +105,7 @@ public class IndentingPrintWriterTest extends TestCase { assertEquals(" dog \n meow \n a b \n cow ", mStream.toString()); } + @Test public void testWrappingEmbeddedNewlines() throws Exception { final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, " ", 10); @@ -107,6 +117,7 @@ public class IndentingPrintWriterTest extends TestCase { + " nsectetu\n r \n adipisci\n ng elit.\n", mStream.toString()); } + @Test public void testWrappingSingleGiant() throws Exception { final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, " ", 10); @@ -118,6 +129,7 @@ public class IndentingPrintWriterTest extends TestCase { + " ectetur \n adipisci\n ng elit.\n", mStream.toString()); } + @Test public void testWrappingPrefixedGiant() throws Exception { final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, " ", 10); @@ -129,4 +141,15 @@ public class IndentingPrintWriterTest extends TestCase { assertEquals(" foo\n Lorem ip\n sum dolo\n r sit am\n et, cons\n" + " ectetur \n adipisci\n ng elit.\n", mStream.toString()); } + + @Test + public void testArrayValue() { + final IndentingPrintWriter pw = new IndentingPrintWriter(mWriter, " "); + pw.increaseIndent(); + pw.print("strings", new String[]{"a", "b", "c"}); + pw.print("ints", new int[]{1, 2}); + pw.flush(); + + assertEquals(" strings=[a, b, c] ints=[1, 2] ", mStream.toString()); + } } diff --git a/services/core/java/com/android/server/AppStateTracker.java b/services/core/java/com/android/server/AppStateTracker.java index 7c01f36948ac6..92cfc24c02329 100644 --- a/services/core/java/com/android/server/AppStateTracker.java +++ b/services/core/java/com/android/server/AppStateTracker.java @@ -40,6 +40,7 @@ import android.os.ServiceManager; import android.os.UserHandle; import android.provider.Settings; import android.util.ArraySet; +import android.util.IndentingPrintWriter; import android.util.Pair; import android.util.Slog; import android.util.SparseBooleanArray; @@ -51,7 +52,6 @@ import com.android.internal.annotations.VisibleForTesting; import com.android.internal.app.IAppOpsCallback; import com.android.internal.app.IAppOpsService; import com.android.internal.util.ArrayUtils; -import com.android.internal.util.IndentingPrintWriter; import com.android.internal.util.StatLogger; import com.android.server.AppStateTrackerProto.ExemptedPackage; import com.android.server.AppStateTrackerProto.RunAnyInBackgroundRestrictedPackages; diff --git a/services/core/java/com/android/server/utils/quota/QuotaTracker.java b/services/core/java/com/android/server/utils/quota/QuotaTracker.java index 115b5c8d40109..7a17c64795777 100644 --- a/services/core/java/com/android/server/utils/quota/QuotaTracker.java +++ b/services/core/java/com/android/server/utils/quota/QuotaTracker.java @@ -32,6 +32,7 @@ import android.os.Handler; import android.os.SystemClock; import android.os.UserHandle; import android.util.ArraySet; +import android.util.IndentingPrintWriter; import android.util.Pair; import android.util.Slog; import android.util.SparseArrayMap; @@ -41,7 +42,6 @@ import android.util.quota.QuotaTrackerProto; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.BackgroundThread; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.FgThread; import com.android.server.LocalServices; import com.android.server.SystemServiceManager; diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/StateControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/StateControllerTest.java index 7a12b425ca999..612e906713455 100644 --- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/StateControllerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/StateControllerTest.java @@ -32,11 +32,11 @@ import android.content.ComponentName; import android.content.Context; import android.content.pm.PackageManagerInternal; import android.os.SystemClock; +import android.util.IndentingPrintWriter; import android.util.proto.ProtoOutputStream; import androidx.test.runner.AndroidJUnit4; -import com.android.internal.util.IndentingPrintWriter; import com.android.server.LocalServices; import com.android.server.job.JobSchedulerService; import com.android.server.job.JobSchedulerService.Constants;