diff options
554 files changed, 9192 insertions, 24931 deletions
diff --git a/Android.bp b/Android.bp index da52c2320048..685c69df6823 100644 --- a/Android.bp +++ b/Android.bp @@ -375,7 +375,6 @@ java_library { static_libs: [ "app-compat-annotations", "framework-minus-apex", - "framework-connectivity.impl", // TODO(b/182859030): should be removed "framework-appsearch.impl", // TODO(b/146218515): should be removed "framework-updatable-stubs-module_libs_api", ], diff --git a/ProtoLibraries.bp b/ProtoLibraries.bp index 14415dbed877..7e3cc2739cd0 100644 --- a/ProtoLibraries.bp +++ b/ProtoLibraries.bp @@ -35,6 +35,7 @@ gensrcs { srcs: [ ":ipconnectivity-proto-src", ":libstats_atom_enum_protos", + ":libstats_atom_message_protos", ":libtombstone_proto-src", "core/proto/**/*.proto", "libs/incident/**/*.proto", @@ -64,6 +65,7 @@ gensrcs { srcs: [ ":ipconnectivity-proto-src", ":libstats_atom_enum_protos", + ":libstats_atom_message_protos", "core/proto/**/*.proto", "libs/incident/**/*.proto", ":service-permission-protos", @@ -78,6 +80,7 @@ java_library_host { srcs: [ ":ipconnectivity-proto-src", ":libstats_atom_enum_protos", + ":libstats_atom_message_protos", ":libstats_internal_protos", ":statsd_internal_protos", "cmds/am/proto/instrumentation_data.proto", @@ -116,6 +119,7 @@ java_library { srcs: [ ":ipconnectivity-proto-src", ":libstats_atom_enum_protos", + ":libstats_atom_message_protos", "core/proto/**/*.proto", "libs/incident/proto/android/os/**/*.proto", ":service-permission-protos", @@ -133,6 +137,7 @@ java_library { srcs: [ ":ipconnectivity-proto-src", ":libstats_atom_enum_protos", + ":libstats_atom_message_protos", "core/proto/**/*.proto", "libs/incident/proto/android/os/**/*.proto", ":service-permission-protos", @@ -169,6 +174,7 @@ cc_defaults { srcs: [ ":ipconnectivity-proto-src", ":libstats_atom_enum_protos", + ":libstats_atom_message_protos", "core/proto/**/*.proto", ":service-permission-protos", ], diff --git a/TEST_MAPPING b/TEST_MAPPING index 9ceef6bbe8a3..c5c60123d6cb 100644 --- a/TEST_MAPPING +++ b/TEST_MAPPING @@ -1,15 +1,23 @@ { - "presubmit": [ + "presubmit-large": [ { - "name": "FrameworksUiServicesTests", + "name": "FrameworksServicesTests", "options": [ { + "include-annotation": "android.platform.test.annotations.Presubmit" + }, + { "exclude-annotation": "androidx.test.filters.FlakyTest" + }, + { + "exclude-annotation": "org.junit.Ignore" } ] - }, + } + ], + "presubmit": [ { - "name": "ExtServicesUnitTests", + "name": "FrameworksUiServicesTests", "options": [ { "exclude-annotation": "androidx.test.filters.FlakyTest" @@ -17,7 +25,7 @@ ] }, { - "name": "TestablesTests", + "name": "ExtServicesUnitTests", "options": [ { "exclude-annotation": "androidx.test.filters.FlakyTest" @@ -25,21 +33,15 @@ ] }, { - "name": "FrameworksCoreTests", + "name": "TestablesTests", "options": [ { - "include-annotation": "android.platform.test.annotations.Presubmit" - }, - { "exclude-annotation": "androidx.test.filters.FlakyTest" - }, - { - "exclude-annotation": "org.junit.Ignore" } ] }, { - "name": "FrameworkPermissionTests", + "name": "FrameworksCoreTests", "options": [ { "include-annotation": "android.platform.test.annotations.Presubmit" @@ -53,7 +55,7 @@ ] }, { - "name": "FrameworksServicesTests", + "name": "FrameworkPermissionTests", "options": [ { "include-annotation": "android.platform.test.annotations.Presubmit" diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java index 977682771ca3..8af91b480889 100644 --- a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java +++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java @@ -29,14 +29,16 @@ import java.util.function.Consumer; /** * Provides access to the centralized AppSearch index maintained by the system. * - * <p>AppSearch is a search library for managing structured data featuring: + * <p>AppSearch is an offline, on-device search library for managing structured data featuring: * * <ul> - * <li>A fully offline on-device solution - * <li>A set of APIs for applications to index documents and retrieve them via full-text search - * <li>APIs for applications to allow the System to display their content on system UI surfaces - * <li>Similarly, APIs for applications to allow the System to share their content with other - * specified applications. + * <li>APIs to index and retrieve data via full-text search. + * <li>An API for applications to explicitly grant read-access permission of their data to other + * applications. + * <b>See: {@link SetSchemaRequest.Builder#setSchemaTypeVisibilityForPackage}</b> + * <li>An API for applications to opt into or out of having their data displayed on System UI + * surfaces by the System-designated global querier. + * <b>See: {@link SetSchemaRequest.Builder#setSchemaTypeDisplayedBySystem}</b> * </ul> * * <p>Applications create a database by opening an {@link AppSearchSession}. diff --git a/apex/jobscheduler/framework/java/android/app/AlarmManager.java b/apex/jobscheduler/framework/java/android/app/AlarmManager.java index 9ea6f7946fcf..01f31e43989e 100644 --- a/apex/jobscheduler/framework/java/android/app/AlarmManager.java +++ b/apex/jobscheduler/framework/java/android/app/AlarmManager.java @@ -19,6 +19,7 @@ package android.app; import android.Manifest; import android.annotation.IntDef; import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SdkConstant; import android.annotation.SystemApi; @@ -591,8 +592,8 @@ public class AlarmManager { * in milliseconds. The alarm will be delivered no later than this many * milliseconds after {@code windowStartMillis}. Note that this parameter * is a <i>duration,</i> not the timestamp of the end of the window. - * @param tag string describing the alarm, used for logging and battery-use - * attribution + * @param tag Optional. A string describing the alarm, used for logging and battery-use + * attribution. * @param listener {@link OnAlarmListener} instance whose * {@link OnAlarmListener#onAlarm() onAlarm()} method will be * called when the alarm time is reached. A given OnAlarmListener instance can @@ -605,9 +606,8 @@ public class AlarmManager { @SystemApi @RequiresPermission(Manifest.permission.SCHEDULE_PRIORITIZED_ALARM) public void setPrioritized(@AlarmType int type, long windowStartMillis, long windowLengthMillis, - @NonNull String tag, @NonNull Executor executor, @NonNull OnAlarmListener listener) { + @Nullable String tag, @NonNull Executor executor, @NonNull OnAlarmListener listener) { Objects.requireNonNull(executor); - Objects.requireNonNull(tag); Objects.requireNonNull(listener); setImpl(type, windowStartMillis, windowLengthMillis, 0, FLAG_PRIORITIZE, null, listener, tag, executor, null, null); @@ -782,6 +782,50 @@ public class AlarmManager { targetHandler, workSource, null); } + /** + * Exact version of {@link #set(int, long, long, long, OnAlarmListener, Handler, WorkSource)}. + * This equivalent to calling the aforementioned API with {@code windowMillis} and + * {@code intervalMillis} set to 0. + * One subtle difference is that this API requires {@code workSource} to be non-null. If you + * don't want to attribute this alarm to another app for battery consumption, you should use + * {@link #setExact(int, long, String, OnAlarmListener, Handler)} instead. + * + * <p> + * Note that using this API requires you to hold + * {@link Manifest.permission#SCHEDULE_EXACT_ALARM}, unless you are on the system's power + * allowlist. This can be set, for example, by marking the app as {@code <allow-in-power-save>} + * within the system config. + * + * @param type type of alarm + * @param triggerAtMillis The exact time in milliseconds, that the alarm should be delivered, + * expressed in the appropriate clock's units (depending on the alarm + * type). + * @param listener {@link OnAlarmListener} instance whose + * {@link OnAlarmListener#onAlarm() onAlarm()} method will be called when + * the alarm time is reached. + * @param executor The {@link Executor} on which to execute the listener's onAlarm() + * callback. + * @param tag Optional. A string tag used to identify this alarm in logs and + * battery-attribution. + * @param workSource A {@link WorkSource} object to attribute this alarm to the app that + * requested this work. + * @hide + */ + @SystemApi + @RequiresPermission(allOf = { + Manifest.permission.UPDATE_DEVICE_STATS, + Manifest.permission.SCHEDULE_EXACT_ALARM}, conditional = true) + public void setExact(@AlarmType int type, long triggerAtMillis, @Nullable String tag, + @NonNull Executor executor, @NonNull WorkSource workSource, + @NonNull OnAlarmListener listener) { + Objects.requireNonNull(executor); + Objects.requireNonNull(workSource); + Objects.requireNonNull(listener); + setImpl(type, triggerAtMillis, WINDOW_EXACT, 0, 0, null, listener, tag, executor, + workSource, null); + } + + private void setImpl(@AlarmType int type, long triggerAtMillis, long windowMillis, long intervalMillis, int flags, PendingIntent operation, final OnAlarmListener listener, String listenerTag, Handler targetHandler, WorkSource workSource, diff --git a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java index 44e87c370fc1..50f9a58bbe61 100644 --- a/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java +++ b/apex/jobscheduler/framework/java/android/os/PowerExemptionManager.java @@ -185,6 +185,11 @@ public class PowerExemptionManager { public static final int REASON_OP_ACTIVATE_VPN = 68; /** @hide */ public static final int REASON_OP_ACTIVATE_PLATFORM_VPN = 69; + /** + * Temporarily allowed to have FGS while-in-use permissions. + * @hide + */ + public static final int REASON_TEMP_ALLOWED_WHILE_IN_USE = 70; /* BG-FGS-launch is allowed by temp-allow-list or system-allow-list. Reason code for temp and system allow list starts here. @@ -283,9 +288,10 @@ public class PowerExemptionManager { */ public static final int REASON_PACKAGE_REPLACED = 311; /** - * LocationProviderManager. + * LocationProvider. * @hide */ + @SystemApi public static final int REASON_LOCATION_PROVIDER = 312; /** * MediaButtonReceiver. @@ -347,6 +353,7 @@ public class PowerExemptionManager { REASON_ACTIVITY_VISIBILITY_GRACE_PERIOD, REASON_OP_ACTIVATE_VPN, REASON_OP_ACTIVATE_PLATFORM_VPN, + REASON_TEMP_ALLOWED_WHILE_IN_USE, // temp and system allow list reasons. REASON_GEOFENCING, REASON_PUSH_MESSAGING, @@ -608,6 +615,8 @@ public class PowerExemptionManager { return "OP_ACTIVATE_VPN"; case REASON_OP_ACTIVATE_PLATFORM_VPN: return "OP_ACTIVATE_PLATFORM_VPN"; + case REASON_TEMP_ALLOWED_WHILE_IN_USE: + return "TEMP_ALLOWED_WHILE_IN_USE"; case REASON_GEOFENCING: return "GEOFENCING"; case REASON_PUSH_MESSAGING: diff --git a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java index 29a5dee0be26..4ce31e96208c 100644 --- a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java +++ b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java @@ -284,9 +284,10 @@ public class PowerWhitelistManager { */ public static final int REASON_PACKAGE_REPLACED = PowerExemptionManager.REASON_PACKAGE_REPLACED; /** - * LocationProviderManager. + * LocationProvider. * @hide */ + @SystemApi public static final int REASON_LOCATION_PROVIDER = PowerExemptionManager.REASON_LOCATION_PROVIDER; /** 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 131783f9e04e..e60a5d189ea6 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java @@ -179,7 +179,7 @@ class JobConcurrencyManager { new WorkConfigLimitsPerMemoryTrimLevel( new WorkTypeConfig("screen_on_normal", 11, // defaultMin - List.of(Pair.create(WORK_TYPE_TOP, 2), Pair.create(WORK_TYPE_FGS, 1), + List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 1), Pair.create(WORK_TYPE_EJ, 3), Pair.create(WORK_TYPE_BG, 2), Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1)), // defaultMax @@ -202,7 +202,7 @@ class JobConcurrencyManager { List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 1), Pair.create(WORK_TYPE_EJ, 1)), // defaultMax - List.of(Pair.create(WORK_TYPE_BG, 1), + List.of(Pair.create(WORK_TYPE_BG, 2), Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1), Pair.create(WORK_TYPE_BGUSER, 1)) ), @@ -218,23 +218,23 @@ class JobConcurrencyManager { ); private static final WorkConfigLimitsPerMemoryTrimLevel CONFIG_LIMITS_SCREEN_OFF = new WorkConfigLimitsPerMemoryTrimLevel( - new WorkTypeConfig("screen_off_normal", 15, + new WorkTypeConfig("screen_off_normal", 16, // defaultMin List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 2), Pair.create(WORK_TYPE_EJ, 3), Pair.create(WORK_TYPE_BG, 2), Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1)), // defaultMax - List.of(Pair.create(WORK_TYPE_BG, 6), + List.of(Pair.create(WORK_TYPE_BG, 10), Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 2), Pair.create(WORK_TYPE_BGUSER, 3)) ), - new WorkTypeConfig("screen_off_moderate", 15, + new WorkTypeConfig("screen_off_moderate", 14, // defaultMin - List.of(Pair.create(WORK_TYPE_TOP, 6), Pair.create(WORK_TYPE_FGS, 2), + List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 2), Pair.create(WORK_TYPE_EJ, 3), Pair.create(WORK_TYPE_BG, 2), Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1)), // defaultMax - List.of(Pair.create(WORK_TYPE_BG, 4), + List.of(Pair.create(WORK_TYPE_BG, 7), Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1), Pair.create(WORK_TYPE_BGUSER, 1)) ), @@ -243,7 +243,7 @@ class JobConcurrencyManager { List.of(Pair.create(WORK_TYPE_TOP, 4), Pair.create(WORK_TYPE_FGS, 1), Pair.create(WORK_TYPE_EJ, 2), Pair.create(WORK_TYPE_BG, 1)), // defaultMax - List.of(Pair.create(WORK_TYPE_BG, 1), + List.of(Pair.create(WORK_TYPE_BG, 3), Pair.create(WORK_TYPE_BGUSER_IMPORTANT, 1), Pair.create(WORK_TYPE_BGUSER, 1)) ), @@ -470,6 +470,11 @@ class JobConcurrencyManager { } } + @GuardedBy("mLock") + boolean isJobRunningLocked(JobStatus job) { + return mRunningJobs.contains(job); + } + /** Return {@code true} if the state was updated. */ @GuardedBy("mLock") private boolean refreshSystemStateLocked() { @@ -798,7 +803,8 @@ class JobConcurrencyManager { private void startJobLocked(@NonNull JobServiceContext worker, @NonNull JobStatus jobStatus, @WorkType final int workType) { final List<StateController> controllers = mService.mControllers; - for (int ic = 0; ic < controllers.size(); ic++) { + final int numControllers = controllers.size(); + for (int ic = 0; ic < numControllers; ic++) { controllers.get(ic).prepareForExecutionLocked(jobStatus); } final PackageStats packageStats = @@ -807,6 +813,9 @@ class JobConcurrencyManager { if (!worker.executeRunnableJob(jobStatus, workType)) { Slog.e(TAG, "Error executing " + jobStatus); mWorkCountTracker.onStagedJobFailed(workType); + for (int ic = 0; ic < numControllers; ic++) { + controllers.get(ic).unprepareFromExecutionLocked(jobStatus); + } } else { mRunningJobs.add(jobStatus); mWorkCountTracker.onJobStarted(workType); 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 181566169ed7..1eebae83bc13 100644 --- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java @@ -336,8 +336,6 @@ public class JobSchedulerService extends com.android.server.SystemService // (ScheduledJobStateChanged and JobStatusDumpProto). public static final int RESTRICTED_INDEX = 5; - // -- Pre-allocated temporaries only for use in assignJobsToContextsLocked -- - private class ConstantsObserver implements DeviceConfig.OnPropertiesChangedListener { public void start() { DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_JOB_SCHEDULER, @@ -1632,22 +1630,6 @@ public class JobSchedulerService extends com.android.server.SystemService return false; } - /** - * @param job JobStatus we are querying against. - * @return Whether or not the job represented by the status object is currently being run or - * is pending. - */ - private boolean isCurrentlyActiveLocked(JobStatus job) { - for (int i=0; i<mActiveServices.size(); i++) { - JobServiceContext serviceContext = mActiveServices.get(i); - final JobStatus running = serviceContext.getRunningJobLocked(); - if (running != null && running.matches(job.getUid(), job.getJobId())) { - return true; - } - } - return false; - } - void noteJobsPending(List<JobStatus> jobs) { for (int i = jobs.size() - 1; i >= 0; i--) { JobStatus job = jobs.get(i); @@ -2253,10 +2235,12 @@ public class JobSchedulerService extends com.android.server.SystemService * - The component is enabled and runnable. */ @VisibleForTesting + @GuardedBy("mLock") boolean isReadyToBeExecutedLocked(JobStatus job) { return isReadyToBeExecutedLocked(job, true); } + @GuardedBy("mLock") boolean isReadyToBeExecutedLocked(JobStatus job, boolean rejectActive) { final boolean jobReady = job.isReady(); @@ -2296,7 +2280,7 @@ public class JobSchedulerService extends com.android.server.SystemService } final boolean jobPending = mPendingJobs.contains(job); - final boolean jobActive = rejectActive && isCurrentlyActiveLocked(job); + final boolean jobActive = rejectActive && mConcurrencyManager.isJobRunningLocked(job); if (DEBUG) { Slog.v(TAG, "isReadyToBeExecutedLocked: " + job.toShortString() @@ -2452,7 +2436,7 @@ public class JobSchedulerService extends com.android.server.SystemService synchronized (mLock) { final List<JobInfo> pendingJobs = new ArrayList<JobInfo>(); mJobs.forEachJob(Process.SYSTEM_UID, (job) -> { - if (job.getJob().isPeriodic() || !isCurrentlyActiveLocked(job)) { + if (job.getJob().isPeriodic() || !mConcurrencyManager.isJobRunningLocked(job)) { pendingJobs.add(job.getJob()); } }); @@ -3101,7 +3085,7 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print("pending"); printed = true; } - if (isCurrentlyActiveLocked(js)) { + if (mConcurrencyManager.isJobRunningLocked(js)) { if (printed) { pw.print(" "); } @@ -3284,7 +3268,7 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print(" !pending="); pw.print(!mPendingJobs.contains(job)); pw.print(" !active="); - pw.print(!isCurrentlyActiveLocked(job)); + pw.print(!mConcurrencyManager.isJobRunningLocked(job)); pw.print(" !backingup="); pw.print(!(mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0)); pw.print(" comp="); @@ -3540,7 +3524,7 @@ public class JobSchedulerService extends com.android.server.SystemService proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_PENDING, mPendingJobs.contains(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_CURRENTLY_ACTIVE, - isCurrentlyActiveLocked(job)); + mConcurrencyManager.isJobRunningLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_UID_BACKING_UP, mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_COMPONENT_USABLE, 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 500735b0b299..2bdf65643d97 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 @@ -77,7 +77,7 @@ public final class ConnectivityController extends RestrictingController implemen || Log.isLoggable(TAG, Log.DEBUG); // The networking stack has a hard limit so we can't make this configurable. - private static final int MAX_NETWORK_CALLBACKS = 50; + private static final int MAX_NETWORK_CALLBACKS = 125; /** * Minimum amount of time that should have elapsed before we'll update a {@link UidStats} * instance. @@ -148,7 +148,8 @@ public final class ConnectivityController extends RestrictingController implemen // 9. Enqueue time // TODO: maybe consider number of jobs // TODO: consider IMPORTANT_WHILE_FOREGROUND bit - final int runningPriority = prioritizeExistenceOver(0, us1.numRunning, us2.numRunning); + final int runningPriority = prioritizeExistenceOver(0, + us1.runningJobs.size(), us2.runningJobs.size()); if (runningPriority != 0) { return runningPriority; } @@ -256,7 +257,18 @@ public final class ConnectivityController extends RestrictingController implemen if (jobStatus.hasConnectivityConstraint()) { final UidStats uidStats = getUidStats(jobStatus.getSourceUid(), jobStatus.getSourcePackageName(), true); - uidStats.numRunning++; + uidStats.runningJobs.add(jobStatus); + } + } + + @GuardedBy("mLock") + @Override + public void unprepareFromExecutionLocked(JobStatus jobStatus) { + if (jobStatus.hasConnectivityConstraint()) { + final UidStats uidStats = + getUidStats(jobStatus.getSourceUid(), jobStatus.getSourcePackageName(), true); + uidStats.runningJobs.remove(jobStatus); + postAdjustCallbacks(); } } @@ -272,12 +284,7 @@ public final class ConnectivityController extends RestrictingController implemen final UidStats uidStats = getUidStats(jobStatus.getSourceUid(), jobStatus.getSourcePackageName(), true); uidStats.numReadyWithConnectivity--; - if (jobStatus.madeActive != 0) { - // numRunning would be 0 if the UidStats object didn't exist before this method - // was called. getUidStats() handles logging, so just make sure we don't save a - // negative value. - uidStats.numRunning = Math.max(0, uidStats.numRunning - 1); - } + uidStats.runningJobs.remove(jobStatus); maybeRevokeStandbyExceptionLocked(jobStatus); postAdjustCallbacks(); } @@ -1151,7 +1158,7 @@ public final class ConnectivityController extends RestrictingController implemen private static class UidStats { public final int uid; public int basePriority; - public int numRunning; + public final ArraySet<JobStatus> runningJobs = new ArraySet<>(); public int numReadyWithConnectivity; public int numRequestedNetworkAvailable; public int numEJs; @@ -1168,7 +1175,7 @@ public final class ConnectivityController extends RestrictingController implemen pw.print("UidStats{"); pw.print("uid", uid); pw.print("pri", basePriority); - pw.print("#run", numRunning); + pw.print("#run", runningJobs.size()); pw.print("#readyWithConn", numReadyWithConnectivity); pw.print("#netAvail", numRequestedNetworkAvailable); pw.print("#EJs", numEJs); 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 8b0da3471781..e64233ff4187 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 @@ -136,6 +136,29 @@ public final class ContentObserverController extends StateController { } @Override + public void unprepareFromExecutionLocked(JobStatus taskStatus) { + if (taskStatus.hasContentTriggerConstraint()) { + if (taskStatus.contentObserverJobInstance != null) { + if (taskStatus.contentObserverJobInstance.mChangedUris == null) { + taskStatus.contentObserverJobInstance.mChangedUris = taskStatus.changedUris; + } else { + taskStatus.contentObserverJobInstance.mChangedUris + .addAll(taskStatus.changedUris); + } + if (taskStatus.contentObserverJobInstance.mChangedAuthorities == null) { + taskStatus.contentObserverJobInstance.mChangedAuthorities = + taskStatus.changedAuthorities; + } else { + taskStatus.contentObserverJobInstance.mChangedAuthorities + .addAll(taskStatus.changedAuthorities); + } + taskStatus.changedUris = null; + taskStatus.changedAuthorities = null; + } + } + } + + @Override public void maybeStopTrackingJobLocked(JobStatus taskStatus, JobStatus incomingJob, boolean forUpdate) { if (taskStatus.clearTrackingController(JobStatus.TRACKING_CONTENT)) { 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 d4ce43732864..aace6457fc9d 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 @@ -34,7 +34,6 @@ import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.ActivityManager; import android.app.AlarmManager; -import android.app.AppGlobals; import android.app.IUidObserver; import android.app.usage.UsageEvents; import android.app.usage.UsageStatsManagerInternal; @@ -677,27 +676,30 @@ public final class QuotaController extends StateController { } @Override - public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob, - boolean forUpdate) { - if (jobStatus.clearTrackingController(JobStatus.TRACKING_QUOTA)) { - Timer timer = mPkgTimers.get(jobStatus.getSourceUserId(), - jobStatus.getSourcePackageName()); + public void unprepareFromExecutionLocked(JobStatus jobStatus) { + Timer timer = mPkgTimers.get(jobStatus.getSourceUserId(), jobStatus.getSourcePackageName()); + if (timer != null) { + timer.stopTrackingJob(jobStatus); + } + if (jobStatus.isRequestedExpeditedJob()) { + timer = mEJPkgTimers.get(jobStatus.getSourceUserId(), jobStatus.getSourcePackageName()); if (timer != null) { timer.stopTrackingJob(jobStatus); } - if (jobStatus.isRequestedExpeditedJob()) { - timer = mEJPkgTimers.get(jobStatus.getSourceUserId(), - jobStatus.getSourcePackageName()); - if (timer != null) { - timer.stopTrackingJob(jobStatus); - } - } + } + mTopStartedJobs.remove(jobStatus); + } + + @Override + public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob, + boolean forUpdate) { + if (jobStatus.clearTrackingController(JobStatus.TRACKING_QUOTA)) { + unprepareFromExecutionLocked(jobStatus); ArraySet<JobStatus> jobs = mTrackedJobs.get(jobStatus.getSourceUserId(), jobStatus.getSourcePackageName()); if (jobs != null) { jobs.remove(jobStatus); } - mTopStartedJobs.remove(jobStatus); } } 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 334876f57f29..f0fc3b00a7bc 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 @@ -76,6 +76,12 @@ public abstract class StateController { } /** + * Optionally implement logic here for when a job that was about to be executed failed to start. + */ + public void unprepareFromExecutionLocked(JobStatus jobStatus) { + } + + /** * Remove task - this will happen if the task is cancelled, completed, etc. */ public abstract void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob, diff --git a/apex/jobscheduler/service/jni/Android.bp b/apex/jobscheduler/service/jni/Android.bp index 333da74400e0..34a1fa2ebc13 100644 --- a/apex/jobscheduler/service/jni/Android.bp +++ b/apex/jobscheduler/service/jni/Android.bp @@ -29,14 +29,3 @@ cc_library_shared { "libbase", ], } - -filegroup { - name: "lib_alarmManagerService_native", - srcs: [ - "com_android_server_alarm_AlarmManagerService.cpp", - ], - visibility: [ - // TODO: remove this - "//vendor:__subpackages__", - ], -} diff --git a/boot/Android.bp b/boot/Android.bp index 844dd64ce8d7..ef2abc885fcf 100644 --- a/boot/Android.bp +++ b/boot/Android.bp @@ -44,6 +44,19 @@ package { platform_bootclasspath { name: "platform-bootclasspath", + // The bootclasspath_fragments that contribute to the platform + // bootclasspath. + fragments: [ + { + apex: "com.android.art", + module: "art-bootclasspath-fragment", + }, + { + apex: "com.android.i18n", + module: "i18n-bootclasspath-fragment", + }, + ], + // Additional information needed by hidden api processing. hidden_api: { unsupported: [ @@ -64,9 +77,6 @@ platform_bootclasspath { max_target_o_low_priority: [ "hiddenapi/hiddenapi-max-target-o.txt", ], - blocked: [ - "hiddenapi/hiddenapi-force-blocked.txt", - ], unsupported_packages: [ "hiddenapi/hiddenapi-unsupported-packages.txt", ], diff --git a/boot/hiddenapi/hiddenapi-force-blocked.txt b/boot/hiddenapi/hiddenapi-force-blocked.txt deleted file mode 100644 index b328f2ac1955..000000000000 --- a/boot/hiddenapi/hiddenapi-force-blocked.txt +++ /dev/null @@ -1,40 +0,0 @@ -Ldalvik/system/VMRuntime;->setHiddenApiExemptions([Ljava/lang/String;)V -Ldalvik/system/VMRuntime;->setTargetSdkVersion(I)V -Ldalvik/system/VMRuntime;->setTargetSdkVersionNative(I)V -Ljava/lang/invoke/MethodHandles$Lookup;->IMPL_LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup; -Ljava/lang/invoke/VarHandle;->acquireFence()V -Ljava/lang/invoke/VarHandle;->compareAndExchange([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->compareAndExchangeAcquire([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->compareAndExchangeRelease([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->compareAndSet([Ljava/lang/Object;)Z -Ljava/lang/invoke/VarHandle;->fullFence()V -Ljava/lang/invoke/VarHandle;->get([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAcquire([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndAdd([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndAddAcquire([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndAddRelease([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndBitwiseAnd([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndBitwiseAndAcquire([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndBitwiseAndRelease([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndBitwiseOr([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndBitwiseOrAcquire([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndBitwiseOrRelease([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndBitwiseXor([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndBitwiseXorAcquire([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndBitwiseXorRelease([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndSet([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndSetAcquire([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getAndSetRelease([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getOpaque([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->getVolatile([Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/VarHandle;->loadLoadFence()V -Ljava/lang/invoke/VarHandle;->releaseFence()V -Ljava/lang/invoke/VarHandle;->set([Ljava/lang/Object;)V -Ljava/lang/invoke/VarHandle;->setOpaque([Ljava/lang/Object;)V -Ljava/lang/invoke/VarHandle;->setRelease([Ljava/lang/Object;)V -Ljava/lang/invoke/VarHandle;->setVolatile([Ljava/lang/Object;)V -Ljava/lang/invoke/VarHandle;->storeStoreFence()V -Ljava/lang/invoke/VarHandle;->weakCompareAndSet([Ljava/lang/Object;)Z -Ljava/lang/invoke/VarHandle;->weakCompareAndSetAcquire([Ljava/lang/Object;)Z -Ljava/lang/invoke/VarHandle;->weakCompareAndSetPlain([Ljava/lang/Object;)Z -Ljava/lang/invoke/VarHandle;->weakCompareAndSetRelease([Ljava/lang/Object;)Z diff --git a/boot/hiddenapi/hiddenapi-max-target-o.txt b/boot/hiddenapi/hiddenapi-max-target-o.txt index 3fee56863cf5..45ebbb1ea526 100644 --- a/boot/hiddenapi/hiddenapi-max-target-o.txt +++ b/boot/hiddenapi/hiddenapi-max-target-o.txt @@ -25375,7248 +25375,6 @@ Landroid/hardware/usb/UsbRequest;->native_queue(Ljava/nio/ByteBuffer;II)Z Landroid/hardware/usb/UsbRequest;->native_queue_array([BIZ)Z Landroid/hardware/usb/UsbRequest;->native_queue_direct(Ljava/nio/ByteBuffer;IZ)Z Landroid/hardware/usb/UsbRequest;->TAG:Ljava/lang/String; -Landroid/icu/impl/BMPSet;->bmpBlockBits:[I -Landroid/icu/impl/BMPSet;->containsSlow(III)Z -Landroid/icu/impl/BMPSet;->findCodePoint(III)I -Landroid/icu/impl/BMPSet;->initBits()V -Landroid/icu/impl/BMPSet;->latin1Contains:[Z -Landroid/icu/impl/BMPSet;->list4kStarts:[I -Landroid/icu/impl/BMPSet;->list:[I -Landroid/icu/impl/BMPSet;->listLength:I -Landroid/icu/impl/BMPSet;->set32x64Bits([III)V -Landroid/icu/impl/BMPSet;->table7FF:[I -Landroid/icu/impl/CacheValue$NullValue;-><init>()V -Landroid/icu/impl/CacheValue$SoftValue;-><init>(Ljava/lang/Object;)V -Landroid/icu/impl/CacheValue$SoftValue;->ref:Ljava/lang/ref/Reference; -Landroid/icu/impl/CacheValue$StrongValue;-><init>(Ljava/lang/Object;)V -Landroid/icu/impl/CacheValue$StrongValue;->value:Ljava/lang/Object; -Landroid/icu/impl/CacheValue;->NULL_VALUE:Landroid/icu/impl/CacheValue; -Landroid/icu/impl/CacheValue;->strength:Landroid/icu/impl/CacheValue$Strength; -Landroid/icu/impl/CalendarAstronomer$AngleFunc;->eval()D -Landroid/icu/impl/CalendarAstronomer$CoordFunc;->eval()Landroid/icu/impl/CalendarAstronomer$Equatorial; -Landroid/icu/impl/CalendarAstronomer$MoonAge;-><init>(D)V -Landroid/icu/impl/CalendarAstronomer$MoonAge;->value:D -Landroid/icu/impl/CalendarAstronomer$SolarLongitude;-><init>(D)V -Landroid/icu/impl/CalendarAstronomer$SolarLongitude;->value:D -Landroid/icu/impl/CalendarAstronomer;->clearCache()V -Landroid/icu/impl/CalendarAstronomer;->DEG_RAD:D -Landroid/icu/impl/CalendarAstronomer;->eclipObliquity:D -Landroid/icu/impl/CalendarAstronomer;->eclipticObliquity()D -Landroid/icu/impl/CalendarAstronomer;->EPOCH_2000_MS:J -Landroid/icu/impl/CalendarAstronomer;->fGmtOffset:J -Landroid/icu/impl/CalendarAstronomer;->fLatitude:D -Landroid/icu/impl/CalendarAstronomer;->fLongitude:D -Landroid/icu/impl/CalendarAstronomer;->getSiderealOffset()D -Landroid/icu/impl/CalendarAstronomer;->getSunLongitude(D)[D -Landroid/icu/impl/CalendarAstronomer;->INVALID:D -Landroid/icu/impl/CalendarAstronomer;->JD_EPOCH:D -Landroid/icu/impl/CalendarAstronomer;->julianCentury:D -Landroid/icu/impl/CalendarAstronomer;->julianDay:D -Landroid/icu/impl/CalendarAstronomer;->lstToUT(D)J -Landroid/icu/impl/CalendarAstronomer;->meanAnomalySun:D -Landroid/icu/impl/CalendarAstronomer;->moonA:D -Landroid/icu/impl/CalendarAstronomer;->moonE:D -Landroid/icu/impl/CalendarAstronomer;->moonEclipLong:D -Landroid/icu/impl/CalendarAstronomer;->moonI:D -Landroid/icu/impl/CalendarAstronomer;->moonL0:D -Landroid/icu/impl/CalendarAstronomer;->moonLongitude:D -Landroid/icu/impl/CalendarAstronomer;->moonN0:D -Landroid/icu/impl/CalendarAstronomer;->moonP0:D -Landroid/icu/impl/CalendarAstronomer;->moonPi:D -Landroid/icu/impl/CalendarAstronomer;->moonPosition:Landroid/icu/impl/CalendarAstronomer$Equatorial; -Landroid/icu/impl/CalendarAstronomer;->moonT0:D -Landroid/icu/impl/CalendarAstronomer;->norm2PI(D)D -Landroid/icu/impl/CalendarAstronomer;->normalize(DD)D -Landroid/icu/impl/CalendarAstronomer;->normPI(D)D -Landroid/icu/impl/CalendarAstronomer;->PI2:D -Landroid/icu/impl/CalendarAstronomer;->PI:D -Landroid/icu/impl/CalendarAstronomer;->radToDms(D)Ljava/lang/String; -Landroid/icu/impl/CalendarAstronomer;->radToHms(D)Ljava/lang/String; -Landroid/icu/impl/CalendarAstronomer;->RAD_DEG:D -Landroid/icu/impl/CalendarAstronomer;->RAD_HOUR:D -Landroid/icu/impl/CalendarAstronomer;->riseOrSet(Landroid/icu/impl/CalendarAstronomer$CoordFunc;ZDDJ)J -Landroid/icu/impl/CalendarAstronomer;->siderealT0:D -Landroid/icu/impl/CalendarAstronomer;->siderealTime:D -Landroid/icu/impl/CalendarAstronomer;->sunLongitude:D -Landroid/icu/impl/CalendarAstronomer;->SUN_E:D -Landroid/icu/impl/CalendarAstronomer;->SUN_ETA_G:D -Landroid/icu/impl/CalendarAstronomer;->SUN_OMEGA_G:D -Landroid/icu/impl/CalendarAstronomer;->time:J -Landroid/icu/impl/CalendarAstronomer;->timeOfAngle(Landroid/icu/impl/CalendarAstronomer$AngleFunc;DDJZ)J -Landroid/icu/impl/CalendarAstronomer;->trueAnomaly(DD)D -Landroid/icu/impl/CalendarCache;->arraySize:I -Landroid/icu/impl/CalendarCache;->findIndex(J)I -Landroid/icu/impl/CalendarCache;->hash(J)I -Landroid/icu/impl/CalendarCache;->hash2(J)I -Landroid/icu/impl/CalendarCache;->keys:[J -Landroid/icu/impl/CalendarCache;->makeArrays(I)V -Landroid/icu/impl/CalendarCache;->pIndex:I -Landroid/icu/impl/CalendarCache;->primes:[I -Landroid/icu/impl/CalendarCache;->rehash()V -Landroid/icu/impl/CalendarCache;->size:I -Landroid/icu/impl/CalendarCache;->threshold:I -Landroid/icu/impl/CalendarCache;->values:[J -Landroid/icu/impl/CharTrie;->m_data_:[C -Landroid/icu/impl/CharTrie;->m_initialValue_:C -Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->DEFAULT_CTX_MATCH:Ljava/lang/String; -Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->DEFAULT_CUR_MATCH:Ljava/lang/String; -Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->DEFAULT_INSERT:Ljava/lang/String; -Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;->symbols:[[Ljava/lang/String; -Landroid/icu/impl/CurrencyData$DefaultInfo;-><init>(Z)V -Landroid/icu/impl/CurrencyData$DefaultInfo;->fallback:Z -Landroid/icu/impl/CurrencyData$DefaultInfo;->FALLBACK_INSTANCE:Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo; -Landroid/icu/impl/CurrencyData$DefaultInfo;->NO_FALLBACK_INSTANCE:Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo; -Landroid/icu/impl/DayPeriodRules$CutoffType;->AFTER:Landroid/icu/impl/DayPeriodRules$CutoffType; -Landroid/icu/impl/DayPeriodRules$CutoffType;->AT:Landroid/icu/impl/DayPeriodRules$CutoffType; -Landroid/icu/impl/DayPeriodRules$CutoffType;->BEFORE:Landroid/icu/impl/DayPeriodRules$CutoffType; -Landroid/icu/impl/DayPeriodRules$CutoffType;->FROM:Landroid/icu/impl/DayPeriodRules$CutoffType; -Landroid/icu/impl/DayPeriodRules$CutoffType;->fromStringOrNull(Ljava/lang/CharSequence;)Landroid/icu/impl/DayPeriodRules$CutoffType; -Landroid/icu/impl/DayPeriodRules$CutoffType;->valueOf(Ljava/lang/String;)Landroid/icu/impl/DayPeriodRules$CutoffType; -Landroid/icu/impl/DayPeriodRules$CutoffType;->values()[Landroid/icu/impl/DayPeriodRules$CutoffType; -Landroid/icu/impl/DayPeriodRules$DayPeriod;->fromStringOrNull(Ljava/lang/CharSequence;)Landroid/icu/impl/DayPeriodRules$DayPeriod; -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesCountSink;-><init>(Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;)V -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesCountSink;->data:Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData; -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;-><init>()V -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;->localesToRuleSetNumMap:Ljava/util/Map; -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;->maxRuleSetNum:I -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;->rules:[Landroid/icu/impl/DayPeriodRules; -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;-><init>(Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData;)V -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->addCutoff(Landroid/icu/impl/DayPeriodRules$CutoffType;Ljava/lang/String;)V -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->cutoffs:[I -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->cutoffType:Landroid/icu/impl/DayPeriodRules$CutoffType; -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->data:Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData; -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->parseHour(Ljava/lang/String;)I -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->period:Landroid/icu/impl/DayPeriodRules$DayPeriod; -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->processRules(Landroid/icu/impl/UResource$Table;Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->ruleSetNum:I -Landroid/icu/impl/DayPeriodRules$DayPeriodRulesDataSink;->setDayPeriodForHoursFromCutoffs()V -Landroid/icu/impl/DayPeriodRules;-><init>()V -Landroid/icu/impl/DayPeriodRules;->add(IILandroid/icu/impl/DayPeriodRules$DayPeriod;)V -Landroid/icu/impl/DayPeriodRules;->DATA:Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData; -Landroid/icu/impl/DayPeriodRules;->dayPeriodForHour:[Landroid/icu/impl/DayPeriodRules$DayPeriod; -Landroid/icu/impl/DayPeriodRules;->getEndHourForDayPeriod(Landroid/icu/impl/DayPeriodRules$DayPeriod;)I -Landroid/icu/impl/DayPeriodRules;->getStartHourForDayPeriod(Landroid/icu/impl/DayPeriodRules$DayPeriod;)I -Landroid/icu/impl/DayPeriodRules;->hasMidnight:Z -Landroid/icu/impl/DayPeriodRules;->hasNoon:Z -Landroid/icu/impl/DayPeriodRules;->loadData()Landroid/icu/impl/DayPeriodRules$DayPeriodRulesData; -Landroid/icu/impl/DayPeriodRules;->parseSetNum(Ljava/lang/String;)I -Landroid/icu/impl/ICUBinary$DataFile;-><init>(Ljava/lang/String;)V -Landroid/icu/impl/ICUBinary$DataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V -Landroid/icu/impl/ICUBinary$DataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer; -Landroid/icu/impl/ICUBinary$DataFile;->itemPath:Ljava/lang/String; -Landroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable;-><init>()V -Landroid/icu/impl/ICUBinary$DatPackageReader;-><init>()V -Landroid/icu/impl/ICUBinary$DatPackageReader;->addBaseName(Ljava/nio/ByteBuffer;ILjava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/util/Set;)Z -Landroid/icu/impl/ICUBinary$DatPackageReader;->addBaseNamesInFolder(Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V -Landroid/icu/impl/ICUBinary$DatPackageReader;->binarySearch(Ljava/nio/ByteBuffer;Ljava/lang/CharSequence;)I -Landroid/icu/impl/ICUBinary$DatPackageReader;->DATA_FORMAT:I -Landroid/icu/impl/ICUBinary$DatPackageReader;->getData(Ljava/nio/ByteBuffer;Ljava/lang/CharSequence;)Ljava/nio/ByteBuffer; -Landroid/icu/impl/ICUBinary$DatPackageReader;->getDataOffset(Ljava/nio/ByteBuffer;I)I -Landroid/icu/impl/ICUBinary$DatPackageReader;->getNameOffset(Ljava/nio/ByteBuffer;I)I -Landroid/icu/impl/ICUBinary$DatPackageReader;->IS_ACCEPTABLE:Landroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable; -Landroid/icu/impl/ICUBinary$DatPackageReader;->startsWithPackageName(Ljava/nio/ByteBuffer;I)Z -Landroid/icu/impl/ICUBinary$DatPackageReader;->validate(Ljava/nio/ByteBuffer;)Z -Landroid/icu/impl/ICUBinary$PackageDataFile;-><init>(Ljava/lang/String;Ljava/nio/ByteBuffer;)V -Landroid/icu/impl/ICUBinary$PackageDataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V -Landroid/icu/impl/ICUBinary$PackageDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer; -Landroid/icu/impl/ICUBinary$PackageDataFile;->pkgBytes:Ljava/nio/ByteBuffer; -Landroid/icu/impl/ICUBinary$SingleDataFile;-><init>(Ljava/lang/String;Ljava/io/File;)V -Landroid/icu/impl/ICUBinary$SingleDataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V -Landroid/icu/impl/ICUBinary$SingleDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer; -Landroid/icu/impl/ICUBinary$SingleDataFile;->path:Ljava/io/File; -Landroid/icu/impl/ICUBinary;->addDataFilesFromFolder(Ljava/io/File;Ljava/lang/StringBuilder;Ljava/util/List;)V -Landroid/icu/impl/ICUBinary;->addDataFilesFromPath(Ljava/lang/String;Ljava/util/List;)V -Landroid/icu/impl/ICUBinary;->CHAR_SET_:B -Landroid/icu/impl/ICUBinary;->CHAR_SIZE_:B -Landroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;I)I -Landroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;[BI)I -Landroid/icu/impl/ICUBinary;->getData(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Z)Ljava/nio/ByteBuffer; -Landroid/icu/impl/ICUBinary;->getDataFromFile(Ljava/lang/String;)Ljava/nio/ByteBuffer; -Landroid/icu/impl/ICUBinary;->HEADER_AUTHENTICATION_FAILED_:Ljava/lang/String; -Landroid/icu/impl/ICUBinary;->icuDataFiles:Ljava/util/List; -Landroid/icu/impl/ICUBinary;->MAGIC1:B -Landroid/icu/impl/ICUBinary;->MAGIC2:B -Landroid/icu/impl/ICUBinary;->MAGIC_NUMBER_AUTHENTICATION_FAILED_:Ljava/lang/String; -Landroid/icu/impl/ICUBinary;->mapFile(Ljava/io/File;)Ljava/nio/ByteBuffer; -Landroid/icu/impl/ICUResourceBundle$AvailEntry;-><init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V -Landroid/icu/impl/ICUResourceBundle$AvailEntry;->fullNameSet:Ljava/util/Set; -Landroid/icu/impl/ICUResourceBundle$AvailEntry;->getFullLocaleNameSet()Ljava/util/Set; -Landroid/icu/impl/ICUResourceBundle$AvailEntry;->getLocaleList()[Ljava/util/Locale; -Landroid/icu/impl/ICUResourceBundle$AvailEntry;->getLocaleNameSet()Ljava/util/Set; -Landroid/icu/impl/ICUResourceBundle$AvailEntry;->getULocaleList()[Landroid/icu/util/ULocale; -Landroid/icu/impl/ICUResourceBundle$AvailEntry;->loader:Ljava/lang/ClassLoader; -Landroid/icu/impl/ICUResourceBundle$AvailEntry;->locales:[Ljava/util/Locale; -Landroid/icu/impl/ICUResourceBundle$AvailEntry;->nameSet:Ljava/util/Set; -Landroid/icu/impl/ICUResourceBundle$AvailEntry;->prefix:Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundle$AvailEntry;->ulocales:[Landroid/icu/util/ULocale; -Landroid/icu/impl/ICUResourceBundle$Loader;-><init>()V -Landroid/icu/impl/ICUResourceBundle$Loader;->load()Landroid/icu/impl/ICUResourceBundle; -Landroid/icu/impl/ICUResourceBundle$WholeBundle;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundleReader;)V -Landroid/icu/impl/ICUResourceBundle$WholeBundle;->baseName:Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundle$WholeBundle;->loader:Ljava/lang/ClassLoader; -Landroid/icu/impl/ICUResourceBundle$WholeBundle;->localeID:Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundle$WholeBundle;->reader:Landroid/icu/impl/ICUResourceBundleReader; -Landroid/icu/impl/ICUResourceBundle$WholeBundle;->topLevelKeys:Ljava/util/Set; -Landroid/icu/impl/ICUResourceBundle$WholeBundle;->ulocale:Landroid/icu/util/ULocale; -Landroid/icu/impl/ICUResourceBundle;->addBundleBaseNamesFromClassLoader(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/Set;)V -Landroid/icu/impl/ICUResourceBundle;->addLocaleIDsFromIndexBundle(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/Set;)V -Landroid/icu/impl/ICUResourceBundle;->addLocaleIDsFromListFile(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/Set;)V -Landroid/icu/impl/ICUResourceBundle;->BUNDLE_CACHE:Landroid/icu/impl/CacheBase; -Landroid/icu/impl/ICUResourceBundle;->container:Landroid/icu/impl/ICUResourceBundle; -Landroid/icu/impl/ICUResourceBundle;->countPathKeys(Ljava/lang/String;)I -Landroid/icu/impl/ICUResourceBundle;->createFullLocaleNameSet(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set; -Landroid/icu/impl/ICUResourceBundle;->createLocaleNameSet(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set; -Landroid/icu/impl/ICUResourceBundle;->createULocaleList(Ljava/lang/String;Ljava/lang/ClassLoader;)[Landroid/icu/util/ULocale; -Landroid/icu/impl/ICUResourceBundle;->DEBUG:Z -Landroid/icu/impl/ICUResourceBundle;->DEFAULT_TAG:Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundle;->findResourceWithFallback(Ljava/lang/String;Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle; -Landroid/icu/impl/ICUResourceBundle;->findResourceWithFallback([Ljava/lang/String;ILandroid/icu/impl/ICUResourceBundle;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle; -Landroid/icu/impl/ICUResourceBundle;->findStringWithFallback(Ljava/lang/String;Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;)Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundle;->FULL_LOCALE_NAMES_LIST:Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundle;->get(Ljava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle; -Landroid/icu/impl/ICUResourceBundle;->getAllItemsWithFallback(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;Landroid/icu/impl/UResource$Sink;)V -Landroid/icu/impl/ICUResourceBundle;->getAvailEntry(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle$AvailEntry; -Landroid/icu/impl/ICUResourceBundle;->getBundle(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle; -Landroid/icu/impl/ICUResourceBundle;->getNoFallback()Z -Landroid/icu/impl/ICUResourceBundle;->getResDepth()I -Landroid/icu/impl/ICUResourceBundle;->getResPathKeys(Ljava/lang/String;I[Ljava/lang/String;I)V -Landroid/icu/impl/ICUResourceBundle;->getResPathKeys([Ljava/lang/String;I)V -Landroid/icu/impl/ICUResourceBundle;->GET_AVAILABLE_CACHE:Landroid/icu/impl/CacheBase; -Landroid/icu/impl/ICUResourceBundle;->HYPHEN:C -Landroid/icu/impl/ICUResourceBundle;->ICUDATA:Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundle;->ICU_RESOURCE_INDEX:Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle; -Landroid/icu/impl/ICUResourceBundle;->LOCALE:Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundle;->localeIDStartsWithLangSubtag(Ljava/lang/String;Ljava/lang/String;)Z -Landroid/icu/impl/ICUResourceBundle;->RES_PATH_SEP_CHAR:C -Landroid/icu/impl/ICUResourceBundle;->RES_PATH_SEP_STR:Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundle;->wholeBundle:Landroid/icu/impl/ICUResourceBundle$WholeBundle; -Landroid/icu/impl/ICUResourceBundleReader$Array16;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V -Landroid/icu/impl/ICUResourceBundleReader$Array16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I -Landroid/icu/impl/ICUResourceBundleReader$Array32;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V -Landroid/icu/impl/ICUResourceBundleReader$Array32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I -Landroid/icu/impl/ICUResourceBundleReader$Array;-><init>()V -Landroid/icu/impl/ICUResourceBundleReader$Container;-><init>()V -Landroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I -Landroid/icu/impl/ICUResourceBundleReader$Container;->getContainer32Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I -Landroid/icu/impl/ICUResourceBundleReader$Container;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I -Landroid/icu/impl/ICUResourceBundleReader$Container;->getResource(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;)I -Landroid/icu/impl/ICUResourceBundleReader$Container;->getSize()I -Landroid/icu/impl/ICUResourceBundleReader$Container;->itemsOffset:I -Landroid/icu/impl/ICUResourceBundleReader$Container;->size:I -Landroid/icu/impl/ICUResourceBundleReader$IsAcceptable;-><init>()V -Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;-><init>()V -Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;->createInstance(Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundleReader; -Landroid/icu/impl/ICUResourceBundleReader$ReaderCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;->baseName:Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;->localeID:Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;-><init>()V -Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getStringArray(Landroid/icu/impl/ICUResourceBundleReader$Array;)[Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;->reader:Landroid/icu/impl/ICUResourceBundleReader; -Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;->res:I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;-><init>(II)V -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->get(I)Ljava/lang/Object; -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->keys:[I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->levelBitsList:I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->mask:I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object; -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->shift:I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->values:[Ljava/lang/Object; -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;-><init>(I)V -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->findSimple(I)I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->get(I)Ljava/lang/Object; -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->keys:[I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->length:I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->levelBitsList:I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->makeKey(I)I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->maxOffsetBits:I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->NEXT_BITS:I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object; -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfCleared([Ljava/lang/Object;ILjava/lang/Object;I)Ljava/lang/Object; -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->rootLevel:Landroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level; -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->ROOT_BITS:I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->SIMPLE_LENGTH:I -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->storeDirectly(I)Z -Landroid/icu/impl/ICUResourceBundleReader$ResourceCache;->values:[Ljava/lang/Object; -Landroid/icu/impl/ICUResourceBundleReader$Table1632;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V -Landroid/icu/impl/ICUResourceBundleReader$Table1632;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I -Landroid/icu/impl/ICUResourceBundleReader$Table16;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V -Landroid/icu/impl/ICUResourceBundleReader$Table16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I -Landroid/icu/impl/ICUResourceBundleReader$Table32;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V -Landroid/icu/impl/ICUResourceBundleReader$Table32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I -Landroid/icu/impl/ICUResourceBundleReader$Table;-><init>()V -Landroid/icu/impl/ICUResourceBundleReader$Table;->findTableItem(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/CharSequence;)I -Landroid/icu/impl/ICUResourceBundleReader$Table;->getKey(Landroid/icu/impl/ICUResourceBundleReader;I)Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundleReader$Table;->getResource(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;)I -Landroid/icu/impl/ICUResourceBundleReader$Table;->key32Offsets:[I -Landroid/icu/impl/ICUResourceBundleReader$Table;->keyOffsets:[C -Landroid/icu/impl/ICUResourceBundleReader$Table;->URESDATA_ITEM_NOT_FOUND:I -Landroid/icu/impl/ICUResourceBundleReader;-><init>()V -Landroid/icu/impl/ICUResourceBundleReader;-><init>(Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V -Landroid/icu/impl/ICUResourceBundleReader;->b16BitUnits:Ljava/nio/CharBuffer; -Landroid/icu/impl/ICUResourceBundleReader;->bytes:Ljava/nio/ByteBuffer; -Landroid/icu/impl/ICUResourceBundleReader;->CACHE:Landroid/icu/impl/ICUResourceBundleReader$ReaderCache; -Landroid/icu/impl/ICUResourceBundleReader;->compareKeys(Ljava/lang/CharSequence;C)I -Landroid/icu/impl/ICUResourceBundleReader;->compareKeys32(Ljava/lang/CharSequence;I)I -Landroid/icu/impl/ICUResourceBundleReader;->dataVersion:I -Landroid/icu/impl/ICUResourceBundleReader;->DATA_FORMAT:I -Landroid/icu/impl/ICUResourceBundleReader;->DEBUG:Z -Landroid/icu/impl/ICUResourceBundleReader;->emptyByteBuffer:Ljava/nio/ByteBuffer; -Landroid/icu/impl/ICUResourceBundleReader;->emptyBytes:[B -Landroid/icu/impl/ICUResourceBundleReader;->emptyChars:[C -Landroid/icu/impl/ICUResourceBundleReader;->emptyInts:[I -Landroid/icu/impl/ICUResourceBundleReader;->emptyString:Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundleReader;->EMPTY_16_BIT_UNITS:Ljava/nio/CharBuffer; -Landroid/icu/impl/ICUResourceBundleReader;->EMPTY_ARRAY:Landroid/icu/impl/ICUResourceBundleReader$Array; -Landroid/icu/impl/ICUResourceBundleReader;->EMPTY_TABLE:Landroid/icu/impl/ICUResourceBundleReader$Table; -Landroid/icu/impl/ICUResourceBundleReader;->getAlias(I)Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundleReader;->getArray(I)Landroid/icu/impl/ICUResourceBundleReader$Array; -Landroid/icu/impl/ICUResourceBundleReader;->getBinary(I)Ljava/nio/ByteBuffer; -Landroid/icu/impl/ICUResourceBundleReader;->getBinary(I[B)[B -Landroid/icu/impl/ICUResourceBundleReader;->getChars(II)[C -Landroid/icu/impl/ICUResourceBundleReader;->getIndexesInt(I)I -Landroid/icu/impl/ICUResourceBundleReader;->getInt(I)I -Landroid/icu/impl/ICUResourceBundleReader;->getInts(II)[I -Landroid/icu/impl/ICUResourceBundleReader;->getIntVector(I)[I -Landroid/icu/impl/ICUResourceBundleReader;->getKey16String(I)Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundleReader;->getKey32String(I)Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundleReader;->getNoFallback()Z -Landroid/icu/impl/ICUResourceBundleReader;->getReader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundleReader; -Landroid/icu/impl/ICUResourceBundleReader;->getResourceByteOffset(I)I -Landroid/icu/impl/ICUResourceBundleReader;->getRootResource()I -Landroid/icu/impl/ICUResourceBundleReader;->getString(I)Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundleReader;->getStringV2(I)Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundleReader;->getTable(I)Landroid/icu/impl/ICUResourceBundleReader$Table; -Landroid/icu/impl/ICUResourceBundleReader;->getTable16KeyOffsets(I)[C -Landroid/icu/impl/ICUResourceBundleReader;->getTable32KeyOffsets(I)[I -Landroid/icu/impl/ICUResourceBundleReader;->getTableKeyOffsets(I)[C -Landroid/icu/impl/ICUResourceBundleReader;->getUsesPoolBundle()Z -Landroid/icu/impl/ICUResourceBundleReader;->getVersion()Landroid/icu/util/VersionInfo; -Landroid/icu/impl/ICUResourceBundleReader;->ICU_RESOURCE_SUFFIX:Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundleReader;->init(Ljava/nio/ByteBuffer;)V -Landroid/icu/impl/ICUResourceBundleReader;->isNoInheritanceMarker(I)Z -Landroid/icu/impl/ICUResourceBundleReader;->isPoolBundle:Z -Landroid/icu/impl/ICUResourceBundleReader;->isStringV2NoInheritanceMarker(I)Z -Landroid/icu/impl/ICUResourceBundleReader;->IS_ACCEPTABLE:Landroid/icu/impl/ICUResourceBundleReader$IsAcceptable; -Landroid/icu/impl/ICUResourceBundleReader;->keyBytes:[B -Landroid/icu/impl/ICUResourceBundleReader;->LARGE_SIZE:I -Landroid/icu/impl/ICUResourceBundleReader;->localKeyLimit:I -Landroid/icu/impl/ICUResourceBundleReader;->makeKeyStringFromBytes([BI)Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundleReader;->makeStringFromBytes(II)Ljava/lang/String; -Landroid/icu/impl/ICUResourceBundleReader;->noFallback:Z -Landroid/icu/impl/ICUResourceBundleReader;->NULL_READER:Landroid/icu/impl/ICUResourceBundleReader; -Landroid/icu/impl/ICUResourceBundleReader;->poolBundleReader:Landroid/icu/impl/ICUResourceBundleReader; -Landroid/icu/impl/ICUResourceBundleReader;->poolCheckSum:I -Landroid/icu/impl/ICUResourceBundleReader;->poolStringIndex16Limit:I -Landroid/icu/impl/ICUResourceBundleReader;->poolStringIndexLimit:I -Landroid/icu/impl/ICUResourceBundleReader;->PUBLIC_TYPES:[I -Landroid/icu/impl/ICUResourceBundleReader;->resourceCache:Landroid/icu/impl/ICUResourceBundleReader$ResourceCache; -Landroid/icu/impl/ICUResourceBundleReader;->RES_GET_INT(I)I -Landroid/icu/impl/ICUResourceBundleReader;->RES_GET_OFFSET(I)I -Landroid/icu/impl/ICUResourceBundleReader;->RES_GET_TYPE(I)I -Landroid/icu/impl/ICUResourceBundleReader;->RES_GET_UINT(I)I -Landroid/icu/impl/ICUResourceBundleReader;->rootRes:I -Landroid/icu/impl/ICUResourceBundleReader;->setKeyFromKey16(ILandroid/icu/impl/UResource$Key;)V -Landroid/icu/impl/ICUResourceBundleReader;->setKeyFromKey32(ILandroid/icu/impl/UResource$Key;)V -Landroid/icu/impl/ICUResourceBundleReader;->URES_ATT_IS_POOL_BUNDLE:I -Landroid/icu/impl/ICUResourceBundleReader;->URES_ATT_NO_FALLBACK:I -Landroid/icu/impl/ICUResourceBundleReader;->URES_ATT_USES_POOL_BUNDLE:I -Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_16BIT_TOP:I -Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_ATTRIBUTES:I -Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_BUNDLE_TOP:I -Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_KEYS_TOP:I -Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_LENGTH:I -Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_MAX_TABLE_LENGTH:I -Landroid/icu/impl/ICUResourceBundleReader;->URES_INDEX_POOL_CHECKSUM:I -Landroid/icu/impl/ICUResourceBundleReader;->URES_IS_ARRAY(I)Z -Landroid/icu/impl/ICUResourceBundleReader;->URES_IS_TABLE(I)Z -Landroid/icu/impl/ICUResourceBundleReader;->usesPoolBundle:Z -Landroid/icu/impl/locale/AsciiUtil$CaseInsensitiveKey;->_hash:I -Landroid/icu/impl/locale/AsciiUtil$CaseInsensitiveKey;->_key:Ljava/lang/String; -Landroid/icu/impl/locale/BaseLocale$Cache;-><init>()V -Landroid/icu/impl/locale/BaseLocale$Cache;->createObject(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale; -Landroid/icu/impl/locale/BaseLocale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object; -Landroid/icu/impl/locale/BaseLocale$Cache;->normalizeKey(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale$Key; -Landroid/icu/impl/locale/BaseLocale$Cache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object; -Landroid/icu/impl/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/impl/locale/BaseLocale$Key;->compareTo(Landroid/icu/impl/locale/BaseLocale$Key;)I -Landroid/icu/impl/locale/BaseLocale$Key;->compareTo(Ljava/lang/Object;)I -Landroid/icu/impl/locale/BaseLocale$Key;->normalize(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale$Key; -Landroid/icu/impl/locale/BaseLocale$Key;->_hash:I -Landroid/icu/impl/locale/BaseLocale$Key;->_lang:Ljava/lang/String; -Landroid/icu/impl/locale/BaseLocale$Key;->_regn:Ljava/lang/String; -Landroid/icu/impl/locale/BaseLocale$Key;->_scrt:Ljava/lang/String; -Landroid/icu/impl/locale/BaseLocale$Key;->_vart:Ljava/lang/String; -Landroid/icu/impl/locale/BaseLocale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/impl/locale/BaseLocale;->CACHE:Landroid/icu/impl/locale/BaseLocale$Cache; -Landroid/icu/impl/locale/BaseLocale;->JDKIMPL:Z -Landroid/icu/impl/locale/BaseLocale;->_hash:I -Landroid/icu/impl/locale/BaseLocale;->_language:Ljava/lang/String; -Landroid/icu/impl/locale/BaseLocale;->_region:Ljava/lang/String; -Landroid/icu/impl/locale/BaseLocale;->_script:Ljava/lang/String; -Landroid/icu/impl/locale/BaseLocale;->_variant:Ljava/lang/String; -Landroid/icu/impl/locale/Extension;-><init>(CLjava/lang/String;)V -Landroid/icu/impl/locale/Extension;->_key:C -Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(C)V -Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;->value()C -Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;->_c:C -Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveString;-><init>(Ljava/lang/String;)V -Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveString;->value()Ljava/lang/String; -Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveString;->_s:Ljava/lang/String; -Landroid/icu/impl/locale/InternalLocaleBuilder;->checkVariants(Ljava/lang/String;Ljava/lang/String;)I -Landroid/icu/impl/locale/InternalLocaleBuilder;->JDKIMPL:Z -Landroid/icu/impl/locale/InternalLocaleBuilder;->PRIVUSE_KEY:Landroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar; -Landroid/icu/impl/locale/InternalLocaleBuilder;->removePrivateuseVariant(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/impl/locale/InternalLocaleBuilder;->setExtensions(Ljava/util/List;Ljava/lang/String;)Landroid/icu/impl/locale/InternalLocaleBuilder; -Landroid/icu/impl/locale/InternalLocaleBuilder;->setUnicodeLocaleExtension(Ljava/lang/String;)V -Landroid/icu/impl/locale/InternalLocaleBuilder;->_extensions:Ljava/util/HashMap; -Landroid/icu/impl/locale/InternalLocaleBuilder;->_language:Ljava/lang/String; -Landroid/icu/impl/locale/InternalLocaleBuilder;->_region:Ljava/lang/String; -Landroid/icu/impl/locale/InternalLocaleBuilder;->_script:Ljava/lang/String; -Landroid/icu/impl/locale/InternalLocaleBuilder;->_uattributes:Ljava/util/HashSet; -Landroid/icu/impl/locale/InternalLocaleBuilder;->_ukeywords:Ljava/util/HashMap; -Landroid/icu/impl/locale/InternalLocaleBuilder;->_variant:Ljava/lang/String; -Landroid/icu/impl/locale/LanguageTag;-><init>()V -Landroid/icu/impl/locale/LanguageTag;->GRANDFATHERED:Ljava/util/Map; -Landroid/icu/impl/locale/LanguageTag;->JDKIMPL:Z -Landroid/icu/impl/locale/LanguageTag;->parseExtensions(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z -Landroid/icu/impl/locale/LanguageTag;->parseExtlangs(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z -Landroid/icu/impl/locale/LanguageTag;->parseLanguage(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z -Landroid/icu/impl/locale/LanguageTag;->parsePrivateuse(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z -Landroid/icu/impl/locale/LanguageTag;->parseRegion(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z -Landroid/icu/impl/locale/LanguageTag;->parseScript(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z -Landroid/icu/impl/locale/LanguageTag;->parseVariants(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z -Landroid/icu/impl/locale/LanguageTag;->_extensions:Ljava/util/List; -Landroid/icu/impl/locale/LanguageTag;->_extlangs:Ljava/util/List; -Landroid/icu/impl/locale/LanguageTag;->_language:Ljava/lang/String; -Landroid/icu/impl/locale/LanguageTag;->_privateuse:Ljava/lang/String; -Landroid/icu/impl/locale/LanguageTag;->_region:Ljava/lang/String; -Landroid/icu/impl/locale/LanguageTag;->_script:Ljava/lang/String; -Landroid/icu/impl/locale/LanguageTag;->_variants:Ljava/util/List; -Landroid/icu/impl/locale/LocaleExtensions;-><init>()V -Landroid/icu/impl/locale/LocaleExtensions;-><init>(Ljava/util/Map;Ljava/util/Set;Ljava/util/Map;)V -Landroid/icu/impl/locale/LocaleExtensions;->EMPTY_MAP:Ljava/util/SortedMap; -Landroid/icu/impl/locale/LocaleExtensions;->toID(Ljava/util/SortedMap;)Ljava/lang/String; -Landroid/icu/impl/locale/LocaleExtensions;->_id:Ljava/lang/String; -Landroid/icu/impl/locale/LocaleExtensions;->_map:Ljava/util/SortedMap; -Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V -Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object; -Landroid/icu/impl/locale/LocaleObjectCache$CacheEntry;->_key:Ljava/lang/Object; -Landroid/icu/impl/locale/LocaleObjectCache;->cleanStaleEntries()V -Landroid/icu/impl/locale/LocaleObjectCache;->_map:Ljava/util/concurrent/ConcurrentHashMap; -Landroid/icu/impl/locale/LocaleObjectCache;->_queue:Ljava/lang/ref/ReferenceQueue; -Landroid/icu/impl/locale/LocaleSyntaxException;->_index:I -Landroid/icu/impl/locale/ParseStatus;->_errorIndex:I -Landroid/icu/impl/locale/ParseStatus;->_errorMsg:Ljava/lang/String; -Landroid/icu/impl/locale/ParseStatus;->_parseLength:I -Landroid/icu/impl/locale/StringTokenIterator;->nextDelimiter(I)I -Landroid/icu/impl/locale/StringTokenIterator;->_dlms:Ljava/lang/String; -Landroid/icu/impl/locale/StringTokenIterator;->_done:Z -Landroid/icu/impl/locale/StringTokenIterator;->_end:I -Landroid/icu/impl/locale/StringTokenIterator;->_start:I -Landroid/icu/impl/locale/StringTokenIterator;->_text:Ljava/lang/String; -Landroid/icu/impl/locale/StringTokenIterator;->_token:Ljava/lang/String; -Landroid/icu/impl/locale/XCldrStub$HashMultimap;-><init>()V -Landroid/icu/impl/locale/XCldrStub$Joiner;-><init>(Ljava/lang/String;)V -Landroid/icu/impl/locale/XCldrStub$Joiner;->separator:Ljava/lang/String; -Landroid/icu/impl/locale/XCldrStub$LinkedHashMultimap;-><init>()V -Landroid/icu/impl/locale/XCldrStub$Multimap;-><init>(Ljava/util/Map;Ljava/lang/Class;)V -Landroid/icu/impl/locale/XCldrStub$Multimap;->createSetIfMissing(Ljava/lang/Object;)Ljava/util/Set; -Landroid/icu/impl/locale/XCldrStub$Multimap;->getInstance()Ljava/util/Set; -Landroid/icu/impl/locale/XCldrStub$Multimap;->map:Ljava/util/Map; -Landroid/icu/impl/locale/XCldrStub$Multimap;->setClass:Ljava/lang/Class; -Landroid/icu/impl/locale/XCldrStub$MultimapIterator;-><init>(Ljava/util/Map;)V -Landroid/icu/impl/locale/XCldrStub$MultimapIterator;->entry:Landroid/icu/impl/locale/XCldrStub$ReusableEntry; -Landroid/icu/impl/locale/XCldrStub$MultimapIterator;->it1:Ljava/util/Iterator; -Landroid/icu/impl/locale/XCldrStub$MultimapIterator;->it2:Ljava/util/Iterator; -Landroid/icu/impl/locale/XCldrStub$ReusableEntry;-><init>()V -Landroid/icu/impl/locale/XCldrStub$ReusableEntry;->key:Ljava/lang/Object; -Landroid/icu/impl/locale/XCldrStub$ReusableEntry;->value:Ljava/lang/Object; -Landroid/icu/impl/locale/XCldrStub$Splitter;->pattern:Ljava/util/regex/Pattern; -Landroid/icu/impl/locale/XCldrStub$Splitter;->trimResults:Z -Landroid/icu/impl/locale/XCldrStub$TreeMultimap;-><init>()V -Landroid/icu/impl/locale/XLikelySubtags$Aliases;->toAliases:Landroid/icu/impl/locale/XCldrStub$Multimap; -Landroid/icu/impl/locale/XLikelySubtags$Aliases;->toCanonical:Ljava/util/Map; -Landroid/icu/impl/locale/XLikelySubtags$LSR;->from(Ljava/lang/String;)Landroid/icu/impl/locale/XLikelySubtags$LSR; -Landroid/icu/impl/locale/XLikelySubtags$Maker;-><init>()V -Landroid/icu/impl/locale/XLikelySubtags$Maker;->getSubtable(Ljava/util/Map;Ljava/lang/Object;)Ljava/lang/Object; -Landroid/icu/impl/locale/XLikelySubtags$Maker;->HASHMAP:Landroid/icu/impl/locale/XLikelySubtags$Maker; -Landroid/icu/impl/locale/XLikelySubtags$Maker;->make()Ljava/lang/Object; -Landroid/icu/impl/locale/XLikelySubtags$Maker;->TREEMAP:Landroid/icu/impl/locale/XLikelySubtags$Maker; -Landroid/icu/impl/locale/XLikelySubtags;->DEFAULT:Landroid/icu/impl/locale/XLikelySubtags; -Landroid/icu/impl/locale/XLikelySubtags;->getDefaultRawData()Ljava/util/Map; -Landroid/icu/impl/locale/XLikelySubtags;->init(Ljava/util/Map;Z)Ljava/util/Map; -Landroid/icu/impl/locale/XLikelySubtags;->langTable:Ljava/util/Map; -Landroid/icu/impl/locale/XLikelySubtags;->minimizeSubtags(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale$Minimize;)Landroid/icu/impl/locale/XLikelySubtags$LSR; -Landroid/icu/impl/locale/XLikelySubtags;->set(Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/XLikelySubtags$LSR;)V -Landroid/icu/impl/locale/XLikelySubtags;->set(Ljava/util/Map;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V -Landroid/icu/impl/locale/XLikelySubtags;->show(Ljava/util/Map;Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder; -Landroid/icu/impl/locale/XLocaleDistance$AddSub;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)V -Landroid/icu/impl/locale/XLocaleDistance$AddSub;->desiredSub:Ljava/lang/String; -Landroid/icu/impl/locale/XLocaleDistance$AddSub;->r:Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty; -Landroid/icu/impl/locale/XLocaleDistance$AddSub;->supportedSub:Ljava/lang/String; -Landroid/icu/impl/locale/XLocaleDistance$AddSub;->test(Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;)Z -Landroid/icu/impl/locale/XLocaleDistance$AddSub;->test(Ljava/lang/Object;)Z -Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;-><init>()V -Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;->compact(Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;)Landroid/icu/impl/locale/XLocaleDistance$DistanceNode; -Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;->compact(Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable; -Landroid/icu/impl/locale/XLocaleDistance$CompactAndImmutablizer;->compact(Ljava/util/Map;I)Ljava/util/Map; -Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;-><init>(Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)V -Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;->test(Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;)Z -Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;->test(Ljava/lang/Object;)Z -Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;->toCopy:Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable; -Landroid/icu/impl/locale/XLocaleDistance$DistanceNode;->distance:I -Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;->getCloser(I)Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;->getDistance(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/Output;Z)I -Landroid/icu/impl/locale/XLocaleDistance$DistanceTable;->toString(Z)Ljava/lang/String; -Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;-><init>()V -Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;-><init>(Ljava/lang/String;)V -Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;-><init>(Ljava/lang/String;Ljava/lang/Object;)V -Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->add(Ljava/lang/Object;)Ljava/lang/Integer; -Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->fromId(I)Ljava/lang/Object; -Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->getOldAndAdd(Ljava/lang/Object;)Ljava/lang/Integer; -Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->intern(Ljava/lang/Object;)Ljava/lang/Object; -Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->intToObject:Ljava/util/List; -Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->name:Ljava/lang/String; -Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->objectToInt:Ljava/util/Map; -Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->size()I -Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->toId(Ljava/lang/Object;)Ljava/lang/Integer; -Landroid/icu/impl/locale/XLocaleDistance$IdMakerFull;->toId(Ljava/lang/Object;)Ljava/lang/Object; -Landroid/icu/impl/locale/XLocaleDistance$IdMapper;->toId(Ljava/lang/Object;)Ljava/lang/Object; -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;-><init>()V -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->add(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->build()Landroid/icu/impl/locale/XLocaleDistance$RegionMapper; -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->paradigms:Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->regionSet:Landroid/icu/impl/locale/XLocaleDistance$RegionSet; -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper$Builder;->regionToRawPartition:Landroid/icu/impl/locale/XCldrStub$Multimap; -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;-><init>(Landroid/icu/impl/locale/XCldrStub$Multimap;Ljava/util/Map;Landroid/icu/impl/locale/XCldrStub$Multimap;Ljava/util/Set;)V -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->getIdsFromVariable(Ljava/lang/String;)Ljava/util/Collection; -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->macroToPartitions:Landroid/icu/impl/locale/XCldrStub$Multimap; -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->paradigms:Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->regions()Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->regionToPartition:Ljava/util/Map; -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->toId(Ljava/lang/Object;)Ljava/lang/Object; -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->toId(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->variables()Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleDistance$RegionMapper;->variableToPartition:Landroid/icu/impl/locale/XCldrStub$Multimap; -Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->add:Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation; -Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->remove:Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation; -Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->valueOf(Ljava/lang/String;)Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation; -Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;->values()[Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation; -Landroid/icu/impl/locale/XLocaleDistance$RegionSet;-><init>()V -Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->add(Ljava/lang/String;II)V -Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->changeSet(Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation;Ljava/lang/String;)V -Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->inverse()Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->operation:Landroid/icu/impl/locale/XLocaleDistance$RegionSet$Operation; -Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->parseSet(Ljava/lang/String;)Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleDistance$RegionSet;->tempRegions:Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;-><init>(I)V -Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;-><init>(ILandroid/icu/impl/locale/XLocaleDistance$DistanceTable;)V -Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;->addSubtables(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/XLocaleDistance$CopyIfEmpty;)V -Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;->copyTables(Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;)V -Landroid/icu/impl/locale/XLocaleDistance$StringDistanceNode;->distanceTable:Landroid/icu/impl/locale/XLocaleDistance$DistanceTable; -Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;-><init>()V -Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;-><init>(Ljava/util/Map;)V -Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;->addSubtable(Ljava/lang/String;Ljava/lang/String;I)Landroid/icu/impl/locale/XLocaleDistance$DistanceNode; -Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;->getNode(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/locale/XLocaleDistance$DistanceNode; -Landroid/icu/impl/locale/XLocaleDistance$StringDistanceTable;->subtables:Ljava/util/Map; -Landroid/icu/impl/locale/XLocaleDistance;->ALL_FINAL_REGIONS:Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleDistance;->CONTAINER_TO_CONTAINED:Landroid/icu/impl/locale/XCldrStub$Multimap; -Landroid/icu/impl/locale/XLocaleDistance;->CONTAINER_TO_CONTAINED_FINAL:Landroid/icu/impl/locale/XCldrStub$Multimap; -Landroid/icu/impl/locale/XLocaleDistance;->DEFAULT:Landroid/icu/impl/locale/XLocaleDistance; -Landroid/icu/impl/locale/XLocaleDistance;->defaultLanguageDistance:I -Landroid/icu/impl/locale/XLocaleDistance;->defaultRegionDistance:I -Landroid/icu/impl/locale/XLocaleDistance;->defaultScriptDistance:I -Landroid/icu/impl/locale/XLocaleDistance;->english:Landroid/icu/text/LocaleDisplayNames; -Landroid/icu/impl/locale/XLocaleDistance;->fill(Ljava/lang/String;Landroid/icu/impl/locale/XCldrStub$TreeMultimap;Landroid/icu/impl/locale/XCldrStub$Multimap;)Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleDistance;->fixAny(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/impl/locale/XLocaleDistance;->fixedName(Ljava/util/List;)Ljava/lang/String; -Landroid/icu/impl/locale/XLocaleDistance;->getContainingMacrosFor(Ljava/util/Collection;Ljava/util/Set;)Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleDistance;->languageDesired2Supported:Landroid/icu/impl/locale/XLocaleDistance$DistanceTable; -Landroid/icu/impl/locale/XLocaleDistance;->newMap()Ljava/util/Map; -Landroid/icu/impl/locale/XLocaleDistance;->printMatchXml(Ljava/util/List;Ljava/util/List;Ljava/lang/Integer;Ljava/lang/Boolean;)V -Landroid/icu/impl/locale/XLocaleDistance;->PRINT_OVERRIDES:Z -Landroid/icu/impl/locale/XLocaleDistance;->regionMapper:Landroid/icu/impl/locale/XLocaleDistance$RegionMapper; -Landroid/icu/impl/locale/XLocaleDistance;->xGetContainment()Landroid/icu/impl/locale/XCldrStub$Multimap; -Landroid/icu/impl/locale/XLocaleDistance;->xGetLanguageMatcherData()Ljava/util/List; -Landroid/icu/impl/locale/XLocaleDistance;->xGetMatchVariables()Ljava/util/Map; -Landroid/icu/impl/locale/XLocaleDistance;->xGetParadigmLocales()Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleMatcher$Builder;->defaultLanguage:Landroid/icu/util/ULocale; -Landroid/icu/impl/locale/XLocaleMatcher$Builder;->demotionPerAdditionalDesiredLocale:I -Landroid/icu/impl/locale/XLocaleMatcher$Builder;->distanceOption:Landroid/icu/impl/locale/XLocaleDistance$DistanceOption; -Landroid/icu/impl/locale/XLocaleMatcher$Builder;->localeDistance:Landroid/icu/impl/locale/XLocaleDistance; -Landroid/icu/impl/locale/XLocaleMatcher$Builder;->supportedLanguagesList:Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleMatcher$Builder;->thresholdDistance:I -Landroid/icu/impl/locale/XLocaleMatcher;-><init>(Landroid/icu/impl/locale/XLocaleMatcher$Builder;)V -Landroid/icu/impl/locale/XLocaleMatcher;->asSet(Landroid/icu/util/LocalePriorityList;)Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleMatcher;->defaultLanguage:Landroid/icu/util/ULocale; -Landroid/icu/impl/locale/XLocaleMatcher;->demotionPerAdditionalDesiredLocale:I -Landroid/icu/impl/locale/XLocaleMatcher;->distanceOption:Landroid/icu/impl/locale/XLocaleDistance$DistanceOption; -Landroid/icu/impl/locale/XLocaleMatcher;->exactSupportedLocales:Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleMatcher;->extractLsrMap(Ljava/util/Set;Ljava/util/Set;)Landroid/icu/impl/locale/XCldrStub$Multimap; -Landroid/icu/impl/locale/XLocaleMatcher;->extractLsrSet(Ljava/util/Set;)Ljava/util/Set; -Landroid/icu/impl/locale/XLocaleMatcher;->localeDistance:Landroid/icu/impl/locale/XLocaleDistance; -Landroid/icu/impl/locale/XLocaleMatcher;->supportedLanguages:Ljava/util/Map; -Landroid/icu/impl/locale/XLocaleMatcher;->thresholdDistance:I -Landroid/icu/impl/locale/XLocaleMatcher;->UND:Landroid/icu/impl/locale/XLikelySubtags$LSR; -Landroid/icu/impl/locale/XLocaleMatcher;->UND_LOCALE:Landroid/icu/util/ULocale; -Landroid/icu/impl/Normalizer2Impl$IsAcceptable;-><init>()V -Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->app:Ljava/lang/Appendable; -Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->appIsStringBuilder:Z -Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->codePointLimit:I -Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->codePointStart:I -Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->impl:Landroid/icu/impl/Normalizer2Impl; -Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->insert(II)V -Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->lastCC:I -Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->previousCC()I -Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->reorderStart:I -Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->setIterator()V -Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->skipPrevious()V -Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->str:Ljava/lang/StringBuilder; -Landroid/icu/impl/Normalizer2Impl;->addComposites(ILandroid/icu/text/UnicodeSet;)V -Landroid/icu/impl/Normalizer2Impl;->addToStartSet(Landroid/icu/impl/Trie2Writable;II)V -Landroid/icu/impl/Normalizer2Impl;->canonIterData:Landroid/icu/impl/Trie2_32; -Landroid/icu/impl/Normalizer2Impl;->canonStartSets:Ljava/util/ArrayList; -Landroid/icu/impl/Normalizer2Impl;->CANON_HAS_COMPOSITIONS:I -Landroid/icu/impl/Normalizer2Impl;->CANON_HAS_SET:I -Landroid/icu/impl/Normalizer2Impl;->CANON_NOT_SEGMENT_STARTER:I -Landroid/icu/impl/Normalizer2Impl;->CANON_VALUE_MASK:I -Landroid/icu/impl/Normalizer2Impl;->centerNoNoDelta:I -Landroid/icu/impl/Normalizer2Impl;->combine(Ljava/lang/String;II)I -Landroid/icu/impl/Normalizer2Impl;->dataVersion:Landroid/icu/util/VersionInfo; -Landroid/icu/impl/Normalizer2Impl;->DATA_FORMAT:I -Landroid/icu/impl/Normalizer2Impl;->decompose(IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)V -Landroid/icu/impl/Normalizer2Impl;->decomposeShort(Ljava/lang/CharSequence;IIZZLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)I -Landroid/icu/impl/Normalizer2Impl;->enumLcccRange(IIILandroid/icu/text/UnicodeSet;)V -Landroid/icu/impl/Normalizer2Impl;->enumNorm16PropertyStartsRange(IIILandroid/icu/text/UnicodeSet;)V -Landroid/icu/impl/Normalizer2Impl;->extraData:Ljava/lang/String; -Landroid/icu/impl/Normalizer2Impl;->findNextCompBoundary(Ljava/lang/CharSequence;IIZ)I -Landroid/icu/impl/Normalizer2Impl;->findNextFCDBoundary(Ljava/lang/CharSequence;II)I -Landroid/icu/impl/Normalizer2Impl;->findPreviousCompBoundary(Ljava/lang/CharSequence;IZ)I -Landroid/icu/impl/Normalizer2Impl;->findPreviousFCDBoundary(Ljava/lang/CharSequence;I)I -Landroid/icu/impl/Normalizer2Impl;->getCCFromNoNo(I)I -Landroid/icu/impl/Normalizer2Impl;->getCompositionsList(I)I -Landroid/icu/impl/Normalizer2Impl;->getCompositionsListForComposite(I)I -Landroid/icu/impl/Normalizer2Impl;->getCompositionsListForDecompYes(I)I -Landroid/icu/impl/Normalizer2Impl;->getCompositionsListForMaybe(I)I -Landroid/icu/impl/Normalizer2Impl;->getPreviousTrailCC(Ljava/lang/CharSequence;II)I -Landroid/icu/impl/Normalizer2Impl;->getTrailCCFromCompYesAndZeroCC(I)I -Landroid/icu/impl/Normalizer2Impl;->hangulLVT()I -Landroid/icu/impl/Normalizer2Impl;->hasCompBoundaryAfter(Ljava/lang/CharSequence;IIZ)Z -Landroid/icu/impl/Normalizer2Impl;->hasCompBoundaryBefore(II)Z -Landroid/icu/impl/Normalizer2Impl;->hasCompBoundaryBefore(Ljava/lang/CharSequence;II)Z -Landroid/icu/impl/Normalizer2Impl;->isCompYesAndZeroCC(I)Z -Landroid/icu/impl/Normalizer2Impl;->isDecompNoAlgorithmic(I)Z -Landroid/icu/impl/Normalizer2Impl;->isDecompYesAndZeroCC(I)Z -Landroid/icu/impl/Normalizer2Impl;->isHangulLV(I)Z -Landroid/icu/impl/Normalizer2Impl;->isHangulLVT(I)Z -Landroid/icu/impl/Normalizer2Impl;->isInert(I)Z -Landroid/icu/impl/Normalizer2Impl;->isJamoL(I)Z -Landroid/icu/impl/Normalizer2Impl;->isJamoVT(I)Z -Landroid/icu/impl/Normalizer2Impl;->isMaybe(I)Z -Landroid/icu/impl/Normalizer2Impl;->isMaybeOrNonZeroCC(I)Z -Landroid/icu/impl/Normalizer2Impl;->isMostDecompYesAndZeroCC(I)Z -Landroid/icu/impl/Normalizer2Impl;->isTrailCC01ForCompBoundaryAfter(I)Z -Landroid/icu/impl/Normalizer2Impl;->IS_ACCEPTABLE:Landroid/icu/impl/Normalizer2Impl$IsAcceptable; -Landroid/icu/impl/Normalizer2Impl;->limitNoNo:I -Landroid/icu/impl/Normalizer2Impl;->mapAlgorithmic(II)I -Landroid/icu/impl/Normalizer2Impl;->maybeYesCompositions:Ljava/lang/String; -Landroid/icu/impl/Normalizer2Impl;->minCompNoMaybeCP:I -Landroid/icu/impl/Normalizer2Impl;->minDecompNoCP:I -Landroid/icu/impl/Normalizer2Impl;->minLcccCP:I -Landroid/icu/impl/Normalizer2Impl;->minMaybeYes:I -Landroid/icu/impl/Normalizer2Impl;->minNoNo:I -Landroid/icu/impl/Normalizer2Impl;->minNoNoCompBoundaryBefore:I -Landroid/icu/impl/Normalizer2Impl;->minNoNoCompNoMaybeCC:I -Landroid/icu/impl/Normalizer2Impl;->minNoNoEmpty:I -Landroid/icu/impl/Normalizer2Impl;->minYesNo:I -Landroid/icu/impl/Normalizer2Impl;->minYesNoMappingsOnly:I -Landroid/icu/impl/Normalizer2Impl;->norm16HasCompBoundaryAfter(IZ)Z -Landroid/icu/impl/Normalizer2Impl;->norm16HasCompBoundaryBefore(I)Z -Landroid/icu/impl/Normalizer2Impl;->normTrie:Landroid/icu/impl/Trie2_16; -Landroid/icu/impl/Normalizer2Impl;->recompose(Landroid/icu/impl/Normalizer2Impl$ReorderingBuffer;IZ)V -Landroid/icu/impl/Normalizer2Impl;->segmentStarterMapper:Landroid/icu/impl/Trie2$ValueMapper; -Landroid/icu/impl/Normalizer2Impl;->smallFCD:[B -Landroid/icu/impl/number/AffixUtils;->getCodePoint(J)I -Landroid/icu/impl/number/AffixUtils;->getOffset(J)I -Landroid/icu/impl/number/AffixUtils;->getState(J)I -Landroid/icu/impl/number/AffixUtils;->getType(J)I -Landroid/icu/impl/number/AffixUtils;->makeTag(IIII)J -Landroid/icu/impl/number/AffixUtils;->STATE_AFTER_QUOTE:I -Landroid/icu/impl/number/AffixUtils;->STATE_BASE:I -Landroid/icu/impl/number/AffixUtils;->STATE_FIFTH_CURR:I -Landroid/icu/impl/number/AffixUtils;->STATE_FIRST_CURR:I -Landroid/icu/impl/number/AffixUtils;->STATE_FIRST_QUOTE:I -Landroid/icu/impl/number/AffixUtils;->STATE_FOURTH_CURR:I -Landroid/icu/impl/number/AffixUtils;->STATE_INSIDE_QUOTE:I -Landroid/icu/impl/number/AffixUtils;->STATE_OVERFLOW_CURR:I -Landroid/icu/impl/number/AffixUtils;->STATE_SECOND_CURR:I -Landroid/icu/impl/number/AffixUtils;->STATE_THIRD_CURR:I -Landroid/icu/impl/number/AffixUtils;->TYPE_CODEPOINT:I -Landroid/icu/impl/number/CompactData$CompactDataSink;-><init>(Landroid/icu/impl/number/CompactData;)V -Landroid/icu/impl/number/CompactData$CompactDataSink;->data:Landroid/icu/impl/number/CompactData; -Landroid/icu/impl/number/CompactData;->COMPACT_MAX_DIGITS:I -Landroid/icu/impl/number/CompactData;->countZeros(Ljava/lang/String;)I -Landroid/icu/impl/number/CompactData;->getIndex(ILandroid/icu/impl/StandardPlural;)I -Landroid/icu/impl/number/CompactData;->getResourceBundleKey(Ljava/lang/String;Landroid/icu/text/CompactDecimalFormat$CompactStyle;Landroid/icu/impl/number/CompactData$CompactType;Ljava/lang/StringBuilder;)V -Landroid/icu/impl/number/CompactData;->isEmpty:Z -Landroid/icu/impl/number/CompactData;->largestMagnitude:B -Landroid/icu/impl/number/CompactData;->multipliers:[B -Landroid/icu/impl/number/CompactData;->patterns:[Ljava/lang/String; -Landroid/icu/impl/number/CompactData;->USE_FALLBACK:Ljava/lang/String; -Landroid/icu/impl/number/ConstantMultiFieldModifier;->strong:Z -Landroid/icu/impl/number/DecimalFormatProperties;->compactCustomData:Ljava/util/Map; -Landroid/icu/impl/number/DecimalFormatProperties;->compactStyle:Landroid/icu/text/CompactDecimalFormat$CompactStyle; -Landroid/icu/impl/number/DecimalFormatProperties;->currency:Landroid/icu/util/Currency; -Landroid/icu/impl/number/DecimalFormatProperties;->currencyPluralInfo:Landroid/icu/text/CurrencyPluralInfo; -Landroid/icu/impl/number/DecimalFormatProperties;->currencyUsage:Landroid/icu/util/Currency$CurrencyUsage; -Landroid/icu/impl/number/DecimalFormatProperties;->decimalPatternMatchRequired:Z -Landroid/icu/impl/number/DecimalFormatProperties;->decimalSeparatorAlwaysShown:Z -Landroid/icu/impl/number/DecimalFormatProperties;->DEFAULT:Landroid/icu/impl/number/DecimalFormatProperties; -Landroid/icu/impl/number/DecimalFormatProperties;->exponentSignAlwaysShown:Z -Landroid/icu/impl/number/DecimalFormatProperties;->formatWidth:I -Landroid/icu/impl/number/DecimalFormatProperties;->groupingSize:I -Landroid/icu/impl/number/DecimalFormatProperties;->magnitudeMultiplier:I -Landroid/icu/impl/number/DecimalFormatProperties;->mathContext:Ljava/math/MathContext; -Landroid/icu/impl/number/DecimalFormatProperties;->maximumFractionDigits:I -Landroid/icu/impl/number/DecimalFormatProperties;->maximumIntegerDigits:I -Landroid/icu/impl/number/DecimalFormatProperties;->maximumSignificantDigits:I -Landroid/icu/impl/number/DecimalFormatProperties;->minimumExponentDigits:I -Landroid/icu/impl/number/DecimalFormatProperties;->minimumFractionDigits:I -Landroid/icu/impl/number/DecimalFormatProperties;->minimumGroupingDigits:I -Landroid/icu/impl/number/DecimalFormatProperties;->minimumIntegerDigits:I -Landroid/icu/impl/number/DecimalFormatProperties;->minimumSignificantDigits:I -Landroid/icu/impl/number/DecimalFormatProperties;->multiplier:Ljava/math/BigDecimal; -Landroid/icu/impl/number/DecimalFormatProperties;->negativePrefix:Ljava/lang/String; -Landroid/icu/impl/number/DecimalFormatProperties;->negativePrefixPattern:Ljava/lang/String; -Landroid/icu/impl/number/DecimalFormatProperties;->negativeSuffix:Ljava/lang/String; -Landroid/icu/impl/number/DecimalFormatProperties;->negativeSuffixPattern:Ljava/lang/String; -Landroid/icu/impl/number/DecimalFormatProperties;->padPosition:Landroid/icu/impl/number/Padder$PadPosition; -Landroid/icu/impl/number/DecimalFormatProperties;->padString:Ljava/lang/String; -Landroid/icu/impl/number/DecimalFormatProperties;->parseCaseSensitive:Z -Landroid/icu/impl/number/DecimalFormatProperties;->parseGroupingMode:Landroid/icu/impl/number/Parse$GroupingMode; -Landroid/icu/impl/number/DecimalFormatProperties;->parseIntegerOnly:Z -Landroid/icu/impl/number/DecimalFormatProperties;->parseMode:Landroid/icu/impl/number/Parse$ParseMode; -Landroid/icu/impl/number/DecimalFormatProperties;->parseNoExponent:Z -Landroid/icu/impl/number/DecimalFormatProperties;->parseToBigDecimal:Z -Landroid/icu/impl/number/DecimalFormatProperties;->pluralRules:Landroid/icu/text/PluralRules; -Landroid/icu/impl/number/DecimalFormatProperties;->positivePrefix:Ljava/lang/String; -Landroid/icu/impl/number/DecimalFormatProperties;->positivePrefixPattern:Ljava/lang/String; -Landroid/icu/impl/number/DecimalFormatProperties;->positiveSuffix:Ljava/lang/String; -Landroid/icu/impl/number/DecimalFormatProperties;->positiveSuffixPattern:Ljava/lang/String; -Landroid/icu/impl/number/DecimalFormatProperties;->readObjectImpl(Ljava/io/ObjectInputStream;)V -Landroid/icu/impl/number/DecimalFormatProperties;->roundingIncrement:Ljava/math/BigDecimal; -Landroid/icu/impl/number/DecimalFormatProperties;->roundingMode:Ljava/math/RoundingMode; -Landroid/icu/impl/number/DecimalFormatProperties;->secondaryGroupingSize:I -Landroid/icu/impl/number/DecimalFormatProperties;->signAlwaysShown:Z -Landroid/icu/impl/number/DecimalFormatProperties;->writeObjectImpl(Ljava/io/ObjectOutputStream;)V -Landroid/icu/impl/number/DecimalFormatProperties;->_clear()Landroid/icu/impl/number/DecimalFormatProperties; -Landroid/icu/impl/number/DecimalFormatProperties;->_copyFrom(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/DecimalFormatProperties; -Landroid/icu/impl/number/DecimalFormatProperties;->_equals(Landroid/icu/impl/number/DecimalFormatProperties;)Z -Landroid/icu/impl/number/DecimalFormatProperties;->_equalsHelper(II)Z -Landroid/icu/impl/number/DecimalFormatProperties;->_equalsHelper(Ljava/lang/Object;Ljava/lang/Object;)Z -Landroid/icu/impl/number/DecimalFormatProperties;->_equalsHelper(ZZ)Z -Landroid/icu/impl/number/DecimalFormatProperties;->_hashCode()I -Landroid/icu/impl/number/DecimalFormatProperties;->_hashCodeHelper(I)I -Landroid/icu/impl/number/DecimalFormatProperties;->_hashCodeHelper(Ljava/lang/Object;)I -Landroid/icu/impl/number/DecimalFormatProperties;->_hashCodeHelper(Z)I -Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->convertToAccurateDouble()V -Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->DOUBLE_MULTIPLIERS:[D -Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->fractionCount()I -Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->fractionCountWithoutTrailingZeros()I -Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->safeSubtract(II)I -Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->SECTION_LOWER_EDGE:I -Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->SECTION_UPPER_EDGE:I -Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToBigDecimal(Ljava/math/BigDecimal;)V -Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToBigInteger(Ljava/math/BigInteger;)V -Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToDoubleFast(D)V -Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToInt(I)V -Landroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToLong(J)V -Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->bcdBytes:[B -Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->bcdLong:J -Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->ensureCapacity()V -Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->ensureCapacity(I)V -Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->switchStorage()V -Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->usingBytes:Z -Landroid/icu/impl/number/MicroProps;->exhausted:Z -Landroid/icu/impl/number/MicroProps;->immutable:Z -Landroid/icu/impl/number/MultiplierImpl;-><init>(Landroid/icu/impl/number/MultiplierImpl;Landroid/icu/impl/number/MicroPropsGenerator;)V -Landroid/icu/impl/number/MultiplierImpl;->bigDecimalMultiplier:Ljava/math/BigDecimal; -Landroid/icu/impl/number/MultiplierImpl;->magnitudeMultiplier:I -Landroid/icu/impl/number/MultiplierImpl;->parent:Landroid/icu/impl/number/MicroPropsGenerator; -Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;-><init>(Landroid/icu/impl/number/ParameterizedModifier;Landroid/icu/text/PluralRules;Landroid/icu/impl/number/MicroPropsGenerator;)V -Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->parent:Landroid/icu/impl/number/MicroPropsGenerator; -Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->pm:Landroid/icu/impl/number/ParameterizedModifier; -Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->rules:Landroid/icu/text/PluralRules; -Landroid/icu/impl/number/MutablePatternModifier;->createConstantModifier(Landroid/icu/impl/number/NumberStringBuilder;Landroid/icu/impl/number/NumberStringBuilder;)Landroid/icu/impl/number/ConstantMultiFieldModifier; -Landroid/icu/impl/number/MutablePatternModifier;->currency:Landroid/icu/util/Currency; -Landroid/icu/impl/number/MutablePatternModifier;->enterCharSequenceMode(Z)V -Landroid/icu/impl/number/MutablePatternModifier;->exitCharSequenceMode()V -Landroid/icu/impl/number/MutablePatternModifier;->flags:I -Landroid/icu/impl/number/MutablePatternModifier;->inCharSequenceMode:Z -Landroid/icu/impl/number/MutablePatternModifier;->insertPrefix(Landroid/icu/impl/number/NumberStringBuilder;I)I -Landroid/icu/impl/number/MutablePatternModifier;->insertSuffix(Landroid/icu/impl/number/NumberStringBuilder;I)I -Landroid/icu/impl/number/MutablePatternModifier;->isNegative:Z -Landroid/icu/impl/number/MutablePatternModifier;->isStrong:Z -Landroid/icu/impl/number/MutablePatternModifier;->length:I -Landroid/icu/impl/number/MutablePatternModifier;->parent:Landroid/icu/impl/number/MicroPropsGenerator; -Landroid/icu/impl/number/MutablePatternModifier;->patternInfo:Landroid/icu/impl/number/AffixPatternProvider; -Landroid/icu/impl/number/MutablePatternModifier;->perMilleReplacesPercent:Z -Landroid/icu/impl/number/MutablePatternModifier;->plural:Landroid/icu/impl/StandardPlural; -Landroid/icu/impl/number/MutablePatternModifier;->plusReplacesMinusSign:Z -Landroid/icu/impl/number/MutablePatternModifier;->prependSign:Z -Landroid/icu/impl/number/MutablePatternModifier;->rules:Landroid/icu/text/PluralRules; -Landroid/icu/impl/number/MutablePatternModifier;->signDisplay:Landroid/icu/number/NumberFormatter$SignDisplay; -Landroid/icu/impl/number/MutablePatternModifier;->symbols:Landroid/icu/text/DecimalFormatSymbols; -Landroid/icu/impl/number/MutablePatternModifier;->unitWidth:Landroid/icu/number/NumberFormatter$UnitWidth; -Landroid/icu/impl/number/NumberStringBuilder;->chars:[C -Landroid/icu/impl/number/NumberStringBuilder;->fields:[Landroid/icu/text/NumberFormat$Field; -Landroid/icu/impl/number/NumberStringBuilder;->fieldToDebugChar:Ljava/util/Map; -Landroid/icu/impl/number/NumberStringBuilder;->getCapacity()I -Landroid/icu/impl/number/NumberStringBuilder;->length:I -Landroid/icu/impl/number/NumberStringBuilder;->prepareForInsert(II)I -Landroid/icu/impl/number/NumberStringBuilder;->prepareForInsertHelper(II)I -Landroid/icu/impl/number/NumberStringBuilder;->zero:I -Landroid/icu/impl/number/Padder;->addPaddingHelper(Ljava/lang/String;ILandroid/icu/impl/number/NumberStringBuilder;I)I -Landroid/icu/impl/number/Padder;->paddingString:Ljava/lang/String; -Landroid/icu/impl/number/Padder;->position:Landroid/icu/impl/number/Padder$PadPosition; -Landroid/icu/impl/number/Padder;->targetWidth:I -Landroid/icu/impl/number/ParameterizedModifier;->frozen:Z -Landroid/icu/impl/number/ParameterizedModifier;->getModIndex(ZLandroid/icu/impl/StandardPlural;)I -Landroid/icu/impl/number/ParameterizedModifier;->mods:[Landroid/icu/impl/number/Modifier; -Landroid/icu/impl/number/ParameterizedModifier;->negative:Landroid/icu/impl/number/Modifier; -Landroid/icu/impl/number/ParameterizedModifier;->positive:Landroid/icu/impl/number/Modifier; -Landroid/icu/impl/number/Parse$AffixHolder;-><init>(Ljava/lang/String;Ljava/lang/String;ZZ)V -Landroid/icu/impl/number/Parse$AffixHolder;->addToState(Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/DecimalFormatProperties;)V -Landroid/icu/impl/number/Parse$AffixHolder;->EMPTY_NEGATIVE:Landroid/icu/impl/number/Parse$AffixHolder; -Landroid/icu/impl/number/Parse$AffixHolder;->EMPTY_POSITIVE:Landroid/icu/impl/number/Parse$AffixHolder; -Landroid/icu/impl/number/Parse$AffixHolder;->fromPropertiesNegativePattern(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Parse$AffixHolder; -Landroid/icu/impl/number/Parse$AffixHolder;->fromPropertiesNegativeString(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Parse$AffixHolder; -Landroid/icu/impl/number/Parse$AffixHolder;->fromPropertiesPositivePattern(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Parse$AffixHolder; -Landroid/icu/impl/number/Parse$AffixHolder;->fromPropertiesPositiveString(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Parse$AffixHolder; -Landroid/icu/impl/number/Parse$AffixHolder;->getInstance(Ljava/lang/String;Ljava/lang/String;ZZ)Landroid/icu/impl/number/Parse$AffixHolder; -Landroid/icu/impl/number/Parse$AffixHolder;->negative:Z -Landroid/icu/impl/number/Parse$AffixHolder;->p:Ljava/lang/String; -Landroid/icu/impl/number/Parse$AffixHolder;->s:Ljava/lang/String; -Landroid/icu/impl/number/Parse$AffixHolder;->strings:Z -Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;-><init>(Landroid/icu/util/ULocale;)V -Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->addPattern(Ljava/lang/String;)V -Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->addToState(Landroid/icu/util/ULocale;Landroid/icu/impl/number/Parse$ParserState;)V -Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->currencyAffixPatterns:Ljava/util/concurrent/ConcurrentHashMap; -Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->set:Ljava/util/Set; -Landroid/icu/impl/number/Parse$CurrencyAffixPatterns;->threadLocalProperties:Ljava/lang/ThreadLocal; -Landroid/icu/impl/number/Parse$DigitType;->EXPONENT:Landroid/icu/impl/number/Parse$DigitType; -Landroid/icu/impl/number/Parse$DigitType;->FRACTION:Landroid/icu/impl/number/Parse$DigitType; -Landroid/icu/impl/number/Parse$DigitType;->INTEGER:Landroid/icu/impl/number/Parse$DigitType; -Landroid/icu/impl/number/Parse$DigitType;->valueOf(Ljava/lang/String;)Landroid/icu/impl/number/Parse$DigitType; -Landroid/icu/impl/number/Parse$DigitType;->values()[Landroid/icu/impl/number/Parse$DigitType; -Landroid/icu/impl/number/Parse$ParserState;-><init>()V -Landroid/icu/impl/number/Parse$ParserState;->affixHolders:Ljava/util/Set; -Landroid/icu/impl/number/Parse$ParserState;->caseSensitive:Z -Landroid/icu/impl/number/Parse$ParserState;->clear()Landroid/icu/impl/number/Parse$ParserState; -Landroid/icu/impl/number/Parse$ParserState;->decimalCp1:I -Landroid/icu/impl/number/Parse$ParserState;->decimalCp2:I -Landroid/icu/impl/number/Parse$ParserState;->decimalType1:Landroid/icu/impl/number/Parse$SeparatorType; -Landroid/icu/impl/number/Parse$ParserState;->decimalType2:Landroid/icu/impl/number/Parse$SeparatorType; -Landroid/icu/impl/number/Parse$ParserState;->digitTrie:Landroid/icu/impl/TextTrieMap; -Landroid/icu/impl/number/Parse$ParserState;->getItem(I)Landroid/icu/impl/number/Parse$StateItem; -Landroid/icu/impl/number/Parse$ParserState;->getNext()Landroid/icu/impl/number/Parse$StateItem; -Landroid/icu/impl/number/Parse$ParserState;->groupingCp1:I -Landroid/icu/impl/number/Parse$ParserState;->groupingCp2:I -Landroid/icu/impl/number/Parse$ParserState;->groupingMode:Landroid/icu/impl/number/Parse$GroupingMode; -Landroid/icu/impl/number/Parse$ParserState;->groupingType1:Landroid/icu/impl/number/Parse$SeparatorType; -Landroid/icu/impl/number/Parse$ParserState;->groupingType2:Landroid/icu/impl/number/Parse$SeparatorType; -Landroid/icu/impl/number/Parse$ParserState;->items:[Landroid/icu/impl/number/Parse$StateItem; -Landroid/icu/impl/number/Parse$ParserState;->lastInsertedIndex()I -Landroid/icu/impl/number/Parse$ParserState;->length:I -Landroid/icu/impl/number/Parse$ParserState;->mode:Landroid/icu/impl/number/Parse$ParseMode; -Landroid/icu/impl/number/Parse$ParserState;->parseCurrency:Z -Landroid/icu/impl/number/Parse$ParserState;->prevItems:[Landroid/icu/impl/number/Parse$StateItem; -Landroid/icu/impl/number/Parse$ParserState;->prevLength:I -Landroid/icu/impl/number/Parse$ParserState;->properties:Landroid/icu/impl/number/DecimalFormatProperties; -Landroid/icu/impl/number/Parse$ParserState;->swap()V -Landroid/icu/impl/number/Parse$ParserState;->swapBack()V -Landroid/icu/impl/number/Parse$ParserState;->symbols:Landroid/icu/text/DecimalFormatSymbols; -Landroid/icu/impl/number/Parse$SeparatorType;->COMMA_LIKE:Landroid/icu/impl/number/Parse$SeparatorType; -Landroid/icu/impl/number/Parse$SeparatorType;->fromCp(ILandroid/icu/impl/number/Parse$ParseMode;)Landroid/icu/impl/number/Parse$SeparatorType; -Landroid/icu/impl/number/Parse$SeparatorType;->OTHER_GROUPING:Landroid/icu/impl/number/Parse$SeparatorType; -Landroid/icu/impl/number/Parse$SeparatorType;->PERIOD_LIKE:Landroid/icu/impl/number/Parse$SeparatorType; -Landroid/icu/impl/number/Parse$SeparatorType;->UNKNOWN:Landroid/icu/impl/number/Parse$SeparatorType; -Landroid/icu/impl/number/Parse$SeparatorType;->valueOf(Ljava/lang/String;)Landroid/icu/impl/number/Parse$SeparatorType; -Landroid/icu/impl/number/Parse$SeparatorType;->values()[Landroid/icu/impl/number/Parse$SeparatorType; -Landroid/icu/impl/number/Parse$StateItem;-><init>(C)V -Landroid/icu/impl/number/Parse$StateItem;->affix:Landroid/icu/impl/number/Parse$AffixHolder; -Landroid/icu/impl/number/Parse$StateItem;->appendDigit(BLandroid/icu/impl/number/Parse$DigitType;)V -Landroid/icu/impl/number/Parse$StateItem;->clear()Landroid/icu/impl/number/Parse$StateItem; -Landroid/icu/impl/number/Parse$StateItem;->copyFrom(Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$StateName;I)Landroid/icu/impl/number/Parse$StateItem; -Landroid/icu/impl/number/Parse$StateItem;->currentAffixPattern:Ljava/lang/CharSequence; -Landroid/icu/impl/number/Parse$StateItem;->currentCurrencyTrieState:Landroid/icu/impl/TextTrieMap$ParseState; -Landroid/icu/impl/number/Parse$StateItem;->currentDigitTrieState:Landroid/icu/impl/TextTrieMap$ParseState; -Landroid/icu/impl/number/Parse$StateItem;->currentDigitType:Landroid/icu/impl/number/Parse$DigitType; -Landroid/icu/impl/number/Parse$StateItem;->currentOffset:I -Landroid/icu/impl/number/Parse$StateItem;->currentStepwiseParserTag:J -Landroid/icu/impl/number/Parse$StateItem;->currentString:Ljava/lang/CharSequence; -Landroid/icu/impl/number/Parse$StateItem;->currentTrailing:Z -Landroid/icu/impl/number/Parse$StateItem;->exponent:I -Landroid/icu/impl/number/Parse$StateItem;->fq:Landroid/icu/impl/number/DecimalQuantity_DualStorageBCD; -Landroid/icu/impl/number/Parse$StateItem;->groupingCp:I -Landroid/icu/impl/number/Parse$StateItem;->groupingWidths:J -Landroid/icu/impl/number/Parse$StateItem;->hasNumber()Z -Landroid/icu/impl/number/Parse$StateItem;->id:C -Landroid/icu/impl/number/Parse$StateItem;->isoCode:Ljava/lang/String; -Landroid/icu/impl/number/Parse$StateItem;->name:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateItem;->numDigits:I -Landroid/icu/impl/number/Parse$StateItem;->path:Ljava/lang/String; -Landroid/icu/impl/number/Parse$StateItem;->returnTo1:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateItem;->returnTo2:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateItem;->sawCurrency:Z -Landroid/icu/impl/number/Parse$StateItem;->sawDecimalPoint:Z -Landroid/icu/impl/number/Parse$StateItem;->sawExponentDigit:Z -Landroid/icu/impl/number/Parse$StateItem;->sawInfinity:Z -Landroid/icu/impl/number/Parse$StateItem;->sawNaN:Z -Landroid/icu/impl/number/Parse$StateItem;->sawNegative:Z -Landroid/icu/impl/number/Parse$StateItem;->sawNegativeExponent:Z -Landroid/icu/impl/number/Parse$StateItem;->sawPrefix:Z -Landroid/icu/impl/number/Parse$StateItem;->sawSuffix:Z -Landroid/icu/impl/number/Parse$StateItem;->score:I -Landroid/icu/impl/number/Parse$StateItem;->toCurrencyAmount(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/util/CurrencyAmount; -Landroid/icu/impl/number/Parse$StateItem;->toNumber(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/lang/Number; -Landroid/icu/impl/number/Parse$StateItem;->trailingCount:I -Landroid/icu/impl/number/Parse$StateItem;->trailingZeros:I -Landroid/icu/impl/number/Parse$StateName;->AFTER_EXPONENT_DIGIT:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->AFTER_EXPONENT_SEPARATOR:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->AFTER_FRACTION_DIGIT:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->AFTER_INTEGER_DIGIT:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->AFTER_PREFIX:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->AFTER_SUFFIX:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->BEFORE_PREFIX:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->BEFORE_SUFFIX:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->BEFORE_SUFFIX_SEEN_EXPONENT:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->INSIDE_AFFIX_PATTERN:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->INSIDE_CURRENCY:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->INSIDE_DIGIT:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->INSIDE_STRING:Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->valueOf(Ljava/lang/String;)Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse$StateName;->values()[Landroid/icu/impl/number/Parse$StateName; -Landroid/icu/impl/number/Parse;->acceptAffixHolder(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$AffixHolder;Z)V -Landroid/icu/impl/number/Parse;->acceptAffixPattern(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;J)J -Landroid/icu/impl/number/Parse;->acceptAffixPatternHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;J)J -Landroid/icu/impl/number/Parse;->acceptAffixPatternNonIgnorable(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;IJJ)J -Landroid/icu/impl/number/Parse;->acceptAffixPatternOffset(ILandroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)J -Landroid/icu/impl/number/Parse;->acceptBidi(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptCurrency(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptCurrency(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)J -Landroid/icu/impl/number/Parse;->acceptCurrencyHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/TextTrieMap$ParseState;)J -Landroid/icu/impl/number/Parse;->acceptCurrencyOffset(ILandroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptDecimalPoint(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptDigitHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$DigitType;)V -Landroid/icu/impl/number/Parse;->acceptDigitTrie(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$DigitType;)J -Landroid/icu/impl/number/Parse;->acceptDigitTrieHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Landroid/icu/impl/number/Parse$DigitType;Landroid/icu/impl/TextTrieMap$ParseState;)J -Landroid/icu/impl/number/Parse;->acceptDigitTrieOffset(ILandroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptExponentDigit(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptExponentSeparator(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptFractionDigit(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptGrouping(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptInfinity(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptIntegerDigit(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptMinusOrPlusSign(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Z)V -Landroid/icu/impl/number/Parse;->acceptMinusSign(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Z)J -Landroid/icu/impl/number/Parse;->acceptNan(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptPadding(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptPlusSign(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Z)J -Landroid/icu/impl/number/Parse;->acceptPrefix(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptString(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;IZ)J -Landroid/icu/impl/number/Parse;->acceptStringHelper(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;IZ)J -Landroid/icu/impl/number/Parse;->acceptStringNonIgnorable(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;ZIJJ)J -Landroid/icu/impl/number/Parse;->acceptStringOffset(ILandroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)J -Landroid/icu/impl/number/Parse;->acceptStringOrAffixPatternWithIgnorables(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;Ljava/lang/CharSequence;JZZ)J -Landroid/icu/impl/number/Parse;->acceptSuffix(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->acceptWhitespace(ILandroid/icu/impl/number/Parse$StateName;Landroid/icu/impl/number/Parse$ParserState;Landroid/icu/impl/number/Parse$StateItem;)V -Landroid/icu/impl/number/Parse;->codePointEquals(IILandroid/icu/impl/number/Parse$ParserState;)Z -Landroid/icu/impl/number/Parse;->isIgnorable(ILandroid/icu/impl/number/Parse$ParserState;)Z -Landroid/icu/impl/number/Parse;->makeDigitTrie([Ljava/lang/String;)Landroid/icu/impl/TextTrieMap; -Landroid/icu/impl/number/Parse;->MAX_LONG_AS_BIG_DECIMAL:Ljava/math/BigDecimal; -Landroid/icu/impl/number/Parse;->MIN_LONG_AS_BIG_DECIMAL:Ljava/math/BigDecimal; -Landroid/icu/impl/number/Parse;->recordDigit(Landroid/icu/impl/number/Parse$StateItem;BLandroid/icu/impl/number/Parse$DigitType;)V -Landroid/icu/impl/number/Parse;->UNISET_BIDI:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/number/Parse;->UNISET_COMMA_LIKE:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/number/Parse;->UNISET_OTHER_GROUPING_SEPARATORS:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/number/Parse;->UNISET_PERIOD_LIKE:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/number/Parse;->UNISET_STRICT_COMMA_LIKE:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/number/Parse;->UNISET_STRICT_PERIOD_LIKE:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/number/Parse;->UNISET_WHITESPACE:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/number/Parse;->_parse(Ljava/lang/CharSequence;Ljava/text/ParsePosition;ZLandroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;)Landroid/icu/impl/number/Parse$StateItem; -Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;-><init>(Ljava/lang/String;)V -Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;->getEndpoints(I)J -Landroid/icu/impl/number/PatternStringParser$ParserState;-><init>(Ljava/lang/String;)V -Landroid/icu/impl/number/PatternStringParser$ParserState;->next()I -Landroid/icu/impl/number/PatternStringParser$ParserState;->offset:I -Landroid/icu/impl/number/PatternStringParser$ParserState;->pattern:Ljava/lang/String; -Landroid/icu/impl/number/PatternStringParser$ParserState;->peek()I -Landroid/icu/impl/number/PatternStringParser$ParserState;->toParseException(Ljava/lang/String;)Ljava/lang/IllegalArgumentException; -Landroid/icu/impl/number/PatternStringParser;->consumeAffix(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)J -Landroid/icu/impl/number/PatternStringParser;->consumeExponent(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V -Landroid/icu/impl/number/PatternStringParser;->consumeFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V -Landroid/icu/impl/number/PatternStringParser;->consumeFractionFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V -Landroid/icu/impl/number/PatternStringParser;->consumeIntegerFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V -Landroid/icu/impl/number/PatternStringParser;->consumeLiteral(Landroid/icu/impl/number/PatternStringParser$ParserState;)V -Landroid/icu/impl/number/PatternStringParser;->consumePadding(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;Landroid/icu/impl/number/Padder$PadPosition;)V -Landroid/icu/impl/number/PatternStringParser;->consumePattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;)V -Landroid/icu/impl/number/PatternStringParser;->consumeSubpattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V -Landroid/icu/impl/number/PatternStringParser;->parseToExistingPropertiesImpl(Ljava/lang/String;Landroid/icu/impl/number/DecimalFormatProperties;I)V -Landroid/icu/impl/number/PatternStringParser;->patternInfoToProperties(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;I)V -Landroid/icu/impl/PatternTokenizer;->AFTER_QUOTE:I -Landroid/icu/impl/PatternTokenizer;->appendEscaped(Ljava/lang/StringBuffer;I)V -Landroid/icu/impl/PatternTokenizer;->escapeCharacters:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/PatternTokenizer;->extraQuotingCharacters:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/PatternTokenizer;->HEX:I -Landroid/icu/impl/PatternTokenizer;->ignorableCharacters:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/PatternTokenizer;->IN_QUOTE:I -Landroid/icu/impl/PatternTokenizer;->limit:I -Landroid/icu/impl/PatternTokenizer;->needingQuoteCharacters:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/PatternTokenizer;->NONE:I -Landroid/icu/impl/PatternTokenizer;->NORMAL_QUOTE:I -Landroid/icu/impl/PatternTokenizer;->NO_QUOTE:I -Landroid/icu/impl/PatternTokenizer;->pattern:Ljava/lang/String; -Landroid/icu/impl/PatternTokenizer;->SLASH_START:I -Landroid/icu/impl/PatternTokenizer;->start:I -Landroid/icu/impl/PatternTokenizer;->START_QUOTE:I -Landroid/icu/impl/PatternTokenizer;->syntaxCharacters:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/PatternTokenizer;->usingQuote:Z -Landroid/icu/impl/PatternTokenizer;->usingSlash:Z -Landroid/icu/impl/PluralRulesLoader;-><init>()V -Landroid/icu/impl/PluralRulesLoader;->checkBuildRulesIdMaps()V -Landroid/icu/impl/PluralRulesLoader;->getLocaleIdToRulesIdMap(Landroid/icu/text/PluralRules$PluralType;)Ljava/util/Map; -Landroid/icu/impl/PluralRulesLoader;->getRulesIdToEquivalentULocaleMap()Ljava/util/Map; -Landroid/icu/impl/PluralRulesLoader;->localeIdToCardinalRulesId:Ljava/util/Map; -Landroid/icu/impl/PluralRulesLoader;->localeIdToOrdinalRulesId:Ljava/util/Map; -Landroid/icu/impl/PluralRulesLoader;->localeIdToPluralRanges:Ljava/util/Map; -Landroid/icu/impl/PluralRulesLoader;->rulesIdToEquivalentULocale:Ljava/util/Map; -Landroid/icu/impl/PluralRulesLoader;->rulesIdToRules:Ljava/util/Map; -Landroid/icu/impl/PluralRulesLoader;->UNKNOWN_RANGE:Landroid/icu/text/PluralRanges; -Landroid/icu/impl/Relation$SimpleEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V -Landroid/icu/impl/Relation$SimpleEntry;-><init>(Ljava/util/Map$Entry;)V -Landroid/icu/impl/Relation$SimpleEntry;->key:Ljava/lang/Object; -Landroid/icu/impl/Relation$SimpleEntry;->value:Ljava/lang/Object; -Landroid/icu/impl/Relation;->data:Ljava/util/Map; -Landroid/icu/impl/Relation;->frozen:Z -Landroid/icu/impl/Relation;->newSet()Ljava/util/Set; -Landroid/icu/impl/Relation;->setComparatorParam:[Ljava/lang/Object; -Landroid/icu/impl/Relation;->setCreator:Ljava/lang/reflect/Constructor; -Landroid/icu/impl/RuleCharacterIterator;->buf:[C -Landroid/icu/impl/RuleCharacterIterator;->bufPos:I -Landroid/icu/impl/RuleCharacterIterator;->isEscaped:Z -Landroid/icu/impl/RuleCharacterIterator;->pos:Ljava/text/ParsePosition; -Landroid/icu/impl/RuleCharacterIterator;->sym:Landroid/icu/text/SymbolTable; -Landroid/icu/impl/RuleCharacterIterator;->text:Ljava/lang/String; -Landroid/icu/impl/RuleCharacterIterator;->_advance(I)V -Landroid/icu/impl/RuleCharacterIterator;->_current()I -Landroid/icu/impl/SimpleCache;->cacheRef:Ljava/lang/ref/Reference; -Landroid/icu/impl/SimpleCache;->capacity:I -Landroid/icu/impl/SimpleCache;->DEFAULT_CAPACITY:I -Landroid/icu/impl/SimpleCache;->type:I -Landroid/icu/impl/SoftCache;->map:Ljava/util/concurrent/ConcurrentHashMap; -Landroid/icu/impl/StandardPlural;->keyword:Ljava/lang/String; -Landroid/icu/impl/TextTrieMap$CharIterator;-><init>(Ljava/lang/CharSequence;IZ)V -Landroid/icu/impl/TextTrieMap$CharIterator;->_ignoreCase:Z -Landroid/icu/impl/TextTrieMap$CharIterator;->_nextIdx:I -Landroid/icu/impl/TextTrieMap$CharIterator;->_remainingChar:Ljava/lang/Character; -Landroid/icu/impl/TextTrieMap$CharIterator;->_startIdx:I -Landroid/icu/impl/TextTrieMap$CharIterator;->_text:Ljava/lang/CharSequence; -Landroid/icu/impl/TextTrieMap$LongestMatchHandler;-><init>()V -Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->getMatches()Ljava/util/Iterator; -Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->getMatchLength()I -Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->length:I -Landroid/icu/impl/TextTrieMap$LongestMatchHandler;->matches:Ljava/util/Iterator; -Landroid/icu/impl/TextTrieMap$Node$StepResult;->node:Landroid/icu/impl/TextTrieMap$Node; -Landroid/icu/impl/TextTrieMap$Node$StepResult;->offset:I -Landroid/icu/impl/TextTrieMap$Node;->add(Landroid/icu/impl/TextTrieMap$CharIterator;Ljava/lang/Object;)V -Landroid/icu/impl/TextTrieMap$Node;->add([CILjava/lang/Object;)V -Landroid/icu/impl/TextTrieMap$Node;->addValue(Ljava/util/List;Ljava/lang/Object;)Ljava/util/List; -Landroid/icu/impl/TextTrieMap$Node;->charCount()I -Landroid/icu/impl/TextTrieMap$Node;->findMatch(Landroid/icu/impl/TextTrieMap$CharIterator;)Landroid/icu/impl/TextTrieMap$Node; -Landroid/icu/impl/TextTrieMap$Node;->hasChildFor(C)Z -Landroid/icu/impl/TextTrieMap$Node;->lenMatches([CI)I -Landroid/icu/impl/TextTrieMap$Node;->matchFollowing(Landroid/icu/impl/TextTrieMap$CharIterator;)Z -Landroid/icu/impl/TextTrieMap$Node;->split(I)V -Landroid/icu/impl/TextTrieMap$Node;->takeStep(CILandroid/icu/impl/TextTrieMap$Node$StepResult;)V -Landroid/icu/impl/TextTrieMap$Node;->values()Ljava/util/Iterator; -Landroid/icu/impl/TextTrieMap$Node;->_children:Ljava/util/List; -Landroid/icu/impl/TextTrieMap$Node;->_text:[C -Landroid/icu/impl/TextTrieMap$Node;->_values:Ljava/util/List; -Landroid/icu/impl/TextTrieMap$ParseState;->node:Landroid/icu/impl/TextTrieMap$Node; -Landroid/icu/impl/TextTrieMap$ParseState;->offset:I -Landroid/icu/impl/TextTrieMap$ParseState;->result:Landroid/icu/impl/TextTrieMap$Node$StepResult; -Landroid/icu/impl/TextTrieMap;->find(Landroid/icu/impl/TextTrieMap$Node;Landroid/icu/impl/TextTrieMap$CharIterator;Landroid/icu/impl/TextTrieMap$ResultHandler;)V -Landroid/icu/impl/TextTrieMap;->subArray([CI)[C -Landroid/icu/impl/TextTrieMap;->subArray([CII)[C -Landroid/icu/impl/TextTrieMap;->toCharArray(Ljava/lang/CharSequence;)[C -Landroid/icu/impl/TextTrieMap;->_ignoreCase:Z -Landroid/icu/impl/TextTrieMap;->_root:Landroid/icu/impl/TextTrieMap$Node; -Landroid/icu/impl/TimeZoneGenericNames$Cache;-><init>()V -Landroid/icu/impl/TimeZoneGenericNames$Cache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -Landroid/icu/impl/TimeZoneGenericNames$Cache;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/impl/TimeZoneGenericNames; -Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;-><init>(Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;Ljava/lang/String;I)V -Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;-><init>(Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;Ljava/lang/String;ILandroid/icu/text/TimeZoneFormat$TimeType;)V -Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->matchLength:I -Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->nameType:Landroid/icu/impl/TimeZoneGenericNames$GenericNameType; -Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->timeType:Landroid/icu/text/TimeZoneFormat$TimeType; -Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo;->tzID:Ljava/lang/String; -Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;-><init>(Ljava/util/EnumSet;)V -Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->getMatches()Ljava/util/Collection; -Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->getMaxMatchLen()I -Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->handlePrefixMatch(ILjava/util/Iterator;)Z -Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->resetResults()V -Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->_matches:Ljava/util/Collection; -Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->_maxMatchLen:I -Landroid/icu/impl/TimeZoneGenericNames$GenericNameSearchHandler;->_types:Ljava/util/EnumSet; -Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;->_fallbackTypeOf:[Ljava/lang/String; -Landroid/icu/impl/TimeZoneGenericNames$NameInfo;-><init>(Ljava/lang/String;Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;)V -Landroid/icu/impl/TimeZoneGenericNames$NameInfo;->type:Landroid/icu/impl/TimeZoneGenericNames$GenericNameType; -Landroid/icu/impl/TimeZoneGenericNames$NameInfo;->tzID:Ljava/lang/String; -Landroid/icu/impl/TimeZoneGenericNames$Pattern;->defaultValue()Ljava/lang/String; -Landroid/icu/impl/TimeZoneGenericNames$Pattern;->key()Ljava/lang/String; -Landroid/icu/impl/TimeZoneGenericNames$Pattern;->_defaultVal:Ljava/lang/String; -Landroid/icu/impl/TimeZoneGenericNames$Pattern;->_key:Ljava/lang/String; -Landroid/icu/impl/TimeZoneGenericNames;-><init>(Landroid/icu/util/ULocale;)V -Landroid/icu/impl/TimeZoneGenericNames;->createGenericMatchInfo(Landroid/icu/text/TimeZoneNames$MatchInfo;)Landroid/icu/impl/TimeZoneGenericNames$GenericMatchInfo; -Landroid/icu/impl/TimeZoneGenericNames;->DST_CHECK_RANGE:J -Landroid/icu/impl/TimeZoneGenericNames;->findLocal(Ljava/lang/String;ILjava/util/EnumSet;)Ljava/util/Collection; -Landroid/icu/impl/TimeZoneGenericNames;->findTimeZoneNames(Ljava/lang/String;ILjava/util/EnumSet;)Ljava/util/Collection; -Landroid/icu/impl/TimeZoneGenericNames;->formatGenericNonLocationName(Landroid/icu/util/TimeZone;Landroid/icu/impl/TimeZoneGenericNames$GenericNameType;J)Ljava/lang/String; -Landroid/icu/impl/TimeZoneGenericNames;->GENERIC_NAMES_CACHE:Landroid/icu/impl/TimeZoneGenericNames$Cache; -Landroid/icu/impl/TimeZoneGenericNames;->GENERIC_NON_LOCATION_TYPES:[Landroid/icu/text/TimeZoneNames$NameType; -Landroid/icu/impl/TimeZoneGenericNames;->getLocaleDisplayNames()Landroid/icu/text/LocaleDisplayNames; -Landroid/icu/impl/TimeZoneGenericNames;->getPartialLocationName(Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Ljava/lang/String; -Landroid/icu/impl/TimeZoneGenericNames;->getTargetRegion()Ljava/lang/String; -Landroid/icu/impl/TimeZoneGenericNames;->init()V -Landroid/icu/impl/TimeZoneGenericNames;->loadStrings(Ljava/lang/String;)V -Landroid/icu/impl/TimeZoneGenericNames;->_frozen:Z -Landroid/icu/impl/TimeZoneGenericNames;->_genericLocationNamesMap:Ljava/util/concurrent/ConcurrentHashMap; -Landroid/icu/impl/TimeZoneGenericNames;->_genericPartialLocationNamesMap:Ljava/util/concurrent/ConcurrentHashMap; -Landroid/icu/impl/TimeZoneGenericNames;->_gnamesTrie:Landroid/icu/impl/TextTrieMap; -Landroid/icu/impl/TimeZoneGenericNames;->_gnamesTrieFullyLoaded:Z -Landroid/icu/impl/TimeZoneGenericNames;->_locale:Landroid/icu/util/ULocale; -Landroid/icu/impl/TimeZoneGenericNames;->_localeDisplayNamesRef:Ljava/lang/ref/WeakReference; -Landroid/icu/impl/TimeZoneGenericNames;->_patternFormatters:[Ljava/text/MessageFormat; -Landroid/icu/impl/TimeZoneGenericNames;->_region:Ljava/lang/String; -Landroid/icu/impl/TimeZoneGenericNames;->_tznames:Landroid/icu/text/TimeZoneNames; -Landroid/icu/impl/Trie$DefaultGetFoldingOffset;-><init>()V -Landroid/icu/impl/Trie2$CharSequenceIterator;->fResults:Landroid/icu/impl/Trie2$CharSequenceValues; -Landroid/icu/impl/Trie2$CharSequenceIterator;->index:I -Landroid/icu/impl/Trie2$CharSequenceIterator;->text:Ljava/lang/CharSequence; -Landroid/icu/impl/Trie2$CharSequenceIterator;->textLength:I -Landroid/icu/impl/Trie2$Trie2Iterator;->doingCodePoints:Z -Landroid/icu/impl/Trie2$Trie2Iterator;->doLeadSurrogates:Z -Landroid/icu/impl/Trie2$Trie2Iterator;->limitCP:I -Landroid/icu/impl/Trie2$Trie2Iterator;->mapper:Landroid/icu/impl/Trie2$ValueMapper; -Landroid/icu/impl/Trie2$Trie2Iterator;->nextStart:I -Landroid/icu/impl/Trie2$Trie2Iterator;->rangeEndLS(C)I -Landroid/icu/impl/Trie2$Trie2Iterator;->returnValue:Landroid/icu/impl/Trie2$Range; -Landroid/icu/impl/Trie2$UTrie2Header;-><init>()V -Landroid/icu/impl/Trie2$UTrie2Header;->dataNullOffset:I -Landroid/icu/impl/Trie2$UTrie2Header;->index2NullOffset:I -Landroid/icu/impl/Trie2$UTrie2Header;->indexLength:I -Landroid/icu/impl/Trie2$UTrie2Header;->options:I -Landroid/icu/impl/Trie2$UTrie2Header;->shiftedDataLength:I -Landroid/icu/impl/Trie2$UTrie2Header;->shiftedHighStart:I -Landroid/icu/impl/Trie2$UTrie2Header;->signature:I -Landroid/icu/impl/Trie2$ValueWidth;->BITS_16:Landroid/icu/impl/Trie2$ValueWidth; -Landroid/icu/impl/Trie2$ValueWidth;->BITS_32:Landroid/icu/impl/Trie2$ValueWidth; -Landroid/icu/impl/Trie2$ValueWidth;->valueOf(Ljava/lang/String;)Landroid/icu/impl/Trie2$ValueWidth; -Landroid/icu/impl/Trie2$ValueWidth;->values()[Landroid/icu/impl/Trie2$ValueWidth; -Landroid/icu/impl/Trie2;->data16:I -Landroid/icu/impl/Trie2;->data32:[I -Landroid/icu/impl/Trie2;->dataLength:I -Landroid/icu/impl/Trie2;->dataNullOffset:I -Landroid/icu/impl/Trie2;->defaultValueMapper:Landroid/icu/impl/Trie2$ValueMapper; -Landroid/icu/impl/Trie2;->errorValue:I -Landroid/icu/impl/Trie2;->fHash:I -Landroid/icu/impl/Trie2;->hashByte(II)I -Landroid/icu/impl/Trie2;->hashInt(II)I -Landroid/icu/impl/Trie2;->hashUChar32(II)I -Landroid/icu/impl/Trie2;->header:Landroid/icu/impl/Trie2$UTrie2Header; -Landroid/icu/impl/Trie2;->highStart:I -Landroid/icu/impl/Trie2;->highValueIndex:I -Landroid/icu/impl/Trie2;->index2NullOffset:I -Landroid/icu/impl/Trie2;->index:[C -Landroid/icu/impl/Trie2;->indexLength:I -Landroid/icu/impl/Trie2;->initHash()I -Landroid/icu/impl/Trie2;->initialValue:I -Landroid/icu/impl/Trie2;->rangeEnd(III)I -Landroid/icu/impl/Trie2;->UNEWTRIE2_INDEX_1_LENGTH:I -Landroid/icu/impl/Trie2;->UNEWTRIE2_INDEX_GAP_LENGTH:I -Landroid/icu/impl/Trie2;->UNEWTRIE2_INDEX_GAP_OFFSET:I -Landroid/icu/impl/Trie2;->UNEWTRIE2_MAX_DATA_LENGTH:I -Landroid/icu/impl/Trie2;->UNEWTRIE2_MAX_INDEX_2_LENGTH:I -Landroid/icu/impl/Trie2;->UTRIE2_BAD_UTF8_DATA_OFFSET:I -Landroid/icu/impl/Trie2;->UTRIE2_CP_PER_INDEX_1_ENTRY:I -Landroid/icu/impl/Trie2;->UTRIE2_DATA_BLOCK_LENGTH:I -Landroid/icu/impl/Trie2;->UTRIE2_DATA_GRANULARITY:I -Landroid/icu/impl/Trie2;->UTRIE2_DATA_MASK:I -Landroid/icu/impl/Trie2;->UTRIE2_DATA_START_OFFSET:I -Landroid/icu/impl/Trie2;->UTRIE2_INDEX_1_OFFSET:I -Landroid/icu/impl/Trie2;->UTRIE2_INDEX_2_BLOCK_LENGTH:I -Landroid/icu/impl/Trie2;->UTRIE2_INDEX_2_BMP_LENGTH:I -Landroid/icu/impl/Trie2;->UTRIE2_INDEX_2_MASK:I -Landroid/icu/impl/Trie2;->UTRIE2_INDEX_2_OFFSET:I -Landroid/icu/impl/Trie2;->UTRIE2_INDEX_SHIFT:I -Landroid/icu/impl/Trie2;->UTRIE2_LSCP_INDEX_2_LENGTH:I -Landroid/icu/impl/Trie2;->UTRIE2_LSCP_INDEX_2_OFFSET:I -Landroid/icu/impl/Trie2;->UTRIE2_MAX_INDEX_1_LENGTH:I -Landroid/icu/impl/Trie2;->UTRIE2_OMITTED_BMP_INDEX_1_LENGTH:I -Landroid/icu/impl/Trie2;->UTRIE2_OPTIONS_VALUE_BITS_MASK:I -Landroid/icu/impl/Trie2;->UTRIE2_SHIFT_1:I -Landroid/icu/impl/Trie2;->UTRIE2_SHIFT_1_2:I -Landroid/icu/impl/Trie2;->UTRIE2_SHIFT_2:I -Landroid/icu/impl/Trie2;->UTRIE2_UTF8_2B_INDEX_2_LENGTH:I -Landroid/icu/impl/Trie2;->UTRIE2_UTF8_2B_INDEX_2_OFFSET:I -Landroid/icu/impl/Trie2Writable;->allocDataBlock(I)I -Landroid/icu/impl/Trie2Writable;->allocIndex2Block()I -Landroid/icu/impl/Trie2Writable;->compactData()V -Landroid/icu/impl/Trie2Writable;->compactIndex2()V -Landroid/icu/impl/Trie2Writable;->compactTrie()V -Landroid/icu/impl/Trie2Writable;->data:[I -Landroid/icu/impl/Trie2Writable;->dataCapacity:I -Landroid/icu/impl/Trie2Writable;->equal_int([IIII)Z -Landroid/icu/impl/Trie2Writable;->fillBlock(IIIIIZ)V -Landroid/icu/impl/Trie2Writable;->findHighStart(I)I -Landroid/icu/impl/Trie2Writable;->findSameDataBlock(III)I -Landroid/icu/impl/Trie2Writable;->findSameIndex2Block(II)I -Landroid/icu/impl/Trie2Writable;->firstFreeBlock:I -Landroid/icu/impl/Trie2Writable;->freeze(Landroid/icu/impl/Trie2;Landroid/icu/impl/Trie2$ValueWidth;)V -Landroid/icu/impl/Trie2Writable;->get(IZ)I -Landroid/icu/impl/Trie2Writable;->getDataBlock(IZ)I -Landroid/icu/impl/Trie2Writable;->getIndex2Block(IZ)I -Landroid/icu/impl/Trie2Writable;->index1:[I -Landroid/icu/impl/Trie2Writable;->index2:[I -Landroid/icu/impl/Trie2Writable;->index2Length:I -Landroid/icu/impl/Trie2Writable;->index2NullOffset:I -Landroid/icu/impl/Trie2Writable;->init(II)V -Landroid/icu/impl/Trie2Writable;->isCompacted:Z -Landroid/icu/impl/Trie2Writable;->isInNullBlock(IZ)Z -Landroid/icu/impl/Trie2Writable;->isWritableBlock(I)Z -Landroid/icu/impl/Trie2Writable;->map:[I -Landroid/icu/impl/Trie2Writable;->releaseDataBlock(I)V -Landroid/icu/impl/Trie2Writable;->set(IZI)Landroid/icu/impl/Trie2Writable; -Landroid/icu/impl/Trie2Writable;->setIndex2Entry(II)V -Landroid/icu/impl/Trie2Writable;->uncompact()V -Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_DATA_0800_OFFSET:I -Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_DATA_NULL_OFFSET:I -Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_DATA_START_OFFSET:I -Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_INDEX_2_NULL_OFFSET:I -Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_INDEX_2_START_OFFSET:I -Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_INITIAL_DATA_LENGTH:I -Landroid/icu/impl/Trie2Writable;->UNEWTRIE2_MEDIUM_DATA_LENGTH:I -Landroid/icu/impl/Trie2Writable;->UTRIE2_DEBUG:Z -Landroid/icu/impl/Trie2Writable;->UTRIE2_MAX_DATA_LENGTH:I -Landroid/icu/impl/Trie2Writable;->UTRIE2_MAX_INDEX_LENGTH:I -Landroid/icu/impl/Trie2Writable;->writeBlock(II)V -Landroid/icu/impl/Trie2_16;-><init>()V -Landroid/icu/impl/Trie2_16;->rangeEnd(III)I -Landroid/icu/impl/Trie2_32;-><init>()V -Landroid/icu/impl/Trie2_32;->rangeEnd(III)I -Landroid/icu/impl/Trie;->checkHeader(I)Z -Landroid/icu/impl/Trie;->HEADER_OPTIONS_SHIFT_MASK_:I -Landroid/icu/impl/Trie;->m_isLatin1Linear_:Z -Landroid/icu/impl/Trie;->m_options_:I -Landroid/icu/impl/UBiDiProps$IsAcceptable;-><init>()V -Landroid/icu/impl/UBiDiProps;-><init>()V -Landroid/icu/impl/UBiDiProps;->BIDI_CONTROL_SHIFT:I -Landroid/icu/impl/UBiDiProps;->BPT_MASK:I -Landroid/icu/impl/UBiDiProps;->BPT_SHIFT:I -Landroid/icu/impl/UBiDiProps;->CLASS_MASK:I -Landroid/icu/impl/UBiDiProps;->DATA_FILE_NAME:Ljava/lang/String; -Landroid/icu/impl/UBiDiProps;->DATA_NAME:Ljava/lang/String; -Landroid/icu/impl/UBiDiProps;->DATA_TYPE:Ljava/lang/String; -Landroid/icu/impl/UBiDiProps;->ESC_MIRROR_DELTA:I -Landroid/icu/impl/UBiDiProps;->FMT:I -Landroid/icu/impl/UBiDiProps;->getClassFromProps(I)I -Landroid/icu/impl/UBiDiProps;->getFlagFromProps(II)Z -Landroid/icu/impl/UBiDiProps;->getMirror(II)I -Landroid/icu/impl/UBiDiProps;->getMirrorCodePoint(I)I -Landroid/icu/impl/UBiDiProps;->getMirrorDeltaFromProps(I)I -Landroid/icu/impl/UBiDiProps;->getMirrorIndex(I)I -Landroid/icu/impl/UBiDiProps;->indexes:[I -Landroid/icu/impl/UBiDiProps;->IS_MIRRORED_SHIFT:I -Landroid/icu/impl/UBiDiProps;->IX_JG_LIMIT2:I -Landroid/icu/impl/UBiDiProps;->IX_JG_LIMIT:I -Landroid/icu/impl/UBiDiProps;->IX_JG_START2:I -Landroid/icu/impl/UBiDiProps;->IX_JG_START:I -Landroid/icu/impl/UBiDiProps;->IX_MAX_VALUES:I -Landroid/icu/impl/UBiDiProps;->IX_MIRROR_LENGTH:I -Landroid/icu/impl/UBiDiProps;->IX_TOP:I -Landroid/icu/impl/UBiDiProps;->IX_TRIE_SIZE:I -Landroid/icu/impl/UBiDiProps;->jgArray2:[B -Landroid/icu/impl/UBiDiProps;->jgArray:[B -Landroid/icu/impl/UBiDiProps;->JOIN_CONTROL_SHIFT:I -Landroid/icu/impl/UBiDiProps;->JT_MASK:I -Landroid/icu/impl/UBiDiProps;->JT_SHIFT:I -Landroid/icu/impl/UBiDiProps;->MAX_JG_MASK:I -Landroid/icu/impl/UBiDiProps;->MAX_JG_SHIFT:I -Landroid/icu/impl/UBiDiProps;->mirrors:[I -Landroid/icu/impl/UBiDiProps;->MIRROR_DELTA_SHIFT:I -Landroid/icu/impl/UBiDiProps;->MIRROR_INDEX_SHIFT:I -Landroid/icu/impl/UBiDiProps;->readData(Ljava/nio/ByteBuffer;)V -Landroid/icu/impl/UBiDiProps;->trie:Landroid/icu/impl/Trie2_16; -Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;-><init>()V -Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->addOffset(I)V -Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->addOffsetAndCount(II)V -Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->clear()V -Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->containsOffset(I)Z -Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->hasCountAtOffset(II)Z -Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->isEmpty()Z -Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->length:I -Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->list:[I -Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->popMinimum(Landroid/icu/util/OutputInt;)I -Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->setMaxLength(I)V -Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->shift(I)V -Landroid/icu/impl/UnicodeSetStringSpan$OffsetList;->start:I -Landroid/icu/impl/UnicodeSetStringSpan;->addToSpanNotSet(I)V -Landroid/icu/impl/UnicodeSetStringSpan;->all:Z -Landroid/icu/impl/UnicodeSetStringSpan;->ALL_CP_CONTAINED:S -Landroid/icu/impl/UnicodeSetStringSpan;->LONG_SPAN:S -Landroid/icu/impl/UnicodeSetStringSpan;->makeSpanLengthByte(I)S -Landroid/icu/impl/UnicodeSetStringSpan;->matches16(Ljava/lang/CharSequence;ILjava/lang/String;I)Z -Landroid/icu/impl/UnicodeSetStringSpan;->matches16CPB(Ljava/lang/CharSequence;IILjava/lang/String;I)Z -Landroid/icu/impl/UnicodeSetStringSpan;->maxLength16:I -Landroid/icu/impl/UnicodeSetStringSpan;->offsets:Landroid/icu/impl/UnicodeSetStringSpan$OffsetList; -Landroid/icu/impl/UnicodeSetStringSpan;->someRelevant:Z -Landroid/icu/impl/UnicodeSetStringSpan;->spanContainedAndCount(Ljava/lang/CharSequence;ILandroid/icu/util/OutputInt;)I -Landroid/icu/impl/UnicodeSetStringSpan;->spanLengths:[S -Landroid/icu/impl/UnicodeSetStringSpan;->spanNot(Ljava/lang/CharSequence;ILandroid/icu/util/OutputInt;)I -Landroid/icu/impl/UnicodeSetStringSpan;->spanNotBack(Ljava/lang/CharSequence;I)I -Landroid/icu/impl/UnicodeSetStringSpan;->spanNotSet:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/UnicodeSetStringSpan;->spanOne(Landroid/icu/text/UnicodeSet;Ljava/lang/CharSequence;II)I -Landroid/icu/impl/UnicodeSetStringSpan;->spanOneBack(Landroid/icu/text/UnicodeSet;Ljava/lang/CharSequence;I)I -Landroid/icu/impl/UnicodeSetStringSpan;->spanSet:Landroid/icu/text/UnicodeSet; -Landroid/icu/impl/UnicodeSetStringSpan;->spanWithStrings(Ljava/lang/CharSequence;IILandroid/icu/text/UnicodeSet$SpanCondition;)I -Landroid/icu/impl/UnicodeSetStringSpan;->strings:Ljava/util/ArrayList; -Landroid/icu/impl/UResource$Key;-><init>([BII)V -Landroid/icu/impl/UResource$Key;->bytes:[B -Landroid/icu/impl/UResource$Key;->internalSubString(II)Ljava/lang/String; -Landroid/icu/impl/UResource$Key;->length:I -Landroid/icu/impl/UResource$Key;->offset:I -Landroid/icu/impl/UResource$Key;->regionMatches(ILjava/lang/CharSequence;I)Z -Landroid/icu/impl/UResource$Key;->regionMatches([BII)Z -Landroid/icu/impl/UResource$Key;->s:Ljava/lang/String; -Landroid/icu/lang/CharSequences;-><init>()V -Landroid/icu/lang/CharSequences;->codePointLength(Ljava/lang/CharSequence;)I -Landroid/icu/lang/CharSequences;->codePoints(Ljava/lang/CharSequence;)[I -Landroid/icu/lang/CharSequences;->compare(ILjava/lang/CharSequence;)I -Landroid/icu/lang/CharSequences;->compare(Ljava/lang/CharSequence;I)I -Landroid/icu/lang/CharSequences;->compare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I -Landroid/icu/lang/CharSequences;->equals(ILjava/lang/CharSequence;)Z -Landroid/icu/lang/CharSequences;->equals(Ljava/lang/CharSequence;I)Z -Landroid/icu/lang/CharSequences;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z -Landroid/icu/lang/CharSequences;->equalsChars(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z -Landroid/icu/lang/CharSequences;->getSingleCodePoint(Ljava/lang/CharSequence;)I -Landroid/icu/lang/CharSequences;->indexOf(Ljava/lang/CharSequence;I)I -Landroid/icu/lang/CharSequences;->matchAfter(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I -Landroid/icu/lang/CharSequences;->onCharacterBoundary(Ljava/lang/CharSequence;I)Z -Landroid/icu/lang/UCharacter$BidiPairedBracketType;->COUNT:I -Landroid/icu/lang/UCharacter$DecompositionType;->COUNT:I -Landroid/icu/lang/UCharacter$DummyValueIterator;-><init>()V -Landroid/icu/lang/UCharacter$EastAsianWidth;->COUNT:I -Landroid/icu/lang/UCharacter$GraphemeClusterBreak;->COUNT:I -Landroid/icu/lang/UCharacter$HangulSyllableType;->COUNT:I -Landroid/icu/lang/UCharacter$JoiningGroup;->COUNT:I -Landroid/icu/lang/UCharacter$JoiningType;->COUNT:I -Landroid/icu/lang/UCharacter$LineBreak;->COUNT:I -Landroid/icu/lang/UCharacter$NumericType;->COUNT:I -Landroid/icu/lang/UCharacter$SentenceBreak;->COUNT:I -Landroid/icu/lang/UCharacter$UCharacterTypeIterator$MaskType;-><init>()V -Landroid/icu/lang/UCharacter$UCharacterTypeIterator;-><init>()V -Landroid/icu/lang/UCharacter$UCharacterTypeIterator;->MASK_TYPE:Landroid/icu/lang/UCharacter$UCharacterTypeIterator$MaskType; -Landroid/icu/lang/UCharacter$UCharacterTypeIterator;->range:Landroid/icu/impl/Trie2$Range; -Landroid/icu/lang/UCharacter$UCharacterTypeIterator;->trieIterator:Ljava/util/Iterator; -Landroid/icu/lang/UCharacter$UnicodeBlock;-><init>(Ljava/lang/String;I)V -Landroid/icu/lang/UCharacter$UnicodeBlock;->BLOCKS_:[Landroid/icu/lang/UCharacter$UnicodeBlock; -Landroid/icu/lang/UCharacter$UnicodeBlock;->COUNT:I -Landroid/icu/lang/UCharacter$UnicodeBlock;->mref:Ljava/lang/ref/SoftReference; -Landroid/icu/lang/UCharacter$UnicodeBlock;->m_id_:I -Landroid/icu/lang/UCharacter$UnicodeBlock;->trimBlockName(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/lang/UCharacter$WordBreak;->COUNT:I -Landroid/icu/lang/UCharacter;-><init>()V -Landroid/icu/lang/UCharacter;->APPLICATION_PROGRAM_COMMAND_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_EIGHT_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_FIVE_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_FOUR_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_HUNDRED_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_NINE_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_ONE_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_SEVEN_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_SIX_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_TEN_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_THOUSAND_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_THREE_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_TWO_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_COMPLEX_ZERO_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_EIGHTH_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_FIFTH_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_FIRST_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_FOURTH_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_HUNDRED_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_HUNDRED_MILLION_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_NINETH_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_SECOND_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_SEVENTH_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_SIXTH_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_TEN_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_TEN_THOUSAND_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_THIRD_:I -Landroid/icu/lang/UCharacter;->CJK_IDEOGRAPH_THOUSAND_:I -Landroid/icu/lang/UCharacter;->DELETE_:I -Landroid/icu/lang/UCharacter;->FIGURE_SPACE_:I -Landroid/icu/lang/UCharacter;->getCaseLocale(Landroid/icu/util/ULocale;)I -Landroid/icu/lang/UCharacter;->getCaseLocale(Ljava/util/Locale;)I -Landroid/icu/lang/UCharacter;->getCharFromName1_0(Ljava/lang/String;)I -Landroid/icu/lang/UCharacter;->getDefaultCaseLocale()I -Landroid/icu/lang/UCharacter;->getISOComment(I)Ljava/lang/String; -Landroid/icu/lang/UCharacter;->getName1_0(I)Ljava/lang/String; -Landroid/icu/lang/UCharacter;->getName1_0Iterator()Landroid/icu/util/ValueIterator; -Landroid/icu/lang/UCharacter;->getPropertyValueEnumNoThrow(ILjava/lang/CharSequence;)I -Landroid/icu/lang/UCharacter;->getStringPropertyValue(III)Ljava/lang/String; -Landroid/icu/lang/UCharacter;->IDEOGRAPHIC_NUMBER_ZERO_:I -Landroid/icu/lang/UCharacter;->isJavaLetter(I)Z -Landroid/icu/lang/UCharacter;->isJavaLetterOrDigit(I)Z -Landroid/icu/lang/UCharacter;->isSpace(I)Z -Landroid/icu/lang/UCharacter;->LAST_CHAR_MASK_:I -Landroid/icu/lang/UCharacter;->NARROW_NO_BREAK_SPACE_:I -Landroid/icu/lang/UCharacter;->NO_BREAK_SPACE_:I -Landroid/icu/lang/UCharacter;->toTitleFirst(Landroid/icu/util/ULocale;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/lang/UCharacter;->TO_TITLE_WHOLE_STRING_NO_LOWERCASE:Landroid/icu/text/CaseMap$Title; -Landroid/icu/lang/UCharacter;->UNIT_SEPARATOR_:I -Landroid/icu/lang/UCharacterCategory;-><init>()V -Landroid/icu/lang/UCharacterDirection;-><init>()V -Landroid/icu/lang/UCharacterEnums$ECharacterCategory;->CHAR_CATEGORY_COUNT:B -Landroid/icu/lang/UCharacterEnums$ECharacterDirection;->CHAR_DIRECTION_COUNT:I -Landroid/icu/lang/UCharacterEnums;-><init>()V -Landroid/icu/lang/UProperty$NameChoice;->COUNT:I -Landroid/icu/lang/UProperty;->BINARY_LIMIT:I -Landroid/icu/lang/UProperty;->DOUBLE_LIMIT:I -Landroid/icu/lang/UProperty;->INT_LIMIT:I -Landroid/icu/lang/UProperty;->ISO_COMMENT:I -Landroid/icu/lang/UProperty;->MASK_LIMIT:I -Landroid/icu/lang/UProperty;->OTHER_PROPERTY_LIMIT:I -Landroid/icu/lang/UProperty;->STRING_LIMIT:I -Landroid/icu/lang/UProperty;->UNDEFINED:I -Landroid/icu/lang/UProperty;->UNICODE_1_NAME:I -Landroid/icu/lang/UScript$ScriptMetadata;-><init>()V -Landroid/icu/lang/UScript$ScriptMetadata;->CASED:I -Landroid/icu/lang/UScript$ScriptMetadata;->EXCLUSION:I -Landroid/icu/lang/UScript$ScriptMetadata;->getScriptProps(I)I -Landroid/icu/lang/UScript$ScriptMetadata;->LB_LETTERS:I -Landroid/icu/lang/UScript$ScriptMetadata;->LIMITED_USE:I -Landroid/icu/lang/UScript$ScriptMetadata;->RECOMMENDED:I -Landroid/icu/lang/UScript$ScriptMetadata;->RTL:I -Landroid/icu/lang/UScript$ScriptMetadata;->SCRIPT_PROPS:[I -Landroid/icu/lang/UScript$ScriptMetadata;->UNKNOWN:I -Landroid/icu/lang/UScript;-><init>()V -Landroid/icu/lang/UScript;->CODE_LIMIT:I -Landroid/icu/lang/UScript;->DUPLOYAN_SHORTAND:I -Landroid/icu/lang/UScript;->findCodeFromLocale(Landroid/icu/util/ULocale;)[I -Landroid/icu/lang/UScript;->getCodesFromLocale(Landroid/icu/util/ULocale;)[I -Landroid/icu/lang/UScript;->usageValues:[Landroid/icu/lang/UScript$ScriptUsage; -Landroid/icu/lang/UScriptRun$ParenStackEntry;-><init>(II)V -Landroid/icu/lang/UScriptRun$ParenStackEntry;->pairIndex:I -Landroid/icu/lang/UScriptRun$ParenStackEntry;->scriptCode:I -Landroid/icu/lang/UScriptRun;-><init>()V -Landroid/icu/lang/UScriptRun;-><init>(Ljava/lang/String;)V -Landroid/icu/lang/UScriptRun;-><init>(Ljava/lang/String;II)V -Landroid/icu/lang/UScriptRun;-><init>([C)V -Landroid/icu/lang/UScriptRun;-><init>([CII)V -Landroid/icu/lang/UScriptRun;->dec(I)I -Landroid/icu/lang/UScriptRun;->dec(II)I -Landroid/icu/lang/UScriptRun;->emptyCharArray:[C -Landroid/icu/lang/UScriptRun;->fixup(I)V -Landroid/icu/lang/UScriptRun;->fixupCount:I -Landroid/icu/lang/UScriptRun;->getPairIndex(I)I -Landroid/icu/lang/UScriptRun;->getScriptCode()I -Landroid/icu/lang/UScriptRun;->getScriptLimit()I -Landroid/icu/lang/UScriptRun;->getScriptStart()I -Landroid/icu/lang/UScriptRun;->highBit(I)B -Landroid/icu/lang/UScriptRun;->inc(I)I -Landroid/icu/lang/UScriptRun;->inc(II)I -Landroid/icu/lang/UScriptRun;->limitInc(I)I -Landroid/icu/lang/UScriptRun;->mod(I)I -Landroid/icu/lang/UScriptRun;->next()Z -Landroid/icu/lang/UScriptRun;->pairedCharExtra:I -Landroid/icu/lang/UScriptRun;->pairedCharPower:I -Landroid/icu/lang/UScriptRun;->pairedChars:[I -Landroid/icu/lang/UScriptRun;->parenSP:I -Landroid/icu/lang/UScriptRun;->parenStack:[Landroid/icu/lang/UScriptRun$ParenStackEntry; -Landroid/icu/lang/UScriptRun;->PAREN_STACK_DEPTH:I -Landroid/icu/lang/UScriptRun;->pop()V -Landroid/icu/lang/UScriptRun;->push(II)V -Landroid/icu/lang/UScriptRun;->pushCount:I -Landroid/icu/lang/UScriptRun;->reset()V -Landroid/icu/lang/UScriptRun;->reset(II)V -Landroid/icu/lang/UScriptRun;->reset(Ljava/lang/String;)V -Landroid/icu/lang/UScriptRun;->reset(Ljava/lang/String;II)V -Landroid/icu/lang/UScriptRun;->reset([C)V -Landroid/icu/lang/UScriptRun;->reset([CII)V -Landroid/icu/lang/UScriptRun;->sameScript(II)Z -Landroid/icu/lang/UScriptRun;->scriptCode:I -Landroid/icu/lang/UScriptRun;->scriptLimit:I -Landroid/icu/lang/UScriptRun;->scriptStart:I -Landroid/icu/lang/UScriptRun;->stackIsEmpty()Z -Landroid/icu/lang/UScriptRun;->stackIsNotEmpty()Z -Landroid/icu/lang/UScriptRun;->syncFixup()V -Landroid/icu/lang/UScriptRun;->text:[C -Landroid/icu/lang/UScriptRun;->textIndex:I -Landroid/icu/lang/UScriptRun;->textLimit:I -Landroid/icu/lang/UScriptRun;->textStart:I -Landroid/icu/lang/UScriptRun;->top()Landroid/icu/lang/UScriptRun$ParenStackEntry; -Landroid/icu/math/BigDecimal;-><init>()V -Landroid/icu/math/BigDecimal;->allzero([BI)Z -Landroid/icu/math/BigDecimal;->bad([C)V -Landroid/icu/math/BigDecimal;->badarg(Ljava/lang/String;ILjava/lang/String;)V -Landroid/icu/math/BigDecimal;->byteaddsub([BI[BIIZ)[B -Landroid/icu/math/BigDecimal;->bytecar:[B -Landroid/icu/math/BigDecimal;->bytedig:[B -Landroid/icu/math/BigDecimal;->checkdigits(Landroid/icu/math/BigDecimal;I)V -Landroid/icu/math/BigDecimal;->clone(Landroid/icu/math/BigDecimal;)Landroid/icu/math/BigDecimal; -Landroid/icu/math/BigDecimal;->diginit()[B -Landroid/icu/math/BigDecimal;->dodivide(CLandroid/icu/math/BigDecimal;Landroid/icu/math/MathContext;I)Landroid/icu/math/BigDecimal; -Landroid/icu/math/BigDecimal;->exp:I -Landroid/icu/math/BigDecimal;->extend([BI)[B -Landroid/icu/math/BigDecimal;->finish(Landroid/icu/math/MathContext;Z)Landroid/icu/math/BigDecimal; -Landroid/icu/math/BigDecimal;->form:B -Landroid/icu/math/BigDecimal;->ind:B -Landroid/icu/math/BigDecimal;->intcheck(II)I -Landroid/icu/math/BigDecimal;->isneg:B -Landroid/icu/math/BigDecimal;->ispos:B -Landroid/icu/math/BigDecimal;->iszero:B -Landroid/icu/math/BigDecimal;->layout()[C -Landroid/icu/math/BigDecimal;->mant:[B -Landroid/icu/math/BigDecimal;->MaxArg:I -Landroid/icu/math/BigDecimal;->MaxExp:I -Landroid/icu/math/BigDecimal;->MinArg:I -Landroid/icu/math/BigDecimal;->MinExp:I -Landroid/icu/math/BigDecimal;->plainMC:Landroid/icu/math/MathContext; -Landroid/icu/math/BigDecimal;->round(II)Landroid/icu/math/BigDecimal; -Landroid/icu/math/BigDecimal;->round(Landroid/icu/math/MathContext;)Landroid/icu/math/BigDecimal; -Landroid/icu/math/MathContext;->DEFAULT_DIGITS:I -Landroid/icu/math/MathContext;->DEFAULT_FORM:I -Landroid/icu/math/MathContext;->DEFAULT_LOSTDIGITS:Z -Landroid/icu/math/MathContext;->DEFAULT_ROUNDINGMODE:I -Landroid/icu/math/MathContext;->digits:I -Landroid/icu/math/MathContext;->form:I -Landroid/icu/math/MathContext;->isValidRound(I)Z -Landroid/icu/math/MathContext;->lostDigits:Z -Landroid/icu/math/MathContext;->MAX_DIGITS:I -Landroid/icu/math/MathContext;->MIN_DIGITS:I -Landroid/icu/math/MathContext;->roundingMode:I -Landroid/icu/math/MathContext;->ROUNDS:[I -Landroid/icu/math/MathContext;->ROUNDWORDS:[Ljava/lang/String; -Landroid/icu/text/AlphabeticIndex$Bucket;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;)V -Landroid/icu/text/AlphabeticIndex$Bucket;->displayBucket:Landroid/icu/text/AlphabeticIndex$Bucket; -Landroid/icu/text/AlphabeticIndex$Bucket;->displayIndex:I -Landroid/icu/text/AlphabeticIndex$Bucket;->label:Ljava/lang/String; -Landroid/icu/text/AlphabeticIndex$Bucket;->labelType:Landroid/icu/text/AlphabeticIndex$Bucket$LabelType; -Landroid/icu/text/AlphabeticIndex$Bucket;->lowerBoundary:Ljava/lang/String; -Landroid/icu/text/AlphabeticIndex$Bucket;->records:Ljava/util/List; -Landroid/icu/text/AlphabeticIndex$BucketList;-><init>(Ljava/util/ArrayList;Ljava/util/ArrayList;)V -Landroid/icu/text/AlphabeticIndex$BucketList;->bucketList:Ljava/util/ArrayList; -Landroid/icu/text/AlphabeticIndex$BucketList;->fullIterator()Ljava/util/Iterator; -Landroid/icu/text/AlphabeticIndex$BucketList;->getBucketCount()I -Landroid/icu/text/AlphabeticIndex$BucketList;->getBucketIndex(Ljava/lang/CharSequence;Landroid/icu/text/Collator;)I -Landroid/icu/text/AlphabeticIndex$BucketList;->immutableVisibleList:Ljava/util/List; -Landroid/icu/text/AlphabeticIndex$ImmutableIndex;-><init>(Landroid/icu/text/AlphabeticIndex$BucketList;Landroid/icu/text/Collator;)V -Landroid/icu/text/AlphabeticIndex$ImmutableIndex;->buckets:Landroid/icu/text/AlphabeticIndex$BucketList; -Landroid/icu/text/AlphabeticIndex$ImmutableIndex;->collatorPrimaryOnly:Landroid/icu/text/Collator; -Landroid/icu/text/AlphabeticIndex$Record;-><init>(Ljava/lang/CharSequence;Ljava/lang/Object;)V -Landroid/icu/text/AlphabeticIndex$Record;->data:Ljava/lang/Object; -Landroid/icu/text/AlphabeticIndex$Record;->name:Ljava/lang/CharSequence; -Landroid/icu/text/AlphabeticIndex;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/RuleBasedCollator;)V -Landroid/icu/text/AlphabeticIndex;->addChineseIndexCharacters()Z -Landroid/icu/text/AlphabeticIndex;->addIndexExemplars(Landroid/icu/util/ULocale;)V -Landroid/icu/text/AlphabeticIndex;->BASE:Ljava/lang/String; -Landroid/icu/text/AlphabeticIndex;->binaryCmp:Ljava/util/Comparator; -Landroid/icu/text/AlphabeticIndex;->buckets:Landroid/icu/text/AlphabeticIndex$BucketList; -Landroid/icu/text/AlphabeticIndex;->CGJ:C -Landroid/icu/text/AlphabeticIndex;->collatorExternal:Landroid/icu/text/RuleBasedCollator; -Landroid/icu/text/AlphabeticIndex;->collatorOriginal:Landroid/icu/text/RuleBasedCollator; -Landroid/icu/text/AlphabeticIndex;->collatorPrimaryOnly:Landroid/icu/text/RuleBasedCollator; -Landroid/icu/text/AlphabeticIndex;->createBucketList()Landroid/icu/text/AlphabeticIndex$BucketList; -Landroid/icu/text/AlphabeticIndex;->firstCharsInScripts:Ljava/util/List; -Landroid/icu/text/AlphabeticIndex;->fixLabel(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/AlphabeticIndex;->GC_CN_MASK:I -Landroid/icu/text/AlphabeticIndex;->GC_LL_MASK:I -Landroid/icu/text/AlphabeticIndex;->GC_LM_MASK:I -Landroid/icu/text/AlphabeticIndex;->GC_LO_MASK:I -Landroid/icu/text/AlphabeticIndex;->GC_LT_MASK:I -Landroid/icu/text/AlphabeticIndex;->GC_LU_MASK:I -Landroid/icu/text/AlphabeticIndex;->GC_L_MASK:I -Landroid/icu/text/AlphabeticIndex;->getFirstCharactersInScripts()Ljava/util/List; -Landroid/icu/text/AlphabeticIndex;->hasMultiplePrimaryWeights(Landroid/icu/text/RuleBasedCollator;JLjava/lang/String;)Z -Landroid/icu/text/AlphabeticIndex;->inflowLabel:Ljava/lang/String; -Landroid/icu/text/AlphabeticIndex;->initBuckets()V -Landroid/icu/text/AlphabeticIndex;->initialLabels:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/AlphabeticIndex;->initLabels()Ljava/util/List; -Landroid/icu/text/AlphabeticIndex;->inputList:Ljava/util/List; -Landroid/icu/text/AlphabeticIndex;->isOneLabelBetterThanOther(Landroid/icu/text/Normalizer2;Ljava/lang/String;Ljava/lang/String;)Z -Landroid/icu/text/AlphabeticIndex;->maxLabelCount:I -Landroid/icu/text/AlphabeticIndex;->overflowLabel:Ljava/lang/String; -Landroid/icu/text/AlphabeticIndex;->recordComparator:Ljava/util/Comparator; -Landroid/icu/text/AlphabeticIndex;->separated(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/AlphabeticIndex;->underflowLabel:Ljava/lang/String; -Landroid/icu/text/ArabicShaping;->ALEFTYPE:I -Landroid/icu/text/ArabicShaping;->araLink:[I -Landroid/icu/text/ArabicShaping;->calculateSize([CII)I -Landroid/icu/text/ArabicShaping;->changeLamAlef(C)C -Landroid/icu/text/ArabicShaping;->convertFEto06:[I -Landroid/icu/text/ArabicShaping;->convertNormalizedLamAlef:[C -Landroid/icu/text/ArabicShaping;->countSpacesLeft([CII)I -Landroid/icu/text/ArabicShaping;->countSpacesRight([CII)I -Landroid/icu/text/ArabicShaping;->countSpaceSub([CIC)I -Landroid/icu/text/ArabicShaping;->deshapeNormalize([CII)I -Landroid/icu/text/ArabicShaping;->deShapeUnicode([CIII)I -Landroid/icu/text/ArabicShaping;->DESHAPE_MODE:I -Landroid/icu/text/ArabicShaping;->DIGITS_AN2EN:I -Landroid/icu/text/ArabicShaping;->DIGITS_EN2AN:I -Landroid/icu/text/ArabicShaping;->DIGITS_EN2AN_INIT_AL:I -Landroid/icu/text/ArabicShaping;->DIGITS_EN2AN_INIT_LR:I -Landroid/icu/text/ArabicShaping;->DIGITS_MASK:I -Landroid/icu/text/ArabicShaping;->DIGITS_NOOP:I -Landroid/icu/text/ArabicShaping;->DIGIT_TYPE_AN:I -Landroid/icu/text/ArabicShaping;->DIGIT_TYPE_AN_EXTENDED:I -Landroid/icu/text/ArabicShaping;->DIGIT_TYPE_MASK:I -Landroid/icu/text/ArabicShaping;->expandCompositChar([CIIII)I -Landroid/icu/text/ArabicShaping;->expandCompositCharAtBegin([CIII)Z -Landroid/icu/text/ArabicShaping;->expandCompositCharAtEnd([CIII)Z -Landroid/icu/text/ArabicShaping;->expandCompositCharAtNear([CIIIII)Z -Landroid/icu/text/ArabicShaping;->flipArray([CIII)I -Landroid/icu/text/ArabicShaping;->getLink(C)I -Landroid/icu/text/ArabicShaping;->HAMZA06_CHAR:C -Landroid/icu/text/ArabicShaping;->HAMZAFE_CHAR:C -Landroid/icu/text/ArabicShaping;->handleGeneratedSpaces([CII)I -Landroid/icu/text/ArabicShaping;->handleTashkeelWithTatweel([CI)I -Landroid/icu/text/ArabicShaping;->internalShape([CII[CII)I -Landroid/icu/text/ArabicShaping;->invertBuffer([CII)V -Landroid/icu/text/ArabicShaping;->IRRELEVANT:I -Landroid/icu/text/ArabicShaping;->irrelevantPos:[I -Landroid/icu/text/ArabicShaping;->isAlefChar(C)Z -Landroid/icu/text/ArabicShaping;->isIsolatedTashkeelChar(C)I -Landroid/icu/text/ArabicShaping;->isLamAlefChar(C)Z -Landroid/icu/text/ArabicShaping;->isLogical:Z -Landroid/icu/text/ArabicShaping;->isNormalizedLamAlefChar(C)Z -Landroid/icu/text/ArabicShaping;->isSeenFamilyChar(C)I -Landroid/icu/text/ArabicShaping;->isTashkeelChar(C)Z -Landroid/icu/text/ArabicShaping;->isTashkeelCharFE(C)Z -Landroid/icu/text/ArabicShaping;->isTashkeelOnTatweelChar(C)I -Landroid/icu/text/ArabicShaping;->LAMALEF_AUTO:I -Landroid/icu/text/ArabicShaping;->LAMALEF_BEGIN:I -Landroid/icu/text/ArabicShaping;->LAMALEF_END:I -Landroid/icu/text/ArabicShaping;->LAMALEF_MASK:I -Landroid/icu/text/ArabicShaping;->LAMALEF_NEAR:I -Landroid/icu/text/ArabicShaping;->LAMALEF_RESIZE:I -Landroid/icu/text/ArabicShaping;->LAMALEF_SPACE_SUB:C -Landroid/icu/text/ArabicShaping;->LAMTYPE:I -Landroid/icu/text/ArabicShaping;->LAM_CHAR:C -Landroid/icu/text/ArabicShaping;->LENGTH_FIXED_SPACES_AT_BEGINNING:I -Landroid/icu/text/ArabicShaping;->LENGTH_FIXED_SPACES_AT_END:I -Landroid/icu/text/ArabicShaping;->LENGTH_FIXED_SPACES_NEAR:I -Landroid/icu/text/ArabicShaping;->LENGTH_GROW_SHRINK:I -Landroid/icu/text/ArabicShaping;->LENGTH_MASK:I -Landroid/icu/text/ArabicShaping;->LETTERS_MASK:I -Landroid/icu/text/ArabicShaping;->LETTERS_NOOP:I -Landroid/icu/text/ArabicShaping;->LETTERS_SHAPE:I -Landroid/icu/text/ArabicShaping;->LETTERS_SHAPE_TASHKEEL_ISOLATED:I -Landroid/icu/text/ArabicShaping;->LETTERS_UNSHAPE:I -Landroid/icu/text/ArabicShaping;->LINKL:I -Landroid/icu/text/ArabicShaping;->LINKR:I -Landroid/icu/text/ArabicShaping;->LINK_MASK:I -Landroid/icu/text/ArabicShaping;->NEW_TAIL_CHAR:C -Landroid/icu/text/ArabicShaping;->normalize([CII)I -Landroid/icu/text/ArabicShaping;->OLD_TAIL_CHAR:C -Landroid/icu/text/ArabicShaping;->options:I -Landroid/icu/text/ArabicShaping;->presLink:[I -Landroid/icu/text/ArabicShaping;->SEEN_MASK:I -Landroid/icu/text/ArabicShaping;->SEEN_TWOCELL_NEAR:I -Landroid/icu/text/ArabicShaping;->SHADDA06_CHAR:C -Landroid/icu/text/ArabicShaping;->SHADDA_CHAR:C -Landroid/icu/text/ArabicShaping;->SHADDA_TATWEEL_CHAR:C -Landroid/icu/text/ArabicShaping;->shape([CII)V -Landroid/icu/text/ArabicShaping;->shape([CII[CII)I -Landroid/icu/text/ArabicShaping;->shapeTable:[[[I -Landroid/icu/text/ArabicShaping;->shapeToArabicDigitsWithContext([CIICZ)V -Landroid/icu/text/ArabicShaping;->shapeUnicode([CIIII)I -Landroid/icu/text/ArabicShaping;->SHAPE_MODE:I -Landroid/icu/text/ArabicShaping;->SHAPE_TAIL_NEW_UNICODE:I -Landroid/icu/text/ArabicShaping;->SHAPE_TAIL_TYPE_MASK:I -Landroid/icu/text/ArabicShaping;->shiftArray([CIIC)V -Landroid/icu/text/ArabicShaping;->spacesRelativeToTextBeginEnd:Z -Landroid/icu/text/ArabicShaping;->SPACES_RELATIVE_TO_TEXT_BEGIN_END:I -Landroid/icu/text/ArabicShaping;->SPACES_RELATIVE_TO_TEXT_MASK:I -Landroid/icu/text/ArabicShaping;->SPACE_CHAR:C -Landroid/icu/text/ArabicShaping;->specialChar(C)I -Landroid/icu/text/ArabicShaping;->tailChar:C -Landroid/icu/text/ArabicShaping;->tailFamilyIsolatedFinal:[I -Landroid/icu/text/ArabicShaping;->tashkeelMedial:[I -Landroid/icu/text/ArabicShaping;->TASHKEEL_BEGIN:I -Landroid/icu/text/ArabicShaping;->TASHKEEL_END:I -Landroid/icu/text/ArabicShaping;->TASHKEEL_MASK:I -Landroid/icu/text/ArabicShaping;->TASHKEEL_REPLACE_BY_TATWEEL:I -Landroid/icu/text/ArabicShaping;->TASHKEEL_RESIZE:I -Landroid/icu/text/ArabicShaping;->TASHKEEL_SPACE_SUB:C -Landroid/icu/text/ArabicShaping;->TATWEEL_CHAR:C -Landroid/icu/text/ArabicShaping;->TEXT_DIRECTION_LOGICAL:I -Landroid/icu/text/ArabicShaping;->TEXT_DIRECTION_MASK:I -Landroid/icu/text/ArabicShaping;->TEXT_DIRECTION_VISUAL_LTR:I -Landroid/icu/text/ArabicShaping;->TEXT_DIRECTION_VISUAL_RTL:I -Landroid/icu/text/ArabicShaping;->yehHamzaToYeh:[C -Landroid/icu/text/ArabicShaping;->YEHHAMZA_MASK:I -Landroid/icu/text/ArabicShaping;->YEHHAMZA_TWOCELL_NEAR:I -Landroid/icu/text/ArabicShaping;->YEH_HAMZAFE_CHAR:C -Landroid/icu/text/ArabicShaping;->YEH_HAMZA_CHAR:C -Landroid/icu/text/ArabicShapingException;-><init>(Ljava/lang/String;)V -Landroid/icu/text/Bidi$BracketData;-><init>()V -Landroid/icu/text/Bidi$BracketData;->isNumbersSpecial:Z -Landroid/icu/text/Bidi$BracketData;->isoRunLast:I -Landroid/icu/text/Bidi$BracketData;->isoRuns:[Landroid/icu/text/Bidi$IsoRun; -Landroid/icu/text/Bidi$BracketData;->openings:[Landroid/icu/text/Bidi$Opening; -Landroid/icu/text/Bidi$ImpTabPair;-><init>([[B[[B[S[S)V -Landroid/icu/text/Bidi$ImpTabPair;->impact:[[S -Landroid/icu/text/Bidi$ImpTabPair;->imptab:[[[B -Landroid/icu/text/Bidi$InsertPoints;-><init>()V -Landroid/icu/text/Bidi$InsertPoints;->confirmed:I -Landroid/icu/text/Bidi$InsertPoints;->points:[Landroid/icu/text/Bidi$Point; -Landroid/icu/text/Bidi$InsertPoints;->size:I -Landroid/icu/text/Bidi$Isolate;-><init>()V -Landroid/icu/text/Bidi$Isolate;->start1:I -Landroid/icu/text/Bidi$Isolate;->startON:I -Landroid/icu/text/Bidi$Isolate;->state:S -Landroid/icu/text/Bidi$Isolate;->stateImp:S -Landroid/icu/text/Bidi$IsoRun;-><init>()V -Landroid/icu/text/Bidi$IsoRun;->contextDir:B -Landroid/icu/text/Bidi$IsoRun;->contextPos:I -Landroid/icu/text/Bidi$IsoRun;->lastBase:B -Landroid/icu/text/Bidi$IsoRun;->lastStrong:B -Landroid/icu/text/Bidi$IsoRun;->level:B -Landroid/icu/text/Bidi$IsoRun;->limit:S -Landroid/icu/text/Bidi$IsoRun;->start:S -Landroid/icu/text/Bidi$LevState;-><init>()V -Landroid/icu/text/Bidi$LevState;->impAct:[S -Landroid/icu/text/Bidi$LevState;->impTab:[[B -Landroid/icu/text/Bidi$LevState;->lastStrongRTL:I -Landroid/icu/text/Bidi$LevState;->runLevel:B -Landroid/icu/text/Bidi$LevState;->runStart:I -Landroid/icu/text/Bidi$LevState;->startL2EN:I -Landroid/icu/text/Bidi$LevState;->startON:I -Landroid/icu/text/Bidi$LevState;->state:S -Landroid/icu/text/Bidi$Opening;-><init>()V -Landroid/icu/text/Bidi$Opening;->contextDir:B -Landroid/icu/text/Bidi$Opening;->contextPos:I -Landroid/icu/text/Bidi$Opening;->flags:S -Landroid/icu/text/Bidi$Opening;->match:I -Landroid/icu/text/Bidi$Opening;->position:I -Landroid/icu/text/Bidi$Point;-><init>()V -Landroid/icu/text/Bidi$Point;->flag:I -Landroid/icu/text/Bidi$Point;->pos:I -Landroid/icu/text/Bidi;-><init>()V -Landroid/icu/text/Bidi;-><init>(II)V -Landroid/icu/text/Bidi;-><init>(Ljava/lang/String;I)V -Landroid/icu/text/Bidi;-><init>(Ljava/text/AttributedCharacterIterator;)V -Landroid/icu/text/Bidi;-><init>([CI[BIII)V -Landroid/icu/text/Bidi;->addPoint(II)V -Landroid/icu/text/Bidi;->adjustWSLevels()V -Landroid/icu/text/Bidi;->AL:B -Landroid/icu/text/Bidi;->AN:B -Landroid/icu/text/Bidi;->B:B -Landroid/icu/text/Bidi;->baseIsLeftToRight()Z -Landroid/icu/text/Bidi;->bdp:Landroid/icu/impl/UBiDiProps; -Landroid/icu/text/Bidi;->Bidi_Abs(I)I -Landroid/icu/text/Bidi;->Bidi_Min(II)I -Landroid/icu/text/Bidi;->BN:B -Landroid/icu/text/Bidi;->bracketAddOpening(Landroid/icu/text/Bidi$BracketData;CI)V -Landroid/icu/text/Bidi;->bracketInit(Landroid/icu/text/Bidi$BracketData;)V -Landroid/icu/text/Bidi;->bracketProcessB(Landroid/icu/text/Bidi$BracketData;B)V -Landroid/icu/text/Bidi;->bracketProcessBoundary(Landroid/icu/text/Bidi$BracketData;IBB)V -Landroid/icu/text/Bidi;->bracketProcessChar(Landroid/icu/text/Bidi$BracketData;I)V -Landroid/icu/text/Bidi;->bracketProcessClosing(Landroid/icu/text/Bidi$BracketData;II)B -Landroid/icu/text/Bidi;->bracketProcessLRI_RLI(Landroid/icu/text/Bidi$BracketData;B)V -Landroid/icu/text/Bidi;->bracketProcessPDI(Landroid/icu/text/Bidi$BracketData;)V -Landroid/icu/text/Bidi;->checkExplicitLevels()B -Landroid/icu/text/Bidi;->checkParaCount()V -Landroid/icu/text/Bidi;->CLASS_DEFAULT:I -Landroid/icu/text/Bidi;->controlCount:I -Landroid/icu/text/Bidi;->countParagraphs()I -Landroid/icu/text/Bidi;->countRuns()I -Landroid/icu/text/Bidi;->CR:C -Landroid/icu/text/Bidi;->createLineBidi(II)Landroid/icu/text/Bidi; -Landroid/icu/text/Bidi;->CS:B -Landroid/icu/text/Bidi;->customClassifier:Landroid/icu/text/BidiClassifier; -Landroid/icu/text/Bidi;->defaultParaLevel:B -Landroid/icu/text/Bidi;->direction:B -Landroid/icu/text/Bidi;->directionFromFlags()B -Landroid/icu/text/Bidi;->DIRECTION_DEFAULT_LEFT_TO_RIGHT:I -Landroid/icu/text/Bidi;->DIRECTION_DEFAULT_RIGHT_TO_LEFT:I -Landroid/icu/text/Bidi;->DIRECTION_LEFT_TO_RIGHT:I -Landroid/icu/text/Bidi;->DIRECTION_RIGHT_TO_LEFT:I -Landroid/icu/text/Bidi;->DirFromStrong(B)B -Landroid/icu/text/Bidi;->DirPropFlag(B)I -Landroid/icu/text/Bidi;->DirPropFlagE(B)I -Landroid/icu/text/Bidi;->DirPropFlagE:[I -Landroid/icu/text/Bidi;->DirPropFlagLR(B)I -Landroid/icu/text/Bidi;->DirPropFlagLR:[I -Landroid/icu/text/Bidi;->DirPropFlagMultiRuns:I -Landroid/icu/text/Bidi;->DirPropFlagO(B)I -Landroid/icu/text/Bidi;->DirPropFlagO:[I -Landroid/icu/text/Bidi;->dirProps:[B -Landroid/icu/text/Bidi;->dirPropsMemory:[B -Landroid/icu/text/Bidi;->DO_MIRRORING:S -Landroid/icu/text/Bidi;->EN:B -Landroid/icu/text/Bidi;->ENL:B -Landroid/icu/text/Bidi;->ENR:B -Landroid/icu/text/Bidi;->epilogue:Ljava/lang/String; -Landroid/icu/text/Bidi;->ES:B -Landroid/icu/text/Bidi;->ET:B -Landroid/icu/text/Bidi;->FIRSTALLOC:I -Landroid/icu/text/Bidi;->firstL_R_AL()B -Landroid/icu/text/Bidi;->firstL_R_AL_EN_AN()B -Landroid/icu/text/Bidi;->fixN0c(Landroid/icu/text/Bidi$BracketData;IIB)V -Landroid/icu/text/Bidi;->flags:I -Landroid/icu/text/Bidi;->FOUND_L:B -Landroid/icu/text/Bidi;->FOUND_R:B -Landroid/icu/text/Bidi;->FSI:B -Landroid/icu/text/Bidi;->GetAction(B)S -Landroid/icu/text/Bidi;->GetActionProps(S)S -Landroid/icu/text/Bidi;->getBaseDirection(Ljava/lang/CharSequence;)B -Landroid/icu/text/Bidi;->getBaseLevel()I -Landroid/icu/text/Bidi;->getCustomClassifier()Landroid/icu/text/BidiClassifier; -Landroid/icu/text/Bidi;->getCustomizedClass(I)I -Landroid/icu/text/Bidi;->getDirection()B -Landroid/icu/text/Bidi;->getDirProps()V -Landroid/icu/text/Bidi;->getDirPropsMemory(I)V -Landroid/icu/text/Bidi;->getDirPropsMemory(ZI)V -Landroid/icu/text/Bidi;->getInitialDirPropsMemory(I)V -Landroid/icu/text/Bidi;->getInitialLevelsMemory(I)V -Landroid/icu/text/Bidi;->getInitialRunsMemory(I)V -Landroid/icu/text/Bidi;->getLength()I -Landroid/icu/text/Bidi;->getLevelAt(I)B -Landroid/icu/text/Bidi;->getLevels()[B -Landroid/icu/text/Bidi;->getLevelsMemory(I)V -Landroid/icu/text/Bidi;->getLevelsMemory(ZI)V -Landroid/icu/text/Bidi;->getLogicalIndex(I)I -Landroid/icu/text/Bidi;->getLogicalMap()[I -Landroid/icu/text/Bidi;->getLogicalRun(I)Landroid/icu/text/BidiRun; -Landroid/icu/text/Bidi;->getLogicalToVisualRunsMap()V -Landroid/icu/text/Bidi;->GetLRFromLevel(B)B -Landroid/icu/text/Bidi;->getMemory(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;ZI)Ljava/lang/Object; -Landroid/icu/text/Bidi;->getParagraph(I)Landroid/icu/text/BidiRun; -Landroid/icu/text/Bidi;->getParagraphByIndex(I)Landroid/icu/text/BidiRun; -Landroid/icu/text/Bidi;->getParagraphIndex(I)I -Landroid/icu/text/Bidi;->getParaLevel()B -Landroid/icu/text/Bidi;->GetParaLevelAt(I)B -Landroid/icu/text/Bidi;->getProcessedLength()I -Landroid/icu/text/Bidi;->getReorderingMode()I -Landroid/icu/text/Bidi;->getReorderingOptions()I -Landroid/icu/text/Bidi;->getResultLength()I -Landroid/icu/text/Bidi;->getRunCount()I -Landroid/icu/text/Bidi;->getRunLevel(I)I -Landroid/icu/text/Bidi;->getRunLimit(I)I -Landroid/icu/text/Bidi;->getRunsMemory(I)V -Landroid/icu/text/Bidi;->getRunsMemory(ZI)V -Landroid/icu/text/Bidi;->getRunStart(I)I -Landroid/icu/text/Bidi;->GetState(B)S -Landroid/icu/text/Bidi;->GetStateProps(S)S -Landroid/icu/text/Bidi;->getText()[C -Landroid/icu/text/Bidi;->getTextAsString()Ljava/lang/String; -Landroid/icu/text/Bidi;->getVisualIndex(I)I -Landroid/icu/text/Bidi;->getVisualMap()[I -Landroid/icu/text/Bidi;->getVisualRun(I)Landroid/icu/text/BidiRun; -Landroid/icu/text/Bidi;->groupProp:[S -Landroid/icu/text/Bidi;->impAct0:[S -Landroid/icu/text/Bidi;->impAct1:[S -Landroid/icu/text/Bidi;->impAct2:[S -Landroid/icu/text/Bidi;->impAct3:[S -Landroid/icu/text/Bidi;->IMPTABLEVELS_COLUMNS:I -Landroid/icu/text/Bidi;->IMPTABLEVELS_RES:I -Landroid/icu/text/Bidi;->impTabL_DEFAULT:[[B -Landroid/icu/text/Bidi;->impTabL_GROUP_NUMBERS_WITH_R:[[B -Landroid/icu/text/Bidi;->impTabL_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS:[[B -Landroid/icu/text/Bidi;->impTabL_INVERSE_LIKE_DIRECT_WITH_MARKS:[[B -Landroid/icu/text/Bidi;->impTabL_INVERSE_NUMBERS_AS_L:[[B -Landroid/icu/text/Bidi;->impTabL_NUMBERS_SPECIAL:[[B -Landroid/icu/text/Bidi;->impTabPair:Landroid/icu/text/Bidi$ImpTabPair; -Landroid/icu/text/Bidi;->impTabProps:[[S -Landroid/icu/text/Bidi;->IMPTABPROPS_COLUMNS:I -Landroid/icu/text/Bidi;->IMPTABPROPS_RES:I -Landroid/icu/text/Bidi;->impTabR_DEFAULT:[[B -Landroid/icu/text/Bidi;->impTabR_GROUP_NUMBERS_WITH_R:[[B -Landroid/icu/text/Bidi;->impTabR_INVERSE_LIKE_DIRECT:[[B -Landroid/icu/text/Bidi;->impTabR_INVERSE_LIKE_DIRECT_WITH_MARKS:[[B -Landroid/icu/text/Bidi;->impTabR_INVERSE_NUMBERS_AS_L:[[B -Landroid/icu/text/Bidi;->impTab_DEFAULT:Landroid/icu/text/Bidi$ImpTabPair; -Landroid/icu/text/Bidi;->impTab_GROUP_NUMBERS_WITH_R:Landroid/icu/text/Bidi$ImpTabPair; -Landroid/icu/text/Bidi;->impTab_INVERSE_FOR_NUMBERS_SPECIAL:Landroid/icu/text/Bidi$ImpTabPair; -Landroid/icu/text/Bidi;->impTab_INVERSE_FOR_NUMBERS_SPECIAL_WITH_MARKS:Landroid/icu/text/Bidi$ImpTabPair; -Landroid/icu/text/Bidi;->impTab_INVERSE_LIKE_DIRECT:Landroid/icu/text/Bidi$ImpTabPair; -Landroid/icu/text/Bidi;->impTab_INVERSE_LIKE_DIRECT_WITH_MARKS:Landroid/icu/text/Bidi$ImpTabPair; -Landroid/icu/text/Bidi;->impTab_INVERSE_NUMBERS_AS_L:Landroid/icu/text/Bidi$ImpTabPair; -Landroid/icu/text/Bidi;->impTab_NUMBERS_SPECIAL:Landroid/icu/text/Bidi$ImpTabPair; -Landroid/icu/text/Bidi;->insertPoints:Landroid/icu/text/Bidi$InsertPoints; -Landroid/icu/text/Bidi;->INSERT_LRM_FOR_NUMERIC:S -Landroid/icu/text/Bidi;->invertMap([I)[I -Landroid/icu/text/Bidi;->IsBidiControlChar(I)Z -Landroid/icu/text/Bidi;->IsDefaultLevel(B)Z -Landroid/icu/text/Bidi;->isGoodLogicalToVisualRunsMap:Z -Landroid/icu/text/Bidi;->isInverse()Z -Landroid/icu/text/Bidi;->isInverse:Z -Landroid/icu/text/Bidi;->isLeftToRight()Z -Landroid/icu/text/Bidi;->isMixed()Z -Landroid/icu/text/Bidi;->ISOLATE:I -Landroid/icu/text/Bidi;->isolateCount:I -Landroid/icu/text/Bidi;->isolates:[Landroid/icu/text/Bidi$Isolate; -Landroid/icu/text/Bidi;->isOrderParagraphsLTR()Z -Landroid/icu/text/Bidi;->isRightToLeft()Z -Landroid/icu/text/Bidi;->KEEP_BASE_COMBINING:S -Landroid/icu/text/Bidi;->L:B -Landroid/icu/text/Bidi;->lastArabicPos:I -Landroid/icu/text/Bidi;->lastL_R_AL()B -Landroid/icu/text/Bidi;->length:I -Landroid/icu/text/Bidi;->levels:[B -Landroid/icu/text/Bidi;->levelsMemory:[B -Landroid/icu/text/Bidi;->LEVEL_DEFAULT_LTR:B -Landroid/icu/text/Bidi;->LEVEL_DEFAULT_RTL:B -Landroid/icu/text/Bidi;->LEVEL_OVERRIDE:B -Landroid/icu/text/Bidi;->LF:C -Landroid/icu/text/Bidi;->logicalToVisualRunsMap:[I -Landroid/icu/text/Bidi;->LOOKING_FOR_PDI:I -Landroid/icu/text/Bidi;->LRE:B -Landroid/icu/text/Bidi;->LRI:B -Landroid/icu/text/Bidi;->LRM_AFTER:I -Landroid/icu/text/Bidi;->LRM_BEFORE:I -Landroid/icu/text/Bidi;->LRO:B -Landroid/icu/text/Bidi;->LTR:B -Landroid/icu/text/Bidi;->MAP_NOWHERE:I -Landroid/icu/text/Bidi;->MASK_BN_EXPLICIT:I -Landroid/icu/text/Bidi;->MASK_B_S:I -Landroid/icu/text/Bidi;->MASK_EMBEDDING:I -Landroid/icu/text/Bidi;->MASK_EXPLICIT:I -Landroid/icu/text/Bidi;->MASK_ISO:I -Landroid/icu/text/Bidi;->MASK_LTR:I -Landroid/icu/text/Bidi;->MASK_POSSIBLE_N:I -Landroid/icu/text/Bidi;->MASK_RTL:I -Landroid/icu/text/Bidi;->MASK_R_AL:I -Landroid/icu/text/Bidi;->MASK_STRONG_EN_AN:I -Landroid/icu/text/Bidi;->MASK_WS:I -Landroid/icu/text/Bidi;->MAX_EXPLICIT_LEVEL:B -Landroid/icu/text/Bidi;->mayAllocateRuns:Z -Landroid/icu/text/Bidi;->mayAllocateText:Z -Landroid/icu/text/Bidi;->MIXED:B -Landroid/icu/text/Bidi;->NEUTRAL:B -Landroid/icu/text/Bidi;->NoOverride(B)B -Landroid/icu/text/Bidi;->NOT_SEEKING_STRONG:I -Landroid/icu/text/Bidi;->NSM:B -Landroid/icu/text/Bidi;->ON:B -Landroid/icu/text/Bidi;->OPTION_DEFAULT:I -Landroid/icu/text/Bidi;->OPTION_INSERT_MARKS:I -Landroid/icu/text/Bidi;->OPTION_REMOVE_CONTROLS:I -Landroid/icu/text/Bidi;->OPTION_STREAMING:I -Landroid/icu/text/Bidi;->orderParagraphsLTR(Z)V -Landroid/icu/text/Bidi;->orderParagraphsLTR:Z -Landroid/icu/text/Bidi;->originalLength:I -Landroid/icu/text/Bidi;->OUTPUT_REVERSE:S -Landroid/icu/text/Bidi;->paraBidi:Landroid/icu/text/Bidi; -Landroid/icu/text/Bidi;->paraCount:I -Landroid/icu/text/Bidi;->paraLevel:B -Landroid/icu/text/Bidi;->paras_level:[B -Landroid/icu/text/Bidi;->paras_limit:[I -Landroid/icu/text/Bidi;->PDF:B -Landroid/icu/text/Bidi;->PDI:B -Landroid/icu/text/Bidi;->processPropertySeq(Landroid/icu/text/Bidi$LevState;SII)V -Landroid/icu/text/Bidi;->prologue:Ljava/lang/String; -Landroid/icu/text/Bidi;->R:B -Landroid/icu/text/Bidi;->REMOVE_BIDI_CONTROLS:S -Landroid/icu/text/Bidi;->reorderingMode:I -Landroid/icu/text/Bidi;->reorderingOptions:I -Landroid/icu/text/Bidi;->reorderLogical([B)[I -Landroid/icu/text/Bidi;->reorderVisual([B)[I -Landroid/icu/text/Bidi;->reorderVisually([BI[Ljava/lang/Object;II)V -Landroid/icu/text/Bidi;->REORDER_COUNT:S -Landroid/icu/text/Bidi;->REORDER_DEFAULT:S -Landroid/icu/text/Bidi;->REORDER_GROUP_NUMBERS_WITH_R:S -Landroid/icu/text/Bidi;->REORDER_INVERSE_FOR_NUMBERS_SPECIAL:S -Landroid/icu/text/Bidi;->REORDER_INVERSE_LIKE_DIRECT:S -Landroid/icu/text/Bidi;->REORDER_INVERSE_NUMBERS_AS_L:S -Landroid/icu/text/Bidi;->REORDER_LAST_LOGICAL_TO_VISUAL:S -Landroid/icu/text/Bidi;->REORDER_NUMBERS_SPECIAL:S -Landroid/icu/text/Bidi;->REORDER_RUNS_ONLY:S -Landroid/icu/text/Bidi;->requiresBidi([CII)Z -Landroid/icu/text/Bidi;->resolveExplicitLevels()B -Landroid/icu/text/Bidi;->resolveImplicitLevels(IISS)V -Landroid/icu/text/Bidi;->resultLength:I -Landroid/icu/text/Bidi;->RLE:B -Landroid/icu/text/Bidi;->RLI:B -Landroid/icu/text/Bidi;->RLM_AFTER:I -Landroid/icu/text/Bidi;->RLM_BEFORE:I -Landroid/icu/text/Bidi;->RLO:B -Landroid/icu/text/Bidi;->RTL:B -Landroid/icu/text/Bidi;->runCount:I -Landroid/icu/text/Bidi;->runs:[Landroid/icu/text/BidiRun; -Landroid/icu/text/Bidi;->runsMemory:[Landroid/icu/text/BidiRun; -Landroid/icu/text/Bidi;->S:B -Landroid/icu/text/Bidi;->SEEKING_STRONG_FOR_FSI:I -Landroid/icu/text/Bidi;->SEEKING_STRONG_FOR_PARA:I -Landroid/icu/text/Bidi;->setContext(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/text/Bidi;->setCustomClassifier(Landroid/icu/text/BidiClassifier;)V -Landroid/icu/text/Bidi;->setInverse(Z)V -Landroid/icu/text/Bidi;->setLevelsOutsideIsolates(IIB)V -Landroid/icu/text/Bidi;->setLine(II)Landroid/icu/text/Bidi; -Landroid/icu/text/Bidi;->setPara(Ljava/lang/String;B[B)V -Landroid/icu/text/Bidi;->setPara(Ljava/text/AttributedCharacterIterator;)V -Landroid/icu/text/Bidi;->setPara([CB[B)V -Landroid/icu/text/Bidi;->setParaRunsOnly([CB)V -Landroid/icu/text/Bidi;->setParaSuccess()V -Landroid/icu/text/Bidi;->setReorderingMode(I)V -Landroid/icu/text/Bidi;->setReorderingOptions(I)V -Landroid/icu/text/Bidi;->simpleRuns:[Landroid/icu/text/BidiRun; -Landroid/icu/text/Bidi;->SIMPLE_OPENINGS_COUNT:I -Landroid/icu/text/Bidi;->SIMPLE_PARAS_COUNT:I -Landroid/icu/text/Bidi;->testDirPropFlagAt(II)Z -Landroid/icu/text/Bidi;->text:[C -Landroid/icu/text/Bidi;->trailingWSStart:I -Landroid/icu/text/Bidi;->verifyRange(III)V -Landroid/icu/text/Bidi;->verifyValidPara()V -Landroid/icu/text/Bidi;->verifyValidParaOrLine()V -Landroid/icu/text/Bidi;->writeReordered(I)Ljava/lang/String; -Landroid/icu/text/Bidi;->writeReverse(Ljava/lang/String;I)Ljava/lang/String; -Landroid/icu/text/Bidi;->WS:B -Landroid/icu/text/Bidi;->_AN:S -Landroid/icu/text/Bidi;->_B:S -Landroid/icu/text/Bidi;->_EN:S -Landroid/icu/text/Bidi;->_L:S -Landroid/icu/text/Bidi;->_ON:S -Landroid/icu/text/Bidi;->_R:S -Landroid/icu/text/Bidi;->_S:S -Landroid/icu/text/BidiClassifier;-><init>(Ljava/lang/Object;)V -Landroid/icu/text/BidiClassifier;->classify(I)I -Landroid/icu/text/BidiClassifier;->context:Ljava/lang/Object; -Landroid/icu/text/BidiClassifier;->getContext()Ljava/lang/Object; -Landroid/icu/text/BidiClassifier;->setContext(Ljava/lang/Object;)V -Landroid/icu/text/BidiRun;-><init>()V -Landroid/icu/text/BidiRun;-><init>(IIB)V -Landroid/icu/text/BidiRun;->copyFrom(Landroid/icu/text/BidiRun;)V -Landroid/icu/text/BidiRun;->getDirection()B -Landroid/icu/text/BidiRun;->getEmbeddingLevel()B -Landroid/icu/text/BidiRun;->getLength()I -Landroid/icu/text/BidiRun;->getLimit()I -Landroid/icu/text/BidiRun;->getStart()I -Landroid/icu/text/BidiRun;->insertRemove:I -Landroid/icu/text/BidiRun;->isEvenRun()Z -Landroid/icu/text/BidiRun;->isOddRun()Z -Landroid/icu/text/BidiRun;->level:B -Landroid/icu/text/BidiRun;->limit:I -Landroid/icu/text/BidiRun;->start:I -Landroid/icu/text/BidiTransform$Mirroring;->OFF:Landroid/icu/text/BidiTransform$Mirroring; -Landroid/icu/text/BidiTransform$Mirroring;->ON:Landroid/icu/text/BidiTransform$Mirroring; -Landroid/icu/text/BidiTransform$Mirroring;->valueOf(Ljava/lang/String;)Landroid/icu/text/BidiTransform$Mirroring; -Landroid/icu/text/BidiTransform$Mirroring;->values()[Landroid/icu/text/BidiTransform$Mirroring; -Landroid/icu/text/BidiTransform$Order;->LOGICAL:Landroid/icu/text/BidiTransform$Order; -Landroid/icu/text/BidiTransform$Order;->valueOf(Ljava/lang/String;)Landroid/icu/text/BidiTransform$Order; -Landroid/icu/text/BidiTransform$Order;->values()[Landroid/icu/text/BidiTransform$Order; -Landroid/icu/text/BidiTransform$Order;->VISUAL:Landroid/icu/text/BidiTransform$Order; -Landroid/icu/text/BidiTransform$ReorderingScheme;->doTransform(Landroid/icu/text/BidiTransform;)V -Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_LOG_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_VIS_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_LTR_TO_VIS_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_RTL_TO_LOG_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_RTL_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_RTL_TO_VIS_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->LOG_RTL_TO_VIS_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->matches(BLandroid/icu/text/BidiTransform$Order;BLandroid/icu/text/BidiTransform$Order;)Z -Landroid/icu/text/BidiTransform$ReorderingScheme;->valueOf(Ljava/lang/String;)Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->values()[Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_LTR_TO_LOG_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_LTR_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_LTR_TO_VIS_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_LTR_TO_VIS_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_LOG_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_LOG_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_VIS_LTR:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform$ReorderingScheme;->VIS_RTL_TO_VIS_RTL:Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform;-><init>()V -Landroid/icu/text/BidiTransform;->bidi:Landroid/icu/text/Bidi; -Landroid/icu/text/BidiTransform;->findMatchingScheme(BLandroid/icu/text/BidiTransform$Order;BLandroid/icu/text/BidiTransform$Order;)Landroid/icu/text/BidiTransform$ReorderingScheme; -Landroid/icu/text/BidiTransform;->IsLogical(Landroid/icu/text/BidiTransform$Order;)Z -Landroid/icu/text/BidiTransform;->IsLTR(B)Z -Landroid/icu/text/BidiTransform;->IsRTL(B)Z -Landroid/icu/text/BidiTransform;->IsVisual(Landroid/icu/text/BidiTransform$Order;)Z -Landroid/icu/text/BidiTransform;->mirror()V -Landroid/icu/text/BidiTransform;->reorder()V -Landroid/icu/text/BidiTransform;->reorderingOptions:I -Landroid/icu/text/BidiTransform;->resolve(BI)V -Landroid/icu/text/BidiTransform;->resolveBaseDirection([B)V -Landroid/icu/text/BidiTransform;->reverse()V -Landroid/icu/text/BidiTransform;->shapeArabic(I)V -Landroid/icu/text/BidiTransform;->shapeArabic(II)V -Landroid/icu/text/BidiTransform;->shapingOptions:I -Landroid/icu/text/BidiTransform;->text:Ljava/lang/String; -Landroid/icu/text/BidiTransform;->transform(Ljava/lang/CharSequence;BLandroid/icu/text/BidiTransform$Order;BLandroid/icu/text/BidiTransform$Order;Landroid/icu/text/BidiTransform$Mirroring;I)Ljava/lang/String; -Landroid/icu/text/BreakIterator$BreakIteratorCache;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/BreakIterator;)V -Landroid/icu/text/BreakIterator$BreakIteratorCache;->createBreakInstance()Landroid/icu/text/BreakIterator; -Landroid/icu/text/BreakIterator$BreakIteratorCache;->getLocale()Landroid/icu/util/ULocale; -Landroid/icu/text/BreakIterator$BreakIteratorCache;->iter:Landroid/icu/text/BreakIterator; -Landroid/icu/text/BreakIterator$BreakIteratorCache;->where:Landroid/icu/util/ULocale; -Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;-><init>()V -Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->createBreakIterator(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator; -Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->getAvailableLocales()[Ljava/util/Locale; -Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->getAvailableULocales()[Landroid/icu/util/ULocale; -Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->registerInstance(Landroid/icu/text/BreakIterator;Landroid/icu/util/ULocale;I)Ljava/lang/Object; -Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;->unregister(Ljava/lang/Object;)Z -Landroid/icu/text/BreakIterator;->actualLocale:Landroid/icu/util/ULocale; -Landroid/icu/text/BreakIterator;->DEBUG:Z -Landroid/icu/text/BreakIterator;->getAvailableULocales()[Landroid/icu/util/ULocale; -Landroid/icu/text/BreakIterator;->getBreakInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator; -Landroid/icu/text/BreakIterator;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale; -Landroid/icu/text/BreakIterator;->getShim()Landroid/icu/text/BreakIterator$BreakIteratorServiceShim; -Landroid/icu/text/BreakIterator;->iterCache:[Landroid/icu/impl/CacheValue; -Landroid/icu/text/BreakIterator;->KIND_COUNT:I -Landroid/icu/text/BreakIterator;->registerInstance(Landroid/icu/text/BreakIterator;Landroid/icu/util/ULocale;I)Ljava/lang/Object; -Landroid/icu/text/BreakIterator;->registerInstance(Landroid/icu/text/BreakIterator;Ljava/util/Locale;I)Ljava/lang/Object; -Landroid/icu/text/BreakIterator;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V -Landroid/icu/text/BreakIterator;->setText(Ljava/lang/CharSequence;)V -Landroid/icu/text/BreakIterator;->shim:Landroid/icu/text/BreakIterator$BreakIteratorServiceShim; -Landroid/icu/text/BreakIterator;->unregister(Ljava/lang/Object;)Z -Landroid/icu/text/BreakIterator;->validLocale:Landroid/icu/util/ULocale; -Landroid/icu/text/CanonicalIterator;-><init>(Ljava/lang/String;)V -Landroid/icu/text/CanonicalIterator;->buffer:Ljava/lang/StringBuilder; -Landroid/icu/text/CanonicalIterator;->current:[I -Landroid/icu/text/CanonicalIterator;->done:Z -Landroid/icu/text/CanonicalIterator;->extract(ILjava/lang/String;ILjava/lang/StringBuffer;)Ljava/util/Set; -Landroid/icu/text/CanonicalIterator;->getEquivalents(Ljava/lang/String;)[Ljava/lang/String; -Landroid/icu/text/CanonicalIterator;->getEquivalents2(Ljava/lang/String;)Ljava/util/Set; -Landroid/icu/text/CanonicalIterator;->getSource()Ljava/lang/String; -Landroid/icu/text/CanonicalIterator;->next()Ljava/lang/String; -Landroid/icu/text/CanonicalIterator;->nfcImpl:Landroid/icu/impl/Normalizer2Impl; -Landroid/icu/text/CanonicalIterator;->nfd:Landroid/icu/text/Normalizer2; -Landroid/icu/text/CanonicalIterator;->permute(Ljava/lang/String;ZLjava/util/Set;)V -Landroid/icu/text/CanonicalIterator;->pieces:[[Ljava/lang/String; -Landroid/icu/text/CanonicalIterator;->PROGRESS:Z -Landroid/icu/text/CanonicalIterator;->reset()V -Landroid/icu/text/CanonicalIterator;->setSource(Ljava/lang/String;)V -Landroid/icu/text/CanonicalIterator;->SET_WITH_NULL_STRING:Ljava/util/Set; -Landroid/icu/text/CanonicalIterator;->SKIP_ZEROS:Z -Landroid/icu/text/CanonicalIterator;->source:Ljava/lang/String; -Landroid/icu/text/CaseMap$Fold;-><init>(I)V -Landroid/icu/text/CaseMap$Fold;->apply(Ljava/lang/CharSequence;)Ljava/lang/String; -Landroid/icu/text/CaseMap$Fold;->apply(Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable; -Landroid/icu/text/CaseMap$Fold;->DEFAULT:Landroid/icu/text/CaseMap$Fold; -Landroid/icu/text/CaseMap$Fold;->omitUnchangedText()Landroid/icu/text/CaseMap$Fold; -Landroid/icu/text/CaseMap$Fold;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Fold; -Landroid/icu/text/CaseMap$Fold;->turkic()Landroid/icu/text/CaseMap$Fold; -Landroid/icu/text/CaseMap$Fold;->TURKIC:Landroid/icu/text/CaseMap$Fold; -Landroid/icu/text/CaseMap$Fold;->TURKIC_OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Fold; -Landroid/icu/text/CaseMap$Lower;-><init>(I)V -Landroid/icu/text/CaseMap$Lower;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;)Ljava/lang/String; -Landroid/icu/text/CaseMap$Lower;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable; -Landroid/icu/text/CaseMap$Lower;->DEFAULT:Landroid/icu/text/CaseMap$Lower; -Landroid/icu/text/CaseMap$Lower;->omitUnchangedText()Landroid/icu/text/CaseMap$Lower; -Landroid/icu/text/CaseMap$Lower;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Lower; -Landroid/icu/text/CaseMap$Title;-><init>(I)V -Landroid/icu/text/CaseMap$Title;->adjustToCased()Landroid/icu/text/CaseMap$Title; -Landroid/icu/text/CaseMap$Title;->apply(Ljava/util/Locale;Landroid/icu/text/BreakIterator;Ljava/lang/CharSequence;)Ljava/lang/String; -Landroid/icu/text/CaseMap$Title;->apply(Ljava/util/Locale;Landroid/icu/text/BreakIterator;Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable; -Landroid/icu/text/CaseMap$Title;->DEFAULT:Landroid/icu/text/CaseMap$Title; -Landroid/icu/text/CaseMap$Title;->noBreakAdjustment()Landroid/icu/text/CaseMap$Title; -Landroid/icu/text/CaseMap$Title;->noLowercase()Landroid/icu/text/CaseMap$Title; -Landroid/icu/text/CaseMap$Title;->omitUnchangedText()Landroid/icu/text/CaseMap$Title; -Landroid/icu/text/CaseMap$Title;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Title; -Landroid/icu/text/CaseMap$Title;->sentences()Landroid/icu/text/CaseMap$Title; -Landroid/icu/text/CaseMap$Title;->wholeString()Landroid/icu/text/CaseMap$Title; -Landroid/icu/text/CaseMap$Upper;-><init>(I)V -Landroid/icu/text/CaseMap$Upper;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;)Ljava/lang/String; -Landroid/icu/text/CaseMap$Upper;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable; -Landroid/icu/text/CaseMap$Upper;->DEFAULT:Landroid/icu/text/CaseMap$Upper; -Landroid/icu/text/CaseMap$Upper;->omitUnchangedText()Landroid/icu/text/CaseMap$Upper; -Landroid/icu/text/CaseMap$Upper;->OMIT_UNCHANGED:Landroid/icu/text/CaseMap$Upper; -Landroid/icu/text/CaseMap;-><init>(I)V -Landroid/icu/text/CaseMap;->fold()Landroid/icu/text/CaseMap$Fold; -Landroid/icu/text/CaseMap;->getCaseLocale(Ljava/util/Locale;)I -Landroid/icu/text/CaseMap;->internalOptions:I -Landroid/icu/text/CaseMap;->omitUnchangedText()Landroid/icu/text/CaseMap; -Landroid/icu/text/CaseMap;->toLower()Landroid/icu/text/CaseMap$Lower; -Landroid/icu/text/CaseMap;->toTitle()Landroid/icu/text/CaseMap$Title; -Landroid/icu/text/CaseMap;->toUpper()Landroid/icu/text/CaseMap$Upper; -Landroid/icu/text/CharsetDetector$CSRecognizerInfo;-><init>(Landroid/icu/text/CharsetRecognizer;Z)V -Landroid/icu/text/CharsetDetector$CSRecognizerInfo;->isDefaultEnabled:Z -Landroid/icu/text/CharsetDetector$CSRecognizerInfo;->recognizer:Landroid/icu/text/CharsetRecognizer; -Landroid/icu/text/CharsetDetector;-><init>()V -Landroid/icu/text/CharsetDetector;->ALL_CS_RECOGNIZERS:Ljava/util/List; -Landroid/icu/text/CharsetDetector;->detect()Landroid/icu/text/CharsetMatch; -Landroid/icu/text/CharsetDetector;->detectAll()[Landroid/icu/text/CharsetMatch; -Landroid/icu/text/CharsetDetector;->enableInputFilter(Z)Z -Landroid/icu/text/CharsetDetector;->fByteStats:[S -Landroid/icu/text/CharsetDetector;->fC1Bytes:Z -Landroid/icu/text/CharsetDetector;->fDeclaredEncoding:Ljava/lang/String; -Landroid/icu/text/CharsetDetector;->fEnabledRecognizers:[Z -Landroid/icu/text/CharsetDetector;->fInputBytes:[B -Landroid/icu/text/CharsetDetector;->fInputLen:I -Landroid/icu/text/CharsetDetector;->fInputStream:Ljava/io/InputStream; -Landroid/icu/text/CharsetDetector;->fRawInput:[B -Landroid/icu/text/CharsetDetector;->fRawLength:I -Landroid/icu/text/CharsetDetector;->fStripTags:Z -Landroid/icu/text/CharsetDetector;->getAllDetectableCharsets()[Ljava/lang/String; -Landroid/icu/text/CharsetDetector;->getDetectableCharsets()[Ljava/lang/String; -Landroid/icu/text/CharsetDetector;->getReader(Ljava/io/InputStream;Ljava/lang/String;)Ljava/io/Reader; -Landroid/icu/text/CharsetDetector;->getString([BLjava/lang/String;)Ljava/lang/String; -Landroid/icu/text/CharsetDetector;->inputFilterEnabled()Z -Landroid/icu/text/CharsetDetector;->kBufSize:I -Landroid/icu/text/CharsetDetector;->MungeInput()V -Landroid/icu/text/CharsetDetector;->setDeclaredEncoding(Ljava/lang/String;)Landroid/icu/text/CharsetDetector; -Landroid/icu/text/CharsetDetector;->setDetectableCharset(Ljava/lang/String;Z)Landroid/icu/text/CharsetDetector; -Landroid/icu/text/CharsetDetector;->setText(Ljava/io/InputStream;)Landroid/icu/text/CharsetDetector; -Landroid/icu/text/CharsetDetector;->setText([B)Landroid/icu/text/CharsetDetector; -Landroid/icu/text/CharsetMatch;-><init>(Landroid/icu/text/CharsetDetector;Landroid/icu/text/CharsetRecognizer;I)V -Landroid/icu/text/CharsetMatch;-><init>(Landroid/icu/text/CharsetDetector;Landroid/icu/text/CharsetRecognizer;ILjava/lang/String;Ljava/lang/String;)V -Landroid/icu/text/CharsetMatch;->compareTo(Landroid/icu/text/CharsetMatch;)I -Landroid/icu/text/CharsetMatch;->fCharsetName:Ljava/lang/String; -Landroid/icu/text/CharsetMatch;->fConfidence:I -Landroid/icu/text/CharsetMatch;->fInputStream:Ljava/io/InputStream; -Landroid/icu/text/CharsetMatch;->fLang:Ljava/lang/String; -Landroid/icu/text/CharsetMatch;->fRawInput:[B -Landroid/icu/text/CharsetMatch;->fRawLength:I -Landroid/icu/text/CharsetMatch;->getConfidence()I -Landroid/icu/text/CharsetMatch;->getLanguage()Ljava/lang/String; -Landroid/icu/text/CharsetMatch;->getName()Ljava/lang/String; -Landroid/icu/text/CharsetMatch;->getReader()Ljava/io/Reader; -Landroid/icu/text/CharsetMatch;->getString()Ljava/lang/String; -Landroid/icu/text/CharsetMatch;->getString(I)Ljava/lang/String; -Landroid/icu/text/CharsetRecognizer;-><init>()V -Landroid/icu/text/CharsetRecognizer;->getLanguage()Ljava/lang/String; -Landroid/icu/text/CharsetRecognizer;->getName()Ljava/lang/String; -Landroid/icu/text/CharsetRecognizer;->match(Landroid/icu/text/CharsetDetector;)Landroid/icu/text/CharsetMatch; -Landroid/icu/text/ChineseDateFormat$Field;-><init>(Ljava/lang/String;I)V -Landroid/icu/text/ChineseDateFormat$Field;->IS_LEAP_MONTH:Landroid/icu/text/ChineseDateFormat$Field; -Landroid/icu/text/ChineseDateFormat$Field;->ofCalendarField(I)Landroid/icu/text/DateFormat$Field; -Landroid/icu/text/ChineseDateFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;)V -Landroid/icu/text/ChineseDateFormat;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)V -Landroid/icu/text/ChineseDateFormat;-><init>(Ljava/lang/String;Ljava/util/Locale;)V -Landroid/icu/text/ChineseDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;Landroid/icu/util/Calendar;)V -Landroid/icu/text/ChineseDateFormatSymbols;-><init>()V -Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)V -Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Landroid/icu/util/Calendar;Ljava/util/Locale;)V -Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Landroid/icu/util/ULocale;)V -Landroid/icu/text/ChineseDateFormatSymbols;-><init>(Ljava/util/Locale;)V -Landroid/icu/text/ChineseDateFormatSymbols;->getLeapMonth(I)Ljava/lang/String; -Landroid/icu/text/ChineseDateFormatSymbols;->initializeData(Landroid/icu/text/DateFormatSymbols;)V -Landroid/icu/text/ChineseDateFormatSymbols;->initializeData(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V -Landroid/icu/text/ChineseDateFormatSymbols;->initializeIsLeapMonth()V -Landroid/icu/text/ChineseDateFormatSymbols;->isLeapMonth:[Ljava/lang/String; -Landroid/icu/text/CollationElementIterator$MaxExpSink;-><init>(Ljava/util/Map;)V -Landroid/icu/text/CollationElementIterator$MaxExpSink;->maxExpansions:Ljava/util/Map; -Landroid/icu/text/CollationElementIterator;-><init>(Landroid/icu/text/RuleBasedCollator;)V -Landroid/icu/text/CollationElementIterator;-><init>(Landroid/icu/text/UCharacterIterator;Landroid/icu/text/RuleBasedCollator;)V -Landroid/icu/text/CollationElementIterator;-><init>(Ljava/lang/String;Landroid/icu/text/RuleBasedCollator;)V -Landroid/icu/text/CollationElementIterator;-><init>(Ljava/text/CharacterIterator;Landroid/icu/text/RuleBasedCollator;)V -Landroid/icu/text/CollationElementIterator;->ceNeedsTwoParts(J)Z -Landroid/icu/text/CollationElementIterator;->computeMaxExpansions(Landroid/icu/impl/coll/CollationData;)Ljava/util/Map; -Landroid/icu/text/CollationElementIterator;->dir_:B -Landroid/icu/text/CollationElementIterator;->getFirstHalf(JI)I -Landroid/icu/text/CollationElementIterator;->getMaxExpansion(Ljava/util/Map;I)I -Landroid/icu/text/CollationElementIterator;->getRuleBasedCollator()Landroid/icu/text/RuleBasedCollator; -Landroid/icu/text/CollationElementIterator;->getSecondHalf(JI)I -Landroid/icu/text/CollationElementIterator;->iter_:Landroid/icu/impl/coll/CollationIterator; -Landroid/icu/text/CollationElementIterator;->normalizeDir()B -Landroid/icu/text/CollationElementIterator;->offsets_:Landroid/icu/impl/coll/UVector32; -Landroid/icu/text/CollationElementIterator;->otherHalf_:I -Landroid/icu/text/CollationElementIterator;->rbc_:Landroid/icu/text/RuleBasedCollator; -Landroid/icu/text/CollationElementIterator;->string_:Ljava/lang/String; -Landroid/icu/text/CollationKey$BoundMode;-><init>()V -Landroid/icu/text/CollationKey$BoundMode;->COUNT:I -Landroid/icu/text/CollationKey;-><init>(Ljava/lang/String;Landroid/icu/text/RawCollationKey;)V -Landroid/icu/text/CollationKey;-><init>(Ljava/lang/String;[BI)V -Landroid/icu/text/CollationKey;->getLength()I -Landroid/icu/text/CollationKey;->MERGE_SEPERATOR_:I -Landroid/icu/text/CollationKey;->m_hashCode_:I -Landroid/icu/text/CollationKey;->m_key_:[B -Landroid/icu/text/CollationKey;->m_length_:I -Landroid/icu/text/CollationKey;->m_source_:Ljava/lang/String; -Landroid/icu/text/Collator$ASCII;-><init>()V -Landroid/icu/text/Collator$ASCII;->equalIgnoreCase(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z -Landroid/icu/text/Collator$CollatorFactory;-><init>()V -Landroid/icu/text/Collator$CollatorFactory;->createCollator(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator; -Landroid/icu/text/Collator$CollatorFactory;->createCollator(Ljava/util/Locale;)Landroid/icu/text/Collator; -Landroid/icu/text/Collator$CollatorFactory;->getDisplayName(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/text/Collator$CollatorFactory;->getDisplayName(Ljava/util/Locale;Ljava/util/Locale;)Ljava/lang/String; -Landroid/icu/text/Collator$CollatorFactory;->getSupportedLocaleIDs()Ljava/util/Set; -Landroid/icu/text/Collator$CollatorFactory;->visible()Z -Landroid/icu/text/Collator$KeywordsSink;-><init>()V -Landroid/icu/text/Collator$KeywordsSink;->hasDefault:Z -Landroid/icu/text/Collator$KeywordsSink;->values:Ljava/util/LinkedList; -Landroid/icu/text/Collator$ReorderCodes;->LIMIT:I -Landroid/icu/text/Collator$ServiceShim;-><init>()V -Landroid/icu/text/Collator$ServiceShim;->getAvailableLocales()[Ljava/util/Locale; -Landroid/icu/text/Collator$ServiceShim;->getAvailableULocales()[Landroid/icu/util/ULocale; -Landroid/icu/text/Collator$ServiceShim;->getDisplayName(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/text/Collator$ServiceShim;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator; -Landroid/icu/text/Collator$ServiceShim;->registerFactory(Landroid/icu/text/Collator$CollatorFactory;)Ljava/lang/Object; -Landroid/icu/text/Collator$ServiceShim;->registerInstance(Landroid/icu/text/Collator;Landroid/icu/util/ULocale;)Ljava/lang/Object; -Landroid/icu/text/Collator$ServiceShim;->unregister(Ljava/lang/Object;)Z -Landroid/icu/text/Collator;->BASE:Ljava/lang/String; -Landroid/icu/text/Collator;->checkNotFrozen()V -Landroid/icu/text/Collator;->DEBUG:Z -Landroid/icu/text/Collator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I -Landroid/icu/text/Collator;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale; -Landroid/icu/text/Collator;->getRawCollationKey(Ljava/lang/String;Landroid/icu/text/RawCollationKey;)Landroid/icu/text/RawCollationKey; -Landroid/icu/text/Collator;->getReorderCode(Ljava/lang/String;Ljava/lang/String;)I -Landroid/icu/text/Collator;->getShim()Landroid/icu/text/Collator$ServiceShim; -Landroid/icu/text/Collator;->getYesOrNo(Ljava/lang/String;Ljava/lang/String;)Z -Landroid/icu/text/Collator;->KEYWORDS:[Ljava/lang/String; -Landroid/icu/text/Collator;->registerFactory(Landroid/icu/text/Collator$CollatorFactory;)Ljava/lang/Object; -Landroid/icu/text/Collator;->registerInstance(Landroid/icu/text/Collator;Landroid/icu/util/ULocale;)Ljava/lang/Object; -Landroid/icu/text/Collator;->RESOURCE:Ljava/lang/String; -Landroid/icu/text/Collator;->setAttributesFromKeywords(Landroid/icu/util/ULocale;Landroid/icu/text/Collator;Landroid/icu/text/RuleBasedCollator;)V -Landroid/icu/text/Collator;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V -Landroid/icu/text/Collator;->setStrength2(I)Landroid/icu/text/Collator; -Landroid/icu/text/Collator;->setVariableTop(I)V -Landroid/icu/text/Collator;->setVariableTop(Ljava/lang/String;)I -Landroid/icu/text/Collator;->shim:Landroid/icu/text/Collator$ServiceShim; -Landroid/icu/text/Collator;->unregister(Ljava/lang/Object;)Z -Landroid/icu/text/CompactDecimalFormat;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/CompactDecimalFormat$CompactStyle;)V -Landroid/icu/text/ComposedCharIter;-><init>()V -Landroid/icu/text/ComposedCharIter;-><init>(ZI)V -Landroid/icu/text/ComposedCharIter;->curChar:I -Landroid/icu/text/ComposedCharIter;->decompBuf:Ljava/lang/String; -Landroid/icu/text/ComposedCharIter;->decomposition()Ljava/lang/String; -Landroid/icu/text/ComposedCharIter;->DONE:C -Landroid/icu/text/ComposedCharIter;->findNextChar()V -Landroid/icu/text/ComposedCharIter;->hasNext()Z -Landroid/icu/text/ComposedCharIter;->n2impl:Landroid/icu/impl/Normalizer2Impl; -Landroid/icu/text/ComposedCharIter;->next()C -Landroid/icu/text/ComposedCharIter;->nextChar:I -Landroid/icu/text/CurrencyDisplayNames;-><init>()V -Landroid/icu/text/CurrencyDisplayNames;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/CurrencyDisplayNames; -Landroid/icu/text/CurrencyDisplayNames;->getInstance(Landroid/icu/util/ULocale;Z)Landroid/icu/text/CurrencyDisplayNames; -Landroid/icu/text/CurrencyDisplayNames;->getInstance(Ljava/util/Locale;)Landroid/icu/text/CurrencyDisplayNames; -Landroid/icu/text/CurrencyDisplayNames;->getInstance(Ljava/util/Locale;Z)Landroid/icu/text/CurrencyDisplayNames; -Landroid/icu/text/CurrencyDisplayNames;->getName(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/CurrencyDisplayNames;->getPluralName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/CurrencyDisplayNames;->getSymbol(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/CurrencyDisplayNames;->getULocale()Landroid/icu/util/ULocale; -Landroid/icu/text/CurrencyDisplayNames;->hasData()Z -Landroid/icu/text/CurrencyDisplayNames;->nameMap()Ljava/util/Map; -Landroid/icu/text/CurrencyDisplayNames;->symbolMap()Ljava/util/Map; -Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;-><init>(II)V -Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;->fractionDigits:I -Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;->roundingIncrement:I -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;-><init>(Ljava/lang/String;Ljava/lang/String;JJZ)V -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->all()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->ALL:Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->currency:Ljava/lang/String; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->equals(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Z -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->equals(Ljava/lang/String;Ljava/lang/String;)Z -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->from:J -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->now()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onCurrency(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onDate(J)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onDate(Ljava/util/Date;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onDateRange(JJ)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onDateRange(Ljava/util/Date;Ljava/util/Date;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onRegion(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->onTender()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->region:Ljava/lang/String; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->tenderOnly:Z -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->to:J -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withCurrency(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withDate(J)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withDate(Ljava/util/Date;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withDateRange(JJ)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withDateRange(Ljava/util/Date;Ljava/util/Date;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withRegion(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;->withTender()Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter; -Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;-><init>(Ljava/lang/String;Ljava/lang/String;JJI)V -Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;-><init>(Ljava/lang/String;Ljava/lang/String;JJIZ)V -Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->code:Ljava/lang/String; -Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->from:J -Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->isTender()Z -Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->priority:I -Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->region:Ljava/lang/String; -Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->tender:Z -Landroid/icu/text/CurrencyMetaInfo$CurrencyInfo;->to:J -Landroid/icu/text/CurrencyMetaInfo;-><init>()V -Landroid/icu/text/CurrencyMetaInfo;->currencies(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List; -Landroid/icu/text/CurrencyMetaInfo;->currencyDigits(Ljava/lang/String;)Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits; -Landroid/icu/text/CurrencyMetaInfo;->currencyDigits(Ljava/lang/String;Landroid/icu/util/Currency$CurrencyUsage;)Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits; -Landroid/icu/text/CurrencyMetaInfo;->currencyInfo(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List; -Landroid/icu/text/CurrencyMetaInfo;->dateString(J)Ljava/lang/String; -Landroid/icu/text/CurrencyMetaInfo;->debugString(Ljava/lang/Object;)Ljava/lang/String; -Landroid/icu/text/CurrencyMetaInfo;->defaultDigits:Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits; -Landroid/icu/text/CurrencyMetaInfo;->getInstance()Landroid/icu/text/CurrencyMetaInfo; -Landroid/icu/text/CurrencyMetaInfo;->getInstance(Z)Landroid/icu/text/CurrencyMetaInfo; -Landroid/icu/text/CurrencyMetaInfo;->hasData()Z -Landroid/icu/text/CurrencyMetaInfo;->hasData:Z -Landroid/icu/text/CurrencyMetaInfo;->impl:Landroid/icu/text/CurrencyMetaInfo; -Landroid/icu/text/CurrencyMetaInfo;->regions(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List; -Landroid/icu/text/CurrencyPluralInfo;->defaultCurrencyPluralPattern:Ljava/lang/String; -Landroid/icu/text/CurrencyPluralInfo;->defaultCurrencyPluralPatternChar:[C -Landroid/icu/text/CurrencyPluralInfo;->initialize(Landroid/icu/util/ULocale;)V -Landroid/icu/text/CurrencyPluralInfo;->pluralCountToCurrencyUnitPattern:Ljava/util/Map; -Landroid/icu/text/CurrencyPluralInfo;->pluralPatternIterator()Ljava/util/Iterator; -Landroid/icu/text/CurrencyPluralInfo;->pluralRules:Landroid/icu/text/PluralRules; -Landroid/icu/text/CurrencyPluralInfo;->select(D)Ljava/lang/String; -Landroid/icu/text/CurrencyPluralInfo;->select(Landroid/icu/text/PluralRules$FixedDecimal;)Ljava/lang/String; -Landroid/icu/text/CurrencyPluralInfo;->setupCurrencyPluralPattern(Landroid/icu/util/ULocale;)V -Landroid/icu/text/CurrencyPluralInfo;->tripleCurrencySign:[C -Landroid/icu/text/CurrencyPluralInfo;->tripleCurrencyStr:Ljava/lang/String; -Landroid/icu/text/CurrencyPluralInfo;->ulocale:Landroid/icu/util/ULocale; -Landroid/icu/text/DateFormat$BooleanAttribute;->PARSE_PARTIAL_MATCH:Landroid/icu/text/DateFormat$BooleanAttribute; -Landroid/icu/text/DateFormat$Field;->calendarField:I -Landroid/icu/text/DateFormat$Field;->CAL_FIELDS:[Landroid/icu/text/DateFormat$Field; -Landroid/icu/text/DateFormat$Field;->CAL_FIELD_COUNT:I -Landroid/icu/text/DateFormat$Field;->FIELD_NAME_MAP:Ljava/util/Map; -Landroid/icu/text/DateFormat$Field;->RELATED_YEAR:Landroid/icu/text/DateFormat$Field; -Landroid/icu/text/DateFormat$Field;->TIME_SEPARATOR:Landroid/icu/text/DateFormat$Field; -Landroid/icu/text/DateFormat;->ABBR_STANDALONE_MONTH:Ljava/lang/String; -Landroid/icu/text/DateFormat;->booleanAttributes:Ljava/util/EnumSet; -Landroid/icu/text/DateFormat;->capitalizationSetting:Landroid/icu/text/DisplayContext; -Landroid/icu/text/DateFormat;->currentSerialVersion:I -Landroid/icu/text/DateFormat;->DATE_SKELETONS:Ljava/util/List; -Landroid/icu/text/DateFormat;->FIELD_COUNT:I -Landroid/icu/text/DateFormat;->fixNumberFormatForDates(Landroid/icu/text/NumberFormat;)V -Landroid/icu/text/DateFormat;->get(IILandroid/icu/util/ULocale;Landroid/icu/util/Calendar;)Landroid/icu/text/DateFormat; -Landroid/icu/text/DateFormat;->getAvailableULocales()[Landroid/icu/util/ULocale; -Landroid/icu/text/DateFormat;->getInstance(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; -Landroid/icu/text/DateFormat;->HOUR_GENERIC_TZ:Ljava/lang/String; -Landroid/icu/text/DateFormat;->HOUR_MINUTE_GENERIC_TZ:Ljava/lang/String; -Landroid/icu/text/DateFormat;->HOUR_MINUTE_TZ:Ljava/lang/String; -Landroid/icu/text/DateFormat;->HOUR_TZ:Ljava/lang/String; -Landroid/icu/text/DateFormat;->RELATED_YEAR:I -Landroid/icu/text/DateFormat;->serialVersionOnStream:I -Landroid/icu/text/DateFormat;->STANDALONE_MONTH:Ljava/lang/String; -Landroid/icu/text/DateFormat;->TIME_SEPARATOR:I -Landroid/icu/text/DateFormat;->TIME_SKELETONS:Ljava/util/List; -Landroid/icu/text/DateFormat;->ZONE_SKELETONS:Ljava/util/List; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->DIFFERENT_CALENDAR:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->GREGORIAN:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->NONE:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->SAME_CALENDAR:Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->valueOf(Ljava/lang/String;)Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;->values()[Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink;-><init>()V -Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->aliasPathPairs:Ljava/util/List; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->aliasRelativePath:Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->arrays:Ljava/util/Map; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->CALENDAR_ALIAS_PREFIX:Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->currentCalendarType:Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->maps:Ljava/util/Map; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->nextCalendarType:Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->preEnumerate(Ljava/lang/String;)V -Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->processAliasFromValue(Ljava/lang/String;Landroid/icu/impl/UResource$Value;)Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->processResource(Ljava/lang/String;Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->resourcesToVisit:Ljava/util/Set; -Landroid/icu/text/DateFormatSymbols$CalendarDataSink;->visitAllResources()V -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->DAY_FORMAT:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->DAY_NARROW:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->DAY_STANDALONE:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ERA_ABBREV:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ERA_NARROW:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ERA_WIDE:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->METAZONE_LONG:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->METAZONE_SHORT:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->MONTH_FORMAT:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->MONTH_NARROW:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->MONTH_STANDALONE:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->OTHER:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->valueOf(Ljava/lang/String;)Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->values()[Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ZONE_LONG:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->ZONE_SHORT:Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage; -Landroid/icu/text/DateFormatSymbols;-><init>(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V -Landroid/icu/text/DateFormatSymbols;-><init>(Landroid/icu/util/ULocale;Ljava/lang/String;)V -Landroid/icu/text/DateFormatSymbols;->abbreviatedDayPeriods:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->actualLocale:Landroid/icu/util/ULocale; -Landroid/icu/text/DateFormatSymbols;->ALTERNATE_TIME_SEPARATOR:Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->ampms:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->ampmsNarrow:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->arrayOfArrayEquals([[Ljava/lang/Object;[[Ljava/lang/Object;)Z -Landroid/icu/text/DateFormatSymbols;->CALENDAR_CLASSES:[[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->capitalization:Ljava/util/Map; -Landroid/icu/text/DateFormatSymbols;->contextUsageTypeMap:Ljava/util/Map; -Landroid/icu/text/DateFormatSymbols;->DAY_PERIOD_KEYS:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->DEFAULT_TIME_SEPARATOR:Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->DFSCACHE:Landroid/icu/impl/CacheBase; -Landroid/icu/text/DateFormatSymbols;->DT_CONTEXT_COUNT:I -Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_FORMAT_ABBREV:I -Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_FORMAT_NARROW:I -Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_FORMAT_WIDE:I -Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_NUMERIC:I -Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_STANDALONE_ABBREV:I -Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_STANDALONE_NARROW:I -Landroid/icu/text/DateFormatSymbols;->DT_LEAP_MONTH_PATTERN_STANDALONE_WIDE:I -Landroid/icu/text/DateFormatSymbols;->DT_MONTH_PATTERN_COUNT:I -Landroid/icu/text/DateFormatSymbols;->DT_WIDTH_COUNT:I -Landroid/icu/text/DateFormatSymbols;->duplicate([Ljava/lang/String;)[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->duplicate([[Ljava/lang/String;)[[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->eraNames:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->eras:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->getAvailableULocales()[Landroid/icu/util/ULocale; -Landroid/icu/text/DateFormatSymbols;->getDateFormatBundle(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Ljava/util/ResourceBundle; -Landroid/icu/text/DateFormatSymbols;->getDateFormatBundle(Landroid/icu/util/Calendar;Ljava/util/Locale;)Ljava/util/ResourceBundle; -Landroid/icu/text/DateFormatSymbols;->getDateFormatBundle(Ljava/lang/Class;Landroid/icu/util/ULocale;)Ljava/util/ResourceBundle; -Landroid/icu/text/DateFormatSymbols;->getDateFormatBundle(Ljava/lang/Class;Ljava/util/Locale;)Ljava/util/ResourceBundle; -Landroid/icu/text/DateFormatSymbols;->getLeapMonthPattern(II)Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->getNarrowEras()[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->getTimeSeparatorString()Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->initializeData(Landroid/icu/text/DateFormatSymbols;)V -Landroid/icu/text/DateFormatSymbols;->initializeData(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V -Landroid/icu/text/DateFormatSymbols;->leapMonthPatterns:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->LEAP_MONTH_PATTERNS_PATHS:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->loadDayPeriodStrings(Ljava/util/Map;)[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->localPatternChars:Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->millisPerHour:I -Landroid/icu/text/DateFormatSymbols;->months:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->narrowDayPeriods:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->narrowEras:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->narrowMonths:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->narrowWeekdays:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->NUMERIC:I -Landroid/icu/text/DateFormatSymbols;->patternChars:Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->quarters:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->requestedLocale:Landroid/icu/util/ULocale; -Landroid/icu/text/DateFormatSymbols;->setLeapMonthPattern(Ljava/lang/String;II)V -Landroid/icu/text/DateFormatSymbols;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V -Landroid/icu/text/DateFormatSymbols;->setTimeSeparatorString(Ljava/lang/String;)V -Landroid/icu/text/DateFormatSymbols;->shorterWeekdays:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->shortMonths:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->shortQuarters:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->shortWeekdays:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->shortYearNames:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->shortZodiacNames:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->standaloneAbbreviatedDayPeriods:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->standaloneMonths:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->standaloneNarrowDayPeriods:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->standaloneNarrowMonths:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->standaloneNarrowWeekdays:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->standaloneQuarters:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->standaloneShorterWeekdays:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->standaloneShortMonths:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->standaloneShortQuarters:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->standaloneShortWeekdays:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->standaloneWeekdays:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->standaloneWideDayPeriods:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->timeSeparator:Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->validLocale:Landroid/icu/util/ULocale; -Landroid/icu/text/DateFormatSymbols;->weekdays:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->wideDayPeriods:[Ljava/lang/String; -Landroid/icu/text/DateFormatSymbols;->zoneStrings:[[Ljava/lang/String; -Landroid/icu/text/DateIntervalFormat$BestMatchInfo;-><init>(Ljava/lang/String;I)V -Landroid/icu/text/DateIntervalFormat$BestMatchInfo;->bestMatchDistanceInfo:I -Landroid/icu/text/DateIntervalFormat$BestMatchInfo;->bestMatchSkeleton:Ljava/lang/String; -Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;->bestMatchSkeleton:Ljava/lang/String; -Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;->skeleton:Ljava/lang/String; -Landroid/icu/text/DateIntervalFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateIntervalInfo;Landroid/icu/text/SimpleDateFormat;)V -Landroid/icu/text/DateIntervalFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/text/SimpleDateFormat;)V -Landroid/icu/text/DateIntervalFormat;->adjustFieldWidth(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String; -Landroid/icu/text/DateIntervalFormat;->adjustPosition(Ljava/lang/String;Ljava/lang/String;Ljava/text/FieldPosition;Ljava/lang/String;Ljava/text/FieldPosition;Ljava/text/FieldPosition;)V -Landroid/icu/text/DateIntervalFormat;->concatSingleDate2TimeInterval(Ljava/lang/String;Ljava/lang/String;ILjava/util/Map;)V -Landroid/icu/text/DateIntervalFormat;->fallbackFormat(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;ZLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; -Landroid/icu/text/DateIntervalFormat;->fallbackFormat(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;ZLjava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/lang/String;)Ljava/lang/StringBuffer; -Landroid/icu/text/DateIntervalFormat;->fDateFormat:Landroid/icu/text/SimpleDateFormat; -Landroid/icu/text/DateIntervalFormat;->fDatePattern:Ljava/lang/String; -Landroid/icu/text/DateIntervalFormat;->fDateTimeFormat:Ljava/lang/String; -Landroid/icu/text/DateIntervalFormat;->fFromCalendar:Landroid/icu/util/Calendar; -Landroid/icu/text/DateIntervalFormat;->fieldExistsInSkeleton(ILjava/lang/String;)Z -Landroid/icu/text/DateIntervalFormat;->fInfo:Landroid/icu/text/DateIntervalInfo; -Landroid/icu/text/DateIntervalFormat;->fIntervalPatterns:Ljava/util/Map; -Landroid/icu/text/DateIntervalFormat;->fSkeleton:Ljava/lang/String; -Landroid/icu/text/DateIntervalFormat;->fTimePattern:Ljava/lang/String; -Landroid/icu/text/DateIntervalFormat;->fToCalendar:Landroid/icu/util/Calendar; -Landroid/icu/text/DateIntervalFormat;->genFallbackPattern(ILjava/lang/String;Ljava/util/Map;Landroid/icu/text/DateTimePatternGenerator;)V -Landroid/icu/text/DateIntervalFormat;->genIntervalPattern(ILjava/lang/String;Ljava/lang/String;ILjava/util/Map;)Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch; -Landroid/icu/text/DateIntervalFormat;->genSeparateDateTimePtn(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Landroid/icu/text/DateTimePatternGenerator;)Z -Landroid/icu/text/DateIntervalFormat;->getConcatenationPattern(Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/text/DateIntervalFormat;->getDateTimeSkeleton(Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;)V -Landroid/icu/text/DateIntervalFormat;->getPatterns(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Landroid/icu/util/Output;)Ljava/lang/String; -Landroid/icu/text/DateIntervalFormat;->getRawPatterns()Ljava/util/Map; -Landroid/icu/text/DateIntervalFormat;->initializeIntervalPattern(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/util/Map; -Landroid/icu/text/DateIntervalFormat;->initializePattern(Landroid/icu/impl/ICUCache;)V -Landroid/icu/text/DateIntervalFormat;->isDateIntervalInfoDefault:Z -Landroid/icu/text/DateIntervalFormat;->LOCAL_PATTERN_CACHE:Landroid/icu/impl/ICUCache; -Landroid/icu/text/DateIntervalInfo$DateIntervalSink;-><init>(Landroid/icu/text/DateIntervalInfo;)V -Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->ACCEPTED_PATTERN_LETTERS:Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->dateIntervalInfo:Landroid/icu/text/DateIntervalInfo; -Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->DATE_INTERVAL_PATH_PREFIX:Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->DATE_INTERVAL_PATH_SUFFIX:Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->getAndResetNextCalendarType()Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->getCalendarTypeFromPath(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->nextCalendarType:Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->processSkeletonTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->setIntervalPatternIfAbsent(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/DateIntervalInfo$DateIntervalSink;->validateAndProcessPatternLetter(Ljava/lang/CharSequence;)Ljava/lang/CharSequence; -Landroid/icu/text/DateIntervalInfo$PatternInfo;->currentSerialVersion:I -Landroid/icu/text/DateIntervalInfo$PatternInfo;->fFirstDateInPtnIsLaterDate:Z -Landroid/icu/text/DateIntervalInfo$PatternInfo;->fIntervalPatternFirstPart:Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo$PatternInfo;->fIntervalPatternSecondPart:Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo;-><init>()V -Landroid/icu/text/DateIntervalInfo;->CALENDAR_FIELD_TO_PATTERN_LETTER:[Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo;->CALENDAR_KEY:Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo;->cloneIntervalPatterns(Ljava/util/Map;)Ljava/util/Map; -Landroid/icu/text/DateIntervalInfo;->cloneUnfrozenDII()Ljava/lang/Object; -Landroid/icu/text/DateIntervalInfo;->currentSerialVersion:I -Landroid/icu/text/DateIntervalInfo;->DIICACHE:Landroid/icu/impl/ICUCache; -Landroid/icu/text/DateIntervalInfo;->EARLIEST_FIRST_PREFIX:Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo;->FALLBACK_STRING:Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo;->fFallbackIntervalPattern:Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo;->fFirstDateInPtnIsLaterDate:Z -Landroid/icu/text/DateIntervalInfo;->fIntervalPatterns:Ljava/util/Map; -Landroid/icu/text/DateIntervalInfo;->fIntervalPatternsReadOnly:Z -Landroid/icu/text/DateIntervalInfo;->frozen:Z -Landroid/icu/text/DateIntervalInfo;->genPatternInfo(Ljava/lang/String;Z)Landroid/icu/text/DateIntervalInfo$PatternInfo; -Landroid/icu/text/DateIntervalInfo;->getBestSkeleton(Ljava/lang/String;)Landroid/icu/text/DateIntervalFormat$BestMatchInfo; -Landroid/icu/text/DateIntervalInfo;->getPatterns()Ljava/util/Map; -Landroid/icu/text/DateIntervalInfo;->getRawPatterns()Ljava/util/Map; -Landroid/icu/text/DateIntervalInfo;->initializeData(Landroid/icu/util/ULocale;)V -Landroid/icu/text/DateIntervalInfo;->initializeFromReadOnlyPatterns(Landroid/icu/text/DateIntervalInfo;)V -Landroid/icu/text/DateIntervalInfo;->INTERVAL_FORMATS_KEY:Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo;->LATEST_FIRST_PREFIX:Ljava/lang/String; -Landroid/icu/text/DateIntervalInfo;->MINIMUM_SUPPORTED_CALENDAR_FIELD:I -Landroid/icu/text/DateIntervalInfo;->parseSkeleton(Ljava/lang/String;[I)V -Landroid/icu/text/DateIntervalInfo;->setIntervalPattern(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/DateIntervalInfo$PatternInfo;)V -Landroid/icu/text/DateIntervalInfo;->setIntervalPatternInternally(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/text/DateIntervalInfo$PatternInfo; -Landroid/icu/text/DateIntervalInfo;->setup(Landroid/icu/util/ULocale;)V -Landroid/icu/text/DateIntervalInfo;->splitPatternInto2Part(Ljava/lang/String;)I -Landroid/icu/text/DateIntervalInfo;->stringNumeric(IIC)Z -Landroid/icu/text/DateTimePatternGenerator$AvailableFormatsSink;->returnInfo:Landroid/icu/text/DateTimePatternGenerator$PatternInfo; -Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;-><init>()V -Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->addedDefaultDayPeriod:Z -Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->baseOriginal:Landroid/icu/text/DateTimePatternGenerator$SkeletonFields; -Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->compareTo(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)I -Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->extractFrom(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;I)V -Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->fieldIsNumeric(I)Z -Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getBasePattern()Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getDistance(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;)I -Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getFieldMask()I -Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->original:Landroid/icu/text/DateTimePatternGenerator$SkeletonFields; -Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->set(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$FormatParser;Z)Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher; -Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->toCanonicalString()Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->type:[I -Landroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;-><init>(Ljava/util/HashMap;)V -Landroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;->tempMap:Ljava/util/HashMap; -Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->addExtra(I)V -Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->addMissing(I)V -Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->clear()V -Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->extraFieldMask:I -Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->missingFieldMask:I -Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;->setTo(Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;)V -Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->FIX_FRACTIONAL_SECONDS:Landroid/icu/text/DateTimePatternGenerator$DTPGflags; -Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->SKELETON_USES_CAP_J:Landroid/icu/text/DateTimePatternGenerator$DTPGflags; -Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->valueOf(Ljava/lang/String;)Landroid/icu/text/DateTimePatternGenerator$DTPGflags; -Landroid/icu/text/DateTimePatternGenerator$DTPGflags;->values()[Landroid/icu/text/DateTimePatternGenerator$DTPGflags; -Landroid/icu/text/DateTimePatternGenerator$FormatParser;-><init>()V -Landroid/icu/text/DateTimePatternGenerator$FormatParser;->addVariable(Ljava/lang/StringBuffer;Z)V -Landroid/icu/text/DateTimePatternGenerator$FormatParser;->getItems()Ljava/util/List; -Landroid/icu/text/DateTimePatternGenerator$FormatParser;->hasDateAndTimeFields()Z -Landroid/icu/text/DateTimePatternGenerator$FormatParser;->items:Ljava/util/List; -Landroid/icu/text/DateTimePatternGenerator$FormatParser;->quoteLiteral(Ljava/lang/String;)Ljava/lang/Object; -Landroid/icu/text/DateTimePatternGenerator$FormatParser;->QUOTING_CHARS:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/DateTimePatternGenerator$FormatParser;->set(Ljava/lang/String;)Landroid/icu/text/DateTimePatternGenerator$FormatParser; -Landroid/icu/text/DateTimePatternGenerator$FormatParser;->set(Ljava/lang/String;Z)Landroid/icu/text/DateTimePatternGenerator$FormatParser; -Landroid/icu/text/DateTimePatternGenerator$FormatParser;->SYNTAX_CHARS:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/DateTimePatternGenerator$FormatParser;->tokenizer:Landroid/icu/impl/PatternTokenizer; -Landroid/icu/text/DateTimePatternGenerator$FormatParser;->toString(II)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;-><init>(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)V -Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;->matcherWithSkeleton:Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher; -Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;->pattern:Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;-><init>(Ljava/lang/String;Z)V -Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;->pattern:Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;->skeletonWasSpecified:Z -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;-><init>()V -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendFieldTo(ILjava/lang/StringBuilder;)Ljava/lang/StringBuilder; -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendFieldTo(ILjava/lang/StringBuilder;Z)Ljava/lang/StringBuilder; -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendTo(Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder; -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendTo(Ljava/lang/StringBuilder;ZZ)Ljava/lang/StringBuilder; -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->chars:[B -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->clear()V -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->clearField(I)V -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->compareTo(Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;)I -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->copyFieldFrom(Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;I)V -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->DEFAULT_CHAR:B -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->DEFAULT_LENGTH:B -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->getFieldChar(I)C -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->getFieldLength(I)I -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->isFieldEmpty(I)Z -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->lengths:[B -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->populate(ICI)V -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->populate(ILjava/lang/String;)V -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toCanonicalString()Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toCanonicalString(Z)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toString(Z)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator$VariableField;-><init>(Ljava/lang/String;)V -Landroid/icu/text/DateTimePatternGenerator$VariableField;-><init>(Ljava/lang/String;Z)V -Landroid/icu/text/DateTimePatternGenerator$VariableField;->canonicalIndex:I -Landroid/icu/text/DateTimePatternGenerator$VariableField;->getCanonicalCode(I)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator$VariableField;->getCanonicalIndex()I -Landroid/icu/text/DateTimePatternGenerator$VariableField;->getType()I -Landroid/icu/text/DateTimePatternGenerator$VariableField;->isNumeric()Z -Landroid/icu/text/DateTimePatternGenerator$VariableField;->string:Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->addCanonicalItems()V -Landroid/icu/text/DateTimePatternGenerator;->addCLDRData(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Landroid/icu/util/ULocale;)V -Landroid/icu/text/DateTimePatternGenerator;->addICUPatterns(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Landroid/icu/util/ULocale;)V -Landroid/icu/text/DateTimePatternGenerator;->addPatternWithSkeleton(Ljava/lang/String;Ljava/lang/String;ZLandroid/icu/text/DateTimePatternGenerator$PatternInfo;)Landroid/icu/text/DateTimePatternGenerator; -Landroid/icu/text/DateTimePatternGenerator;->adjustFieldTypes(Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;Ljava/util/EnumSet;I)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->allowedHourFormats:[Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->appendItemFormats:[Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->appendItemNames:[Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->basePattern_pattern:Ljava/util/TreeMap; -Landroid/icu/text/DateTimePatternGenerator;->CANONICAL_ITEMS:[Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->CANONICAL_SET:Ljava/util/Set; -Landroid/icu/text/DateTimePatternGenerator;->checkFrozen()V -Landroid/icu/text/DateTimePatternGenerator;->cldrAvailableFormatKeys:Ljava/util/Set; -Landroid/icu/text/DateTimePatternGenerator;->CLDR_FIELD_APPEND:[Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->CLDR_FIELD_NAME:[Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->consumeShortTimePattern(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$PatternInfo;)V -Landroid/icu/text/DateTimePatternGenerator;->current:Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher; -Landroid/icu/text/DateTimePatternGenerator;->dateTimeFormat:Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->DATE_MASK:I -Landroid/icu/text/DateTimePatternGenerator;->DEBUG:Z -Landroid/icu/text/DateTimePatternGenerator;->decimal:Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->defaultHourFormatChar:C -Landroid/icu/text/DateTimePatternGenerator;->DELTA:I -Landroid/icu/text/DateTimePatternGenerator;->DTPNG_CACHE:Landroid/icu/impl/ICUCache; -Landroid/icu/text/DateTimePatternGenerator;->EXTRA_FIELD:I -Landroid/icu/text/DateTimePatternGenerator;->FIELD_NAME:[Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->fillInMissing()V -Landroid/icu/text/DateTimePatternGenerator;->fp:Landroid/icu/text/DateTimePatternGenerator$FormatParser; -Landroid/icu/text/DateTimePatternGenerator;->FRACTIONAL_MASK:I -Landroid/icu/text/DateTimePatternGenerator;->frozen:Z -Landroid/icu/text/DateTimePatternGenerator;->getAllowedHourFormats(Landroid/icu/util/ULocale;)V -Landroid/icu/text/DateTimePatternGenerator;->getAppendFormat(I)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->getAppendFormatNumber(Landroid/icu/impl/UResource$Key;)I -Landroid/icu/text/DateTimePatternGenerator;->getAppendFormatNumber(Ljava/lang/String;)I -Landroid/icu/text/DateTimePatternGenerator;->getAppendName(I)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->getBestAppending(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;Ljava/util/EnumSet;I)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->getBestPattern(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;I)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->getBestRaw(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher; -Landroid/icu/text/DateTimePatternGenerator;->getCalendarTypeToUse(Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->getCanonicalChar(IC)C -Landroid/icu/text/DateTimePatternGenerator;->getCanonicalIndex(Ljava/lang/String;Z)I -Landroid/icu/text/DateTimePatternGenerator;->getCanonicalSkeletonAllowingDuplicates(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->getCLDRFieldNumber(Landroid/icu/impl/UResource$Key;)I -Landroid/icu/text/DateTimePatternGenerator;->getDefaultHourFormatChar()C -Landroid/icu/text/DateTimePatternGenerator;->getFields(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->getFilteredPattern(Landroid/icu/text/DateTimePatternGenerator$FormatParser;Ljava/util/BitSet;)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->getFrozenInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DateTimePatternGenerator; -Landroid/icu/text/DateTimePatternGenerator;->getName(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->getRedundants(Ljava/util/Collection;)Ljava/util/Collection; -Landroid/icu/text/DateTimePatternGenerator;->getSet(Ljava/lang/String;)Ljava/util/TreeSet; -Landroid/icu/text/DateTimePatternGenerator;->getSkeletonAllowingDuplicates(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->getTopBitNumber(I)I -Landroid/icu/text/DateTimePatternGenerator;->hackTimes(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Ljava/lang/String;)V -Landroid/icu/text/DateTimePatternGenerator;->initData(Landroid/icu/util/ULocale;)V -Landroid/icu/text/DateTimePatternGenerator;->isAvailableFormatSet(Ljava/lang/String;)Z -Landroid/icu/text/DateTimePatternGenerator;->isSingleField(Ljava/lang/String;)Z -Landroid/icu/text/DateTimePatternGenerator;->LAST_RESORT_ALLOWED_HOUR_FORMAT:[Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->LOCALE_TO_ALLOWED_HOUR:Ljava/util/Map; -Landroid/icu/text/DateTimePatternGenerator;->LONG:I -Landroid/icu/text/DateTimePatternGenerator;->mapSkeletonMetacharacters(Ljava/lang/String;Ljava/util/EnumSet;)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->MATCH_MINUTE_FIELD_LENGTH:I -Landroid/icu/text/DateTimePatternGenerator;->MATCH_SECOND_FIELD_LENGTH:I -Landroid/icu/text/DateTimePatternGenerator;->MISSING_FIELD:I -Landroid/icu/text/DateTimePatternGenerator;->NARROW:I -Landroid/icu/text/DateTimePatternGenerator;->NONE:I -Landroid/icu/text/DateTimePatternGenerator;->NUMERIC:I -Landroid/icu/text/DateTimePatternGenerator;->SECOND_AND_FRACTIONAL_MASK:I -Landroid/icu/text/DateTimePatternGenerator;->setAvailableFormat(Ljava/lang/String;)V -Landroid/icu/text/DateTimePatternGenerator;->setDateTimeFromCalendar(Landroid/icu/util/ULocale;)V -Landroid/icu/text/DateTimePatternGenerator;->setDecimalSymbols(Landroid/icu/util/ULocale;)V -Landroid/icu/text/DateTimePatternGenerator;->setDefaultHourFormatChar(C)V -Landroid/icu/text/DateTimePatternGenerator;->SHORT:I -Landroid/icu/text/DateTimePatternGenerator;->SHORTER:I -Landroid/icu/text/DateTimePatternGenerator;->showMask(I)Ljava/lang/String; -Landroid/icu/text/DateTimePatternGenerator;->skeleton2pattern:Ljava/util/TreeMap; -Landroid/icu/text/DateTimePatternGenerator;->skeletonsAreSimilar(Ljava/lang/String;Ljava/lang/String;)Z -Landroid/icu/text/DateTimePatternGenerator;->TIME_MASK:I -Landroid/icu/text/DateTimePatternGenerator;->types:[[I -Landroid/icu/text/DateTimePatternGenerator;->TYPE_LIMIT:I -Landroid/icu/text/DateTimePatternGenerator;->_distanceInfo:Landroid/icu/text/DateTimePatternGenerator$DistanceInfo; -Landroid/icu/text/DecimalFormat$PropertySetter;->set(Landroid/icu/impl/number/DecimalFormatProperties;)V -Landroid/icu/text/DecimalFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;I)V -Landroid/icu/text/DecimalFormat;->exportedProperties:Landroid/icu/impl/number/DecimalFormatProperties; -Landroid/icu/text/DecimalFormat;->formatter:Landroid/icu/number/LocalizedNumberFormatter; -Landroid/icu/text/DecimalFormat;->getDefaultSymbols()Landroid/icu/text/DecimalFormatSymbols; -Landroid/icu/text/DecimalFormat;->getFixedDecimal(D)Landroid/icu/text/PluralRules$IFixedDecimal; -Landroid/icu/text/DecimalFormat;->getMinimumGroupingDigits()I -Landroid/icu/text/DecimalFormat;->getParseCaseSensitive()Z -Landroid/icu/text/DecimalFormat;->getParseNoExponent()Z -Landroid/icu/text/DecimalFormat;->getSignAlwaysShown()Z -Landroid/icu/text/DecimalFormat;->icuMathContextForm:I -Landroid/icu/text/DecimalFormat;->properties:Landroid/icu/impl/number/DecimalFormatProperties; -Landroid/icu/text/DecimalFormat;->refreshFormatter()V -Landroid/icu/text/DecimalFormat;->safeConvertBigDecimal(Ljava/math/BigDecimal;)Ljava/lang/Number; -Landroid/icu/text/DecimalFormat;->serialVersionOnStream:I -Landroid/icu/text/DecimalFormat;->setMinimumGroupingDigits(I)V -Landroid/icu/text/DecimalFormat;->setParseCaseSensitive(Z)V -Landroid/icu/text/DecimalFormat;->setParseNoExponent(Z)V -Landroid/icu/text/DecimalFormat;->setProperties(Landroid/icu/text/DecimalFormat$PropertySetter;)V -Landroid/icu/text/DecimalFormat;->setPropertiesFromPattern(Ljava/lang/String;I)V -Landroid/icu/text/DecimalFormat;->setSignAlwaysShown(Z)V -Landroid/icu/text/DecimalFormat;->symbols:Landroid/icu/text/DecimalFormatSymbols; -Landroid/icu/text/DecimalFormat;->threadLocalProperties:Ljava/lang/ThreadLocal; -Landroid/icu/text/DecimalFormat;->toNumberFormatter()Landroid/icu/number/LocalizedNumberFormatter; -Landroid/icu/text/DecimalFormat;->useCurrency(Landroid/icu/impl/number/DecimalFormatProperties;)Z -Landroid/icu/text/DecimalFormatSymbols$CacheData;-><init>(Landroid/icu/util/ULocale;[Ljava/lang/String;[Ljava/lang/String;)V -Landroid/icu/text/DecimalFormatSymbols$CacheData;->digits:[Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols$CacheData;->numberElements:[Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols$CacheData;->validLocale:Landroid/icu/util/ULocale; -Landroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;-><init>([Ljava/lang/String;)V -Landroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;->numberElements:[Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)V -Landroid/icu/text/DecimalFormatSymbols;-><init>(Ljava/util/Locale;Landroid/icu/text/NumberingSystem;)V -Landroid/icu/text/DecimalFormatSymbols;->actualLocale:Landroid/icu/util/ULocale; -Landroid/icu/text/DecimalFormatSymbols;->cachedLocaleData:Landroid/icu/impl/CacheBase; -Landroid/icu/text/DecimalFormatSymbols;->codePointZero:I -Landroid/icu/text/DecimalFormatSymbols;->currency:Landroid/icu/util/Currency; -Landroid/icu/text/DecimalFormatSymbols;->currencyPattern:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->currencySpcAfterSym:[Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->currencySpcBeforeSym:[Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->currencySymbol:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->currentSerialVersion:I -Landroid/icu/text/DecimalFormatSymbols;->decimalSeparator:C -Landroid/icu/text/DecimalFormatSymbols;->decimalSeparatorString:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->DEF_DECIMAL_SEPARATOR:C -Landroid/icu/text/DecimalFormatSymbols;->DEF_DIGIT_CHARS_ARRAY:[C -Landroid/icu/text/DecimalFormatSymbols;->DEF_DIGIT_STRINGS_ARRAY:[Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->DEF_GROUPING_SEPARATOR:C -Landroid/icu/text/DecimalFormatSymbols;->DEF_MINUS_SIGN:C -Landroid/icu/text/DecimalFormatSymbols;->DEF_PERCENT:C -Landroid/icu/text/DecimalFormatSymbols;->DEF_PERMILL:C -Landroid/icu/text/DecimalFormatSymbols;->DEF_PLUS_SIGN:C -Landroid/icu/text/DecimalFormatSymbols;->digit:C -Landroid/icu/text/DecimalFormatSymbols;->digits:[C -Landroid/icu/text/DecimalFormatSymbols;->digitStrings:[Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->exponential:C -Landroid/icu/text/DecimalFormatSymbols;->exponentMultiplicationSign:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->exponentSeparator:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->forNumberingSystem(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)Landroid/icu/text/DecimalFormatSymbols; -Landroid/icu/text/DecimalFormatSymbols;->forNumberingSystem(Ljava/util/Locale;Landroid/icu/text/NumberingSystem;)Landroid/icu/text/DecimalFormatSymbols; -Landroid/icu/text/DecimalFormatSymbols;->getAvailableULocales()[Landroid/icu/util/ULocale; -Landroid/icu/text/DecimalFormatSymbols;->getCodePointZero()I -Landroid/icu/text/DecimalFormatSymbols;->getCurrencyPattern()Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->getDigitStringsLocal()[Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->groupingSeparator:C -Landroid/icu/text/DecimalFormatSymbols;->groupingSeparatorString:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->infinity:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->initialize(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)V -Landroid/icu/text/DecimalFormatSymbols;->initSpacingInfo(Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;)V -Landroid/icu/text/DecimalFormatSymbols;->intlCurrencySymbol:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->LATIN_NUMBERING_SYSTEM:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->loadData(Landroid/icu/util/ULocale;)Landroid/icu/text/DecimalFormatSymbols$CacheData; -Landroid/icu/text/DecimalFormatSymbols;->minusSign:C -Landroid/icu/text/DecimalFormatSymbols;->minusString:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->monetaryGroupingSeparator:C -Landroid/icu/text/DecimalFormatSymbols;->monetaryGroupingSeparatorString:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->monetarySeparator:C -Landroid/icu/text/DecimalFormatSymbols;->monetarySeparatorString:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->NaN:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->NUMBER_ELEMENTS:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->padEscape:C -Landroid/icu/text/DecimalFormatSymbols;->patternSeparator:C -Landroid/icu/text/DecimalFormatSymbols;->percent:C -Landroid/icu/text/DecimalFormatSymbols;->percentString:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->perMill:C -Landroid/icu/text/DecimalFormatSymbols;->perMillString:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->plusSign:C -Landroid/icu/text/DecimalFormatSymbols;->plusString:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->requestedLocale:Ljava/util/Locale; -Landroid/icu/text/DecimalFormatSymbols;->serialVersionOnStream:I -Landroid/icu/text/DecimalFormatSymbols;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V -Landroid/icu/text/DecimalFormatSymbols;->sigDigit:C -Landroid/icu/text/DecimalFormatSymbols;->SYMBOLS:Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->SYMBOL_DEFAULTS:[Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->SYMBOL_KEYS:[Ljava/lang/String; -Landroid/icu/text/DecimalFormatSymbols;->ulocale:Landroid/icu/util/ULocale; -Landroid/icu/text/DecimalFormatSymbols;->validLocale:Landroid/icu/util/ULocale; -Landroid/icu/text/DecimalFormatSymbols;->zeroDigit:C -Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V -Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getNegPrefix()Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getNegSuffix()Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getPatternType()I -Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getPosPrefix()Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->getPosSuffix()Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->negPrefixPatternForCurrency:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->negSuffixPatternForCurrency:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->patternType:I -Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->posPrefixPatternForCurrency:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android$AffixForCurrency;->posSuffixPatternForCurrency:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->prefix:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->suffix:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->writePrefix(Ljava/lang/StringBuffer;)V -Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;->writeSuffix(Ljava/lang/StringBuffer;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>()V -Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;I)V -Landroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/CurrencyPluralInfo;I)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->actualRoundingIncrement:Ljava/math/BigDecimal; -Landroid/icu/text/DecimalFormat_ICU58_Android;->actualRoundingIncrementICU:Landroid/icu/math/BigDecimal; -Landroid/icu/text/DecimalFormat_ICU58_Android;->addAttribute(Landroid/icu/text/NumberFormat$Field;II)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->addPadding(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;II)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->adjustNumberAsInFormatting(D)D -Landroid/icu/text/DecimalFormat_ICU58_Android;->affixPatternsForCurrency:Ljava/util/Set; -Landroid/icu/text/DecimalFormat_ICU58_Android;->appendAffix(Ljava/lang/StringBuffer;ZZLjava/text/FieldPosition;Z)I -Landroid/icu/text/DecimalFormat_ICU58_Android;->appendAffixPattern(Ljava/lang/StringBuffer;ZZZ)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->applyLocalizedPattern(Ljava/lang/String;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->applyPattern(Ljava/lang/String;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->applyPattern(Ljava/lang/String;Z)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->applyPatternWithoutExpandAffix(Ljava/lang/String;Z)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->areSignificantDigitsUsed()Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->attributes:Ljava/util/ArrayList; -Landroid/icu/text/DecimalFormat_ICU58_Android;->commaEquivalents:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/DecimalFormat_ICU58_Android;->compareAffix(Ljava/lang/String;IZZLjava/lang/String;ZI[Landroid/icu/util/Currency;)I -Landroid/icu/text/DecimalFormat_ICU58_Android;->compareComplexAffix(Ljava/lang/String;Ljava/lang/String;II[Landroid/icu/util/Currency;)I -Landroid/icu/text/DecimalFormat_ICU58_Android;->compareSimpleAffix(Ljava/lang/String;Ljava/lang/String;I)I -Landroid/icu/text/DecimalFormat_ICU58_Android;->create(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/text/CurrencyPluralInfo;I)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->createFromPatternAndSymbols(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->currencyChoice:Ljava/text/ChoiceFormat; -Landroid/icu/text/DecimalFormat_ICU58_Android;->currencyPluralInfo:Landroid/icu/text/CurrencyPluralInfo; -Landroid/icu/text/DecimalFormat_ICU58_Android;->currencySignCount:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->currencyUsage:Landroid/icu/util/Currency$CurrencyUsage; -Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN_COUNT_IN_ISO_FORMAT:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN_COUNT_IN_PLURAL_FORMAT:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN_COUNT_IN_SYMBOL_FORMAT:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->CURRENCY_SIGN_COUNT_ZERO:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->currentSerialVersion:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->decimalSeparatorAlwaysShown:Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->defaultGroupingSeparators:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/DecimalFormat_ICU58_Android;->digitList:Landroid/icu/text/DigitList_Android; -Landroid/icu/text/DecimalFormat_ICU58_Android;->dotEquivalents:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/DecimalFormat_ICU58_Android;->DOUBLE_FRACTION_DIGITS:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->DOUBLE_INTEGER_DIGITS:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->epsilon:D -Landroid/icu/text/DecimalFormat_ICU58_Android;->equals(Ljava/lang/String;Ljava/lang/String;)Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->equalWithSignCompatibility(II)Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->expandAffix(Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuffer;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->expandAffixAdjustWidth(Ljava/lang/String;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->expandAffixes(Ljava/lang/String;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->exponentSignAlwaysShown:Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer; -Landroid/icu/text/DecimalFormat_ICU58_Android;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer; -Landroid/icu/text/DecimalFormat_ICU58_Android;->format(Ljava/math/BigDecimal;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer; -Landroid/icu/text/DecimalFormat_ICU58_Android;->format(Ljava/math/BigInteger;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer; -Landroid/icu/text/DecimalFormat_ICU58_Android;->formatAffix2Attribute(ZLandroid/icu/text/NumberFormat$Field;Ljava/lang/StringBuffer;II)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->formatPattern:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->formatToCharacterIterator(Ljava/lang/Object;Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;)Ljava/text/AttributedCharacterIterator; -Landroid/icu/text/DecimalFormat_ICU58_Android;->formatWidth:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->getCurrencyPluralInfo()Landroid/icu/text/CurrencyPluralInfo; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getCurrencyUsage()Landroid/icu/util/Currency$CurrencyUsage; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getEffectiveCurrency()Landroid/icu/util/Currency; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getEquivalentDecimals(Ljava/lang/String;Z)Landroid/icu/text/UnicodeSet; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getFixedDecimal(D)Landroid/icu/text/PluralRules$FixedDecimal; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getFixedDecimal(DLandroid/icu/text/DigitList_Android;)Landroid/icu/text/PluralRules$FixedDecimal; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getFormatWidth()I -Landroid/icu/text/DecimalFormat_ICU58_Android;->getGroupingSize()I -Landroid/icu/text/DecimalFormat_ICU58_Android;->getMathContext()Ljava/math/MathContext; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getMathContextICU()Landroid/icu/math/MathContext; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getMaximumSignificantDigits()I -Landroid/icu/text/DecimalFormat_ICU58_Android;->getMinimumExponentDigits()B -Landroid/icu/text/DecimalFormat_ICU58_Android;->getMinimumSignificantDigits()I -Landroid/icu/text/DecimalFormat_ICU58_Android;->getMultiplier()I -Landroid/icu/text/DecimalFormat_ICU58_Android;->getNegativePrefix()Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getNegativeSuffix()Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getPadCharacter()C -Landroid/icu/text/DecimalFormat_ICU58_Android;->getPadPosition()I -Landroid/icu/text/DecimalFormat_ICU58_Android;->getParseMaxDigits()I -Landroid/icu/text/DecimalFormat_ICU58_Android;->getPositivePrefix()Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getPositiveSuffix()Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getRoundingIncrement()Ljava/math/BigDecimal; -Landroid/icu/text/DecimalFormat_ICU58_Android;->getSecondaryGroupingSize()I -Landroid/icu/text/DecimalFormat_ICU58_Android;->groupingSize2:B -Landroid/icu/text/DecimalFormat_ICU58_Android;->groupingSize:B -Landroid/icu/text/DecimalFormat_ICU58_Android;->isBidiMark(I)Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->isDecimalPatternMatchRequired()Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->isDecimalSeparatorAlwaysShown()Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->isExponentSignAlwaysShown()Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->isGroupingPosition(I)Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->isNegative(D)Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->isNumberNegative(D)Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->isParseBigDecimal()Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->isReadyForParsing:Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->isScientificNotation()Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->match(Ljava/lang/String;II)I -Landroid/icu/text/DecimalFormat_ICU58_Android;->match(Ljava/lang/String;ILjava/lang/String;)I -Landroid/icu/text/DecimalFormat_ICU58_Android;->matchesDigit(Ljava/lang/String;I[I)I -Landroid/icu/text/DecimalFormat_ICU58_Android;->mathContext:Landroid/icu/math/MathContext; -Landroid/icu/text/DecimalFormat_ICU58_Android;->maxSignificantDigits:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->MAX_INTEGER_DIGITS:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->MAX_SCIENTIFIC_INTEGER_DIGITS:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->minExponentDigits:B -Landroid/icu/text/DecimalFormat_ICU58_Android;->minSignificantDigits:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->minusSigns:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/DecimalFormat_ICU58_Android;->multiplier:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->multiply(D)D -Landroid/icu/text/DecimalFormat_ICU58_Android;->negativePrefix:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->negativeSuffix:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->negPrefixPattern:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->negSuffixPattern:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->NULL_UNIT:Landroid/icu/text/DecimalFormat_ICU58_Android$Unit; -Landroid/icu/text/DecimalFormat_ICU58_Android;->pad:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->padPosition:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->PAD_AFTER_PREFIX:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->PAD_AFTER_SUFFIX:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->PAD_BEFORE_PREFIX:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->PAD_BEFORE_SUFFIX:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->parse(Ljava/lang/String;Ljava/text/ParsePosition;[Landroid/icu/util/Currency;)Ljava/lang/Object; -Landroid/icu/text/DecimalFormat_ICU58_Android;->parseBigDecimal:Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->parseForCurrency(Ljava/lang/String;Ljava/text/ParsePosition;[Landroid/icu/util/Currency;[Z)Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->parseRequireDecimalPoint:Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->PARSE_MAX_EXPONENT:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->patternError(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_DECIMAL_SEPARATOR:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_DIGIT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_EIGHT_DIGIT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_EXPONENT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_FIVE_DIGIT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_FOUR_DIGIT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_GROUPING_SEPARATOR:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_MINUS_SIGN:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_NINE_DIGIT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_ONE_DIGIT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_PAD_ESCAPE:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_PERCENT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_PER_MILLE:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_PLUS_SIGN:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_SEPARATOR:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_SEVEN_DIGIT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_SIGNIFICANT_DIGIT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_SIX_DIGIT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_THREE_DIGIT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_TWO_DIGIT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->PATTERN_ZERO_DIGIT:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->plusSigns:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/DecimalFormat_ICU58_Android;->positivePrefix:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->positiveSuffix:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->posPrefixPattern:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->posSuffixPattern:Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->precision(Z)I -Landroid/icu/text/DecimalFormat_ICU58_Android;->QUOTE:C -Landroid/icu/text/DecimalFormat_ICU58_Android;->resetActualRounding()V -Landroid/icu/text/DecimalFormat_ICU58_Android;->round(D)D -Landroid/icu/text/DecimalFormat_ICU58_Android;->round(DDDIZ)D -Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingDouble:D -Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingDoubleReciprocal:D -Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingIncrement:Ljava/math/BigDecimal; -Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingIncrementEpsilon:D -Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingIncrementICU:Landroid/icu/math/BigDecimal; -Landroid/icu/text/DecimalFormat_ICU58_Android;->roundingMode:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->serialVersionOnStream:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->setCurrencyForSymbols()V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setCurrencyPluralInfo(Landroid/icu/text/CurrencyPluralInfo;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setCurrencyUsage(Landroid/icu/util/Currency$CurrencyUsage;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setDecimalPatternMatchRequired(Z)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setDecimalSeparatorAlwaysShown(Z)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setExponentSignAlwaysShown(Z)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setFormatWidth(I)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setGroupingSize(I)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setInternalRoundingIncrement(Landroid/icu/math/BigDecimal;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setMathContext(Ljava/math/MathContext;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setMathContextICU(Landroid/icu/math/MathContext;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setMaximumSignificantDigits(I)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setMinimumExponentDigits(B)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setMinimumSignificantDigits(I)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setMultiplier(I)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setNegativePrefix(Ljava/lang/String;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setNegativeSuffix(Ljava/lang/String;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setPadCharacter(C)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setPadPosition(I)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setParseBigDecimal(Z)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setParseMaxDigits(I)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setPositivePrefix(Ljava/lang/String;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setPositiveSuffix(Ljava/lang/String;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingDouble(D)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingIncrement(D)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingIncrement(Landroid/icu/math/BigDecimal;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingIncrement(Ljava/math/BigDecimal;)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setScientificNotation(Z)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setSecondaryGroupingSize(I)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setSignificantDigitsUsed(Z)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->setupCurrencyAffixForAllPatterns()V -Landroid/icu/text/DecimalFormat_ICU58_Android;->skipBidiMarks(Ljava/lang/String;I)I -Landroid/icu/text/DecimalFormat_ICU58_Android;->skipExtendedSeparatorParsing:Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->skipPadding(Ljava/lang/String;I)I -Landroid/icu/text/DecimalFormat_ICU58_Android;->skipPatternWhiteSpace(Ljava/lang/String;I)I -Landroid/icu/text/DecimalFormat_ICU58_Android;->skipUWhiteSpace(Ljava/lang/String;I)I -Landroid/icu/text/DecimalFormat_ICU58_Android;->STATUS_INFINITE:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->STATUS_LENGTH:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->STATUS_POSITIVE:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->STATUS_UNDERFLOW:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->strictCommaEquivalents:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/DecimalFormat_ICU58_Android;->strictDefaultGroupingSeparators:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/DecimalFormat_ICU58_Android;->strictDotEquivalents:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/DecimalFormat_ICU58_Android;->style:I -Landroid/icu/text/DecimalFormat_ICU58_Android;->subformat(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer; -Landroid/icu/text/DecimalFormat_ICU58_Android;->subformat(ILjava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer; -Landroid/icu/text/DecimalFormat_ICU58_Android;->subformat(Ljava/lang/String;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer; -Landroid/icu/text/DecimalFormat_ICU58_Android;->subformat(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer; -Landroid/icu/text/DecimalFormat_ICU58_Android;->subformatExponential(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Z)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->subformatFixed(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ZZ)V -Landroid/icu/text/DecimalFormat_ICU58_Android;->subparse(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/DigitList_Android;[Z[Landroid/icu/util/Currency;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->symbols:Landroid/icu/text/DecimalFormatSymbols; -Landroid/icu/text/DecimalFormat_ICU58_Android;->toDigitList(D)Landroid/icu/text/DigitList_Android; -Landroid/icu/text/DecimalFormat_ICU58_Android;->toLocalizedPattern()Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->toPattern()Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->toPattern(Z)Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->trimMarksFromAffix(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->unquote(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/DecimalFormat_ICU58_Android;->useExponentialNotation:Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->useSignificantDigits:Z -Landroid/icu/text/DecimalFormat_ICU58_Android;->_setMaximumFractionDigits(I)V -Landroid/icu/text/DictionaryBreakEngine$DequeI;-><init>()V -Landroid/icu/text/DictionaryBreakEngine$DequeI;->contains(I)Z -Landroid/icu/text/DictionaryBreakEngine$DequeI;->data:[I -Landroid/icu/text/DictionaryBreakEngine$DequeI;->elementAt(I)I -Landroid/icu/text/DictionaryBreakEngine$DequeI;->firstIdx:I -Landroid/icu/text/DictionaryBreakEngine$DequeI;->grow()V -Landroid/icu/text/DictionaryBreakEngine$DequeI;->isEmpty()Z -Landroid/icu/text/DictionaryBreakEngine$DequeI;->lastIdx:I -Landroid/icu/text/DictionaryBreakEngine$DequeI;->offer(I)V -Landroid/icu/text/DictionaryBreakEngine$DequeI;->peek()I -Landroid/icu/text/DictionaryBreakEngine$DequeI;->peekLast()I -Landroid/icu/text/DictionaryBreakEngine$DequeI;->pollLast()I -Landroid/icu/text/DictionaryBreakEngine$DequeI;->pop()I -Landroid/icu/text/DictionaryBreakEngine$DequeI;->push(I)V -Landroid/icu/text/DictionaryBreakEngine$DequeI;->removeAllElements()V -Landroid/icu/text/DictionaryBreakEngine$DequeI;->size()I -Landroid/icu/text/DictionaryBreakEngine$PossibleWord;-><init>()V -Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->acceptMarked(Ljava/text/CharacterIterator;)I -Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->backUp(Ljava/text/CharacterIterator;)Z -Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->candidates(Ljava/text/CharacterIterator;Landroid/icu/text/DictionaryMatcher;I)I -Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->count:[I -Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->current:I -Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->lengths:[I -Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->longestPrefix()I -Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->mark:I -Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->markCurrent()V -Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->offset:I -Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->POSSIBLE_WORD_LIST_MAX:I -Landroid/icu/text/DictionaryBreakEngine$PossibleWord;->prefix:I -Landroid/icu/text/DictionaryBreakEngine;->divideUpDictionaryRange(Ljava/text/CharacterIterator;IILandroid/icu/text/DictionaryBreakEngine$DequeI;)I -Landroid/icu/text/DictionaryBreakEngine;->findBreaks(Ljava/text/CharacterIterator;IIILandroid/icu/text/DictionaryBreakEngine$DequeI;)I -Landroid/icu/text/DictionaryBreakEngine;->fSet:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/DictionaryBreakEngine;->fTypes:Ljava/util/BitSet; -Landroid/icu/text/DictionaryBreakEngine;->handles(II)Z -Landroid/icu/text/DictionaryBreakEngine;->setCharacters(Landroid/icu/text/UnicodeSet;)V -Landroid/icu/text/DictionaryMatcher;-><init>()V -Landroid/icu/text/DictionaryMatcher;->getType()I -Landroid/icu/text/DictionaryMatcher;->matches(Ljava/text/CharacterIterator;I[I[II)I -Landroid/icu/text/DictionaryMatcher;->matches(Ljava/text/CharacterIterator;I[I[II[I)I -Landroid/icu/text/DigitList_Android;-><init>()V -Landroid/icu/text/DigitList_Android;->append(I)V -Landroid/icu/text/DigitList_Android;->count:I -Landroid/icu/text/DigitList_Android;->DBL_DIG:I -Landroid/icu/text/DigitList_Android;->decimalAt:I -Landroid/icu/text/DigitList_Android;->didRound:Z -Landroid/icu/text/DigitList_Android;->digits:[B -Landroid/icu/text/DigitList_Android;->ensureCapacity(II)V -Landroid/icu/text/DigitList_Android;->getBigDecimalICU(Z)Landroid/icu/math/BigDecimal; -Landroid/icu/text/DigitList_Android;->getBigInteger(Z)Ljava/math/BigInteger; -Landroid/icu/text/DigitList_Android;->getDigitValue(I)B -Landroid/icu/text/DigitList_Android;->getDouble()D -Landroid/icu/text/DigitList_Android;->getLong()J -Landroid/icu/text/DigitList_Android;->getStringRep(Z)Ljava/lang/String; -Landroid/icu/text/DigitList_Android;->isIntegral()Z -Landroid/icu/text/DigitList_Android;->isLongMIN_VALUE()Z -Landroid/icu/text/DigitList_Android;->isZero()Z -Landroid/icu/text/DigitList_Android;->LONG_MIN_REP:[B -Landroid/icu/text/DigitList_Android;->MAX_LONG_DIGITS:I -Landroid/icu/text/DigitList_Android;->round(I)V -Landroid/icu/text/DigitList_Android;->set(DIZ)V -Landroid/icu/text/DigitList_Android;->set(J)V -Landroid/icu/text/DigitList_Android;->set(JI)V -Landroid/icu/text/DigitList_Android;->set(Landroid/icu/math/BigDecimal;IZ)V -Landroid/icu/text/DigitList_Android;->set(Ljava/lang/String;I)V -Landroid/icu/text/DigitList_Android;->set(Ljava/math/BigDecimal;IZ)V -Landroid/icu/text/DigitList_Android;->set(Ljava/math/BigInteger;I)V -Landroid/icu/text/DigitList_Android;->setBigDecimalDigits(Ljava/lang/String;IZ)V -Landroid/icu/text/DigitList_Android;->shouldRoundUp(I)Z -Landroid/icu/text/DigitList_Android;->wasRounded()Z -Landroid/icu/text/DisplayContext;->type:Landroid/icu/text/DisplayContext$Type; -Landroid/icu/text/DisplayContext;->value:I -Landroid/icu/text/DurationFormat;-><init>()V -Landroid/icu/text/DurationFormat;-><init>(Landroid/icu/util/ULocale;)V -Landroid/icu/text/DurationFormat;->formatDurationFrom(JJ)Ljava/lang/String; -Landroid/icu/text/DurationFormat;->formatDurationFromNow(J)Ljava/lang/String; -Landroid/icu/text/DurationFormat;->formatDurationFromNowTo(Ljava/util/Date;)Ljava/lang/String; -Landroid/icu/text/DurationFormat;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DurationFormat; -Landroid/icu/text/Edits$Iterator;-><init>([CIZZ)V -Landroid/icu/text/Edits$Iterator;->array:[C -Landroid/icu/text/Edits$Iterator;->changed:Z -Landroid/icu/text/Edits$Iterator;->coarse:Z -Landroid/icu/text/Edits$Iterator;->destinationIndex()I -Landroid/icu/text/Edits$Iterator;->destinationIndexFromSourceIndex(I)I -Landroid/icu/text/Edits$Iterator;->destIndex:I -Landroid/icu/text/Edits$Iterator;->dir:I -Landroid/icu/text/Edits$Iterator;->findDestinationIndex(I)Z -Landroid/icu/text/Edits$Iterator;->findIndex(IZ)I -Landroid/icu/text/Edits$Iterator;->findSourceIndex(I)Z -Landroid/icu/text/Edits$Iterator;->hasChange()Z -Landroid/icu/text/Edits$Iterator;->index:I -Landroid/icu/text/Edits$Iterator;->length:I -Landroid/icu/text/Edits$Iterator;->newLength()I -Landroid/icu/text/Edits$Iterator;->newLength_:I -Landroid/icu/text/Edits$Iterator;->next()Z -Landroid/icu/text/Edits$Iterator;->next(Z)Z -Landroid/icu/text/Edits$Iterator;->noNext()Z -Landroid/icu/text/Edits$Iterator;->oldLength()I -Landroid/icu/text/Edits$Iterator;->oldLength_:I -Landroid/icu/text/Edits$Iterator;->onlyChanges_:Z -Landroid/icu/text/Edits$Iterator;->previous()Z -Landroid/icu/text/Edits$Iterator;->readLength(I)I -Landroid/icu/text/Edits$Iterator;->remaining:I -Landroid/icu/text/Edits$Iterator;->replacementIndex()I -Landroid/icu/text/Edits$Iterator;->replIndex:I -Landroid/icu/text/Edits$Iterator;->sourceIndex()I -Landroid/icu/text/Edits$Iterator;->sourceIndexFromDestinationIndex(I)I -Landroid/icu/text/Edits$Iterator;->srcIndex:I -Landroid/icu/text/Edits$Iterator;->updateNextIndexes()V -Landroid/icu/text/Edits$Iterator;->updatePreviousIndexes()V -Landroid/icu/text/Edits;-><init>()V -Landroid/icu/text/Edits;->addReplace(II)V -Landroid/icu/text/Edits;->addUnchanged(I)V -Landroid/icu/text/Edits;->append(I)V -Landroid/icu/text/Edits;->array:[C -Landroid/icu/text/Edits;->delta:I -Landroid/icu/text/Edits;->getCoarseChangesIterator()Landroid/icu/text/Edits$Iterator; -Landroid/icu/text/Edits;->getCoarseIterator()Landroid/icu/text/Edits$Iterator; -Landroid/icu/text/Edits;->getFineChangesIterator()Landroid/icu/text/Edits$Iterator; -Landroid/icu/text/Edits;->getFineIterator()Landroid/icu/text/Edits$Iterator; -Landroid/icu/text/Edits;->growArray()Z -Landroid/icu/text/Edits;->hasChanges()Z -Landroid/icu/text/Edits;->lastUnit()I -Landroid/icu/text/Edits;->length:I -Landroid/icu/text/Edits;->lengthDelta()I -Landroid/icu/text/Edits;->LENGTH_IN_1TRAIL:I -Landroid/icu/text/Edits;->LENGTH_IN_2TRAIL:I -Landroid/icu/text/Edits;->MAX_SHORT_CHANGE:I -Landroid/icu/text/Edits;->MAX_SHORT_CHANGE_NEW_LENGTH:I -Landroid/icu/text/Edits;->MAX_SHORT_CHANGE_OLD_LENGTH:I -Landroid/icu/text/Edits;->MAX_UNCHANGED:I -Landroid/icu/text/Edits;->MAX_UNCHANGED_LENGTH:I -Landroid/icu/text/Edits;->mergeAndAppend(Landroid/icu/text/Edits;Landroid/icu/text/Edits;)Landroid/icu/text/Edits; -Landroid/icu/text/Edits;->numberOfChanges()I -Landroid/icu/text/Edits;->numChanges:I -Landroid/icu/text/Edits;->reset()V -Landroid/icu/text/Edits;->setLastUnit(I)V -Landroid/icu/text/Edits;->SHORT_CHANGE_NUM_MASK:I -Landroid/icu/text/Edits;->STACK_CAPACITY:I -Landroid/icu/text/FilteredBreakIteratorBuilder;-><init>()V -Landroid/icu/text/FilteredBreakIteratorBuilder;->getEmptyInstance()Landroid/icu/text/FilteredBreakIteratorBuilder; -Landroid/icu/text/FilteredBreakIteratorBuilder;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/FilteredBreakIteratorBuilder; -Landroid/icu/text/FilteredBreakIteratorBuilder;->getInstance(Ljava/util/Locale;)Landroid/icu/text/FilteredBreakIteratorBuilder; -Landroid/icu/text/FilteredBreakIteratorBuilder;->suppressBreakAfter(Ljava/lang/CharSequence;)Z -Landroid/icu/text/FilteredBreakIteratorBuilder;->unsuppressBreakAfter(Ljava/lang/CharSequence;)Z -Landroid/icu/text/FilteredBreakIteratorBuilder;->wrapIteratorWithFilter(Landroid/icu/text/BreakIterator;)Landroid/icu/text/BreakIterator; -Landroid/icu/text/FilteredNormalizer2;-><init>(Landroid/icu/text/Normalizer2;Landroid/icu/text/UnicodeSet;)V -Landroid/icu/text/FilteredNormalizer2;->norm2:Landroid/icu/text/Normalizer2; -Landroid/icu/text/FilteredNormalizer2;->normalize(Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/UnicodeSet$SpanCondition;)Ljava/lang/Appendable; -Landroid/icu/text/FilteredNormalizer2;->normalizeSecondAndAppend(Ljava/lang/StringBuilder;Ljava/lang/CharSequence;Z)Ljava/lang/StringBuilder; -Landroid/icu/text/FilteredNormalizer2;->set:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/IDNA$Info;->errors:Ljava/util/EnumSet; -Landroid/icu/text/IDNA$Info;->isBiDi:Z -Landroid/icu/text/IDNA$Info;->isOkBiDi:Z -Landroid/icu/text/IDNA$Info;->isTransDiff:Z -Landroid/icu/text/IDNA$Info;->labelErrors:Ljava/util/EnumSet; -Landroid/icu/text/IDNA$Info;->reset()V -Landroid/icu/text/IDNA;-><init>()V -Landroid/icu/text/IDNA;->addError(Landroid/icu/text/IDNA$Info;Landroid/icu/text/IDNA$Error;)V -Landroid/icu/text/IDNA;->addLabelError(Landroid/icu/text/IDNA$Info;Landroid/icu/text/IDNA$Error;)V -Landroid/icu/text/IDNA;->ALLOW_UNASSIGNED:I -Landroid/icu/text/IDNA;->compare(Landroid/icu/text/UCharacterIterator;Landroid/icu/text/UCharacterIterator;I)I -Landroid/icu/text/IDNA;->compare(Ljava/lang/String;Ljava/lang/String;I)I -Landroid/icu/text/IDNA;->compare(Ljava/lang/StringBuffer;Ljava/lang/StringBuffer;I)I -Landroid/icu/text/IDNA;->convertIDNToASCII(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer; -Landroid/icu/text/IDNA;->convertIDNToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer; -Landroid/icu/text/IDNA;->convertIDNToASCII(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer; -Landroid/icu/text/IDNA;->convertIDNToUnicode(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer; -Landroid/icu/text/IDNA;->convertIDNToUnicode(Ljava/lang/String;I)Ljava/lang/StringBuffer; -Landroid/icu/text/IDNA;->convertIDNToUnicode(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer; -Landroid/icu/text/IDNA;->convertToASCII(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer; -Landroid/icu/text/IDNA;->convertToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer; -Landroid/icu/text/IDNA;->convertToASCII(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer; -Landroid/icu/text/IDNA;->convertToUnicode(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer; -Landroid/icu/text/IDNA;->convertToUnicode(Ljava/lang/String;I)Ljava/lang/StringBuffer; -Landroid/icu/text/IDNA;->convertToUnicode(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer; -Landroid/icu/text/IDNA;->hasCertainErrors(Landroid/icu/text/IDNA$Info;Ljava/util/EnumSet;)Z -Landroid/icu/text/IDNA;->hasCertainLabelErrors(Landroid/icu/text/IDNA$Info;Ljava/util/EnumSet;)Z -Landroid/icu/text/IDNA;->isBiDi(Landroid/icu/text/IDNA$Info;)Z -Landroid/icu/text/IDNA;->isOkBiDi(Landroid/icu/text/IDNA$Info;)Z -Landroid/icu/text/IDNA;->promoteAndResetLabelErrors(Landroid/icu/text/IDNA$Info;)V -Landroid/icu/text/IDNA;->resetInfo(Landroid/icu/text/IDNA$Info;)V -Landroid/icu/text/IDNA;->setBiDi(Landroid/icu/text/IDNA$Info;)V -Landroid/icu/text/IDNA;->setNotOkBiDi(Landroid/icu/text/IDNA$Info;)V -Landroid/icu/text/IDNA;->setTransitionalDifferent(Landroid/icu/text/IDNA$Info;)V -Landroid/icu/text/LanguageBreakEngine;->findBreaks(Ljava/text/CharacterIterator;IIILandroid/icu/text/DictionaryBreakEngine$DequeI;)I -Landroid/icu/text/LanguageBreakEngine;->handles(II)Z -Landroid/icu/text/ListFormatter$Cache;-><init>()V -Landroid/icu/text/ListFormatter$Cache;->cache:Landroid/icu/impl/ICUCache; -Landroid/icu/text/ListFormatter$Cache;->get(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/ListFormatter; -Landroid/icu/text/ListFormatter$Cache;->load(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/ListFormatter; -Landroid/icu/text/ListFormatter$FormattedListBuilder;-><init>(Ljava/lang/Object;Z)V -Landroid/icu/text/ListFormatter$FormattedListBuilder;->append(Ljava/lang/String;Ljava/lang/Object;Z)Landroid/icu/text/ListFormatter$FormattedListBuilder; -Landroid/icu/text/ListFormatter$FormattedListBuilder;->current:Ljava/lang/StringBuilder; -Landroid/icu/text/ListFormatter$FormattedListBuilder;->getOffset()I -Landroid/icu/text/ListFormatter$FormattedListBuilder;->offset:I -Landroid/icu/text/ListFormatter$FormattedListBuilder;->offsetRecorded()Z -Landroid/icu/text/ListFormatter$Style;->DURATION:Landroid/icu/text/ListFormatter$Style; -Landroid/icu/text/ListFormatter$Style;->DURATION_NARROW:Landroid/icu/text/ListFormatter$Style; -Landroid/icu/text/ListFormatter$Style;->DURATION_SHORT:Landroid/icu/text/ListFormatter$Style; -Landroid/icu/text/ListFormatter$Style;->getName()Ljava/lang/String; -Landroid/icu/text/ListFormatter$Style;->name:Ljava/lang/String; -Landroid/icu/text/ListFormatter$Style;->STANDARD:Landroid/icu/text/ListFormatter$Style; -Landroid/icu/text/ListFormatter$Style;->valueOf(Ljava/lang/String;)Landroid/icu/text/ListFormatter$Style; -Landroid/icu/text/ListFormatter$Style;->values()[Landroid/icu/text/ListFormatter$Style; -Landroid/icu/text/ListFormatter;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/text/ListFormatter;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)V -Landroid/icu/text/ListFormatter;->cache:Landroid/icu/text/ListFormatter$Cache; -Landroid/icu/text/ListFormatter;->compilePattern(Ljava/lang/String;Ljava/lang/StringBuilder;)Ljava/lang/String; -Landroid/icu/text/ListFormatter;->end:Ljava/lang/String; -Landroid/icu/text/ListFormatter;->format(Ljava/util/Collection;I)Landroid/icu/text/ListFormatter$FormattedListBuilder; -Landroid/icu/text/ListFormatter;->getInstance(Landroid/icu/util/ULocale;Landroid/icu/text/ListFormatter$Style;)Landroid/icu/text/ListFormatter; -Landroid/icu/text/ListFormatter;->getLocale()Landroid/icu/util/ULocale; -Landroid/icu/text/ListFormatter;->locale:Landroid/icu/util/ULocale; -Landroid/icu/text/ListFormatter;->middle:Ljava/lang/String; -Landroid/icu/text/ListFormatter;->start:Ljava/lang/String; -Landroid/icu/text/ListFormatter;->two:Ljava/lang/String; -Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/LocaleDisplayNames$DialectHandling;)V -Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;->contexts:[Landroid/icu/text/DisplayContext; -Landroid/icu/text/LocaleDisplayNames$LastResortLocaleDisplayNames;->locale:Landroid/icu/util/ULocale; -Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;-><init>(Ljava/util/Comparator;Z)V -Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;->collator:Ljava/util/Comparator; -Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;->compare(Landroid/icu/text/LocaleDisplayNames$UiListItem;Landroid/icu/text/LocaleDisplayNames$UiListItem;)I -Landroid/icu/text/LocaleDisplayNames$UiListItem$UiListItemComparator;->useSelf:Z -Landroid/icu/text/LocaleDisplayNames;-><init>()V -Landroid/icu/text/LocaleDisplayNames;->FACTORY_DIALECTHANDLING:Ljava/lang/reflect/Method; -Landroid/icu/text/LocaleDisplayNames;->FACTORY_DISPLAYCONTEXT:Ljava/lang/reflect/Method; -Landroid/icu/text/LocaleDisplayNames;->scriptDisplayNameInContext(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/MeasureFormat$FormatWidth;->currencyStyle:I -Landroid/icu/text/MeasureFormat$FormatWidth;->getCurrencyStyle()I -Landroid/icu/text/MeasureFormat$FormatWidth;->getListFormatterStyle()Landroid/icu/text/ListFormatter$Style; -Landroid/icu/text/MeasureFormat$FormatWidth;->INDEX_COUNT:I -Landroid/icu/text/MeasureFormat$FormatWidth;->listFormatterStyle:Landroid/icu/text/ListFormatter$Style; -Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;-><init>(Landroid/icu/text/NumberFormat;)V -Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->format(Landroid/icu/util/CurrencyAmount;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; -Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->format(Ljava/lang/Number;)Ljava/lang/String; -Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->format(Ljava/lang/Number;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; -Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->get()Landroid/icu/text/NumberFormat; -Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->getPrefix(Z)Ljava/lang/String; -Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->getSuffix(Z)Ljava/lang/String; -Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;->nf:Landroid/icu/text/NumberFormat; -Landroid/icu/text/MeasureFormat$MeasureFormatData;-><init>()V -Landroid/icu/text/MeasureFormat$MeasureFormatData;->hasPerFormatter(Landroid/icu/text/MeasureFormat$FormatWidth;)Z -Landroid/icu/text/MeasureFormat$MeasureFormatData;->PATTERN_COUNT:I -Landroid/icu/text/MeasureFormat$MeasureFormatData;->PER_UNIT_INDEX:I -Landroid/icu/text/MeasureFormat$MeasureFormatData;->styleToPerPattern:Ljava/util/EnumMap; -Landroid/icu/text/MeasureFormat$MeasureFormatData;->unitToStyleToDnam:Ljava/util/Map; -Landroid/icu/text/MeasureFormat$MeasureFormatData;->unitToStyleToPatterns:Ljava/util/Map; -Landroid/icu/text/MeasureFormat$MeasureFormatData;->widthFallback:[Landroid/icu/text/MeasureFormat$FormatWidth; -Landroid/icu/text/MeasureFormat$MeasureProxy;-><init>()V -Landroid/icu/text/MeasureFormat$MeasureProxy;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$FormatWidth;Landroid/icu/text/NumberFormat;I)V -Landroid/icu/text/MeasureFormat$MeasureProxy;->createTimeUnitFormat()Landroid/icu/text/TimeUnitFormat; -Landroid/icu/text/MeasureFormat$MeasureProxy;->formatWidth:Landroid/icu/text/MeasureFormat$FormatWidth; -Landroid/icu/text/MeasureFormat$MeasureProxy;->keyValues:Ljava/util/HashMap; -Landroid/icu/text/MeasureFormat$MeasureProxy;->locale:Landroid/icu/util/ULocale; -Landroid/icu/text/MeasureFormat$MeasureProxy;->numberFormat:Landroid/icu/text/NumberFormat; -Landroid/icu/text/MeasureFormat$MeasureProxy;->subClass:I -Landroid/icu/text/MeasureFormat$NumericFormatters;-><init>(Landroid/icu/text/DateFormat;Landroid/icu/text/DateFormat;Landroid/icu/text/DateFormat;)V -Landroid/icu/text/MeasureFormat$NumericFormatters;->getHourMinute()Landroid/icu/text/DateFormat; -Landroid/icu/text/MeasureFormat$NumericFormatters;->getHourMinuteSecond()Landroid/icu/text/DateFormat; -Landroid/icu/text/MeasureFormat$NumericFormatters;->getMinuteSecond()Landroid/icu/text/DateFormat; -Landroid/icu/text/MeasureFormat$NumericFormatters;->hourMinute:Landroid/icu/text/DateFormat; -Landroid/icu/text/MeasureFormat$NumericFormatters;->hourMinuteSecond:Landroid/icu/text/DateFormat; -Landroid/icu/text/MeasureFormat$NumericFormatters;->minuteSecond:Landroid/icu/text/DateFormat; -Landroid/icu/text/MeasureFormat$PatternData;-><init>(Ljava/lang/String;)V -Landroid/icu/text/MeasureFormat$PatternData;->prefix:Ljava/lang/String; -Landroid/icu/text/MeasureFormat$PatternData;->suffix:Ljava/lang/String; -Landroid/icu/text/MeasureFormat$UnitDataSink;-><init>(Landroid/icu/text/MeasureFormat$MeasureFormatData;)V -Landroid/icu/text/MeasureFormat$UnitDataSink;->cacheData:Landroid/icu/text/MeasureFormat$MeasureFormatData; -Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeAlias(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeCompoundPattern(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/MeasureFormat$UnitDataSink;->consumePattern(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeSubtypeTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/MeasureFormat$UnitDataSink;->consumeUnitTypesTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/MeasureFormat$UnitDataSink;->patterns:[Ljava/lang/String; -Landroid/icu/text/MeasureFormat$UnitDataSink;->sb:Ljava/lang/StringBuilder; -Landroid/icu/text/MeasureFormat$UnitDataSink;->setDnamIfAbsent(Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/MeasureFormat$UnitDataSink;->setFormatterIfAbsent(ILandroid/icu/impl/UResource$Value;I)V -Landroid/icu/text/MeasureFormat$UnitDataSink;->type:Ljava/lang/String; -Landroid/icu/text/MeasureFormat$UnitDataSink;->unit:Landroid/icu/util/MeasureUnit; -Landroid/icu/text/MeasureFormat$UnitDataSink;->width:Landroid/icu/text/MeasureFormat$FormatWidth; -Landroid/icu/text/MeasureFormat$UnitDataSink;->widthFromAlias(Landroid/icu/impl/UResource$Value;)Landroid/icu/text/MeasureFormat$FormatWidth; -Landroid/icu/text/MeasureFormat$UnitDataSink;->widthFromKey(Landroid/icu/impl/UResource$Key;)Landroid/icu/text/MeasureFormat$FormatWidth; -Landroid/icu/text/MeasureFormat;-><init>()V -Landroid/icu/text/MeasureFormat;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$MeasureFormatData;Landroid/icu/text/MeasureFormat$FormatWidth;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;Landroid/icu/text/PluralRules;Landroid/icu/text/MeasureFormat$NumericFormatters;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;)V -Landroid/icu/text/MeasureFormat;->appendReplacingCurrency(Ljava/lang/String;Landroid/icu/util/Currency;Landroid/icu/impl/StandardPlural;Ljava/lang/StringBuilder;)V -Landroid/icu/text/MeasureFormat;->cache:Landroid/icu/text/MeasureFormat$MeasureFormatData; -Landroid/icu/text/MeasureFormat;->currencyFormat:Landroid/icu/text/MeasureFormat$ImmutableNumberFormat; -Landroid/icu/text/MeasureFormat;->CURRENCY_FORMAT:I -Landroid/icu/text/MeasureFormat;->formatMeasure(Landroid/icu/util/Measure;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;)Ljava/lang/String; -Landroid/icu/text/MeasureFormat;->formatMeasure(Landroid/icu/util/Measure;Landroid/icu/text/MeasureFormat$ImmutableNumberFormat;Ljava/lang/StringBuilder;Ljava/text/FieldPosition;)Ljava/lang/StringBuilder; -Landroid/icu/text/MeasureFormat;->formatMeasureRange(Landroid/icu/util/Measure;Landroid/icu/util/Measure;)Ljava/lang/String; -Landroid/icu/text/MeasureFormat;->formatNumeric(Ljava/util/Date;Landroid/icu/text/DateFormat;Landroid/icu/text/DateFormat$Field;Ljava/lang/Number;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder; -Landroid/icu/text/MeasureFormat;->formatNumeric([Ljava/lang/Number;Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder; -Landroid/icu/text/MeasureFormat;->formatWidth:Landroid/icu/text/MeasureFormat$FormatWidth; -Landroid/icu/text/MeasureFormat;->fromFormatWidthOrdinal(I)Landroid/icu/text/MeasureFormat$FormatWidth; -Landroid/icu/text/MeasureFormat;->getFormatter(Landroid/icu/util/MeasureUnit;Landroid/icu/text/MeasureFormat$FormatWidth;I)Ljava/lang/String; -Landroid/icu/text/MeasureFormat;->getFormatterOrNull(Landroid/icu/util/MeasureUnit;Landroid/icu/text/MeasureFormat$FormatWidth;I)Ljava/lang/String; -Landroid/icu/text/MeasureFormat;->getPerFormatter(Landroid/icu/text/MeasureFormat$FormatWidth;)Ljava/lang/String; -Landroid/icu/text/MeasureFormat;->getPluralFormatter(Landroid/icu/util/MeasureUnit;Landroid/icu/text/MeasureFormat$FormatWidth;I)Ljava/lang/String; -Landroid/icu/text/MeasureFormat;->getRangeFormat(Landroid/icu/util/ULocale;Landroid/icu/text/MeasureFormat$FormatWidth;)Ljava/lang/String; -Landroid/icu/text/MeasureFormat;->getRegularWidth(Landroid/icu/text/MeasureFormat$FormatWidth;)Landroid/icu/text/MeasureFormat$FormatWidth; -Landroid/icu/text/MeasureFormat;->hmsTo012:Ljava/util/Map; -Landroid/icu/text/MeasureFormat;->integerFormat:Landroid/icu/text/MeasureFormat$ImmutableNumberFormat; -Landroid/icu/text/MeasureFormat;->loadLocaleData(Landroid/icu/util/ULocale;)Landroid/icu/text/MeasureFormat$MeasureFormatData; -Landroid/icu/text/MeasureFormat;->loadNumericDurationFormat(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)Landroid/icu/text/DateFormat; -Landroid/icu/text/MeasureFormat;->loadNumericFormatters(Landroid/icu/util/ULocale;)Landroid/icu/text/MeasureFormat$NumericFormatters; -Landroid/icu/text/MeasureFormat;->localeIdToRangeFormat:Ljava/util/Map; -Landroid/icu/text/MeasureFormat;->localeMeasureFormatData:Landroid/icu/impl/SimpleCache; -Landroid/icu/text/MeasureFormat;->localeToNumericDurationFormatters:Landroid/icu/impl/SimpleCache; -Landroid/icu/text/MeasureFormat;->MEASURE_FORMAT:I -Landroid/icu/text/MeasureFormat;->numberFormat:Landroid/icu/text/MeasureFormat$ImmutableNumberFormat; -Landroid/icu/text/MeasureFormat;->numericFormatters:Landroid/icu/text/MeasureFormat$NumericFormatters; -Landroid/icu/text/MeasureFormat;->rules:Landroid/icu/text/PluralRules; -Landroid/icu/text/MeasureFormat;->TIME_UNIT_FORMAT:I -Landroid/icu/text/MeasureFormat;->toCurrencyProxy()Ljava/lang/Object; -Landroid/icu/text/MeasureFormat;->toHMS([Landroid/icu/util/Measure;)[Ljava/lang/Number; -Landroid/icu/text/MeasureFormat;->toTimeUnitProxy()Ljava/lang/Object; -Landroid/icu/text/MeasureFormat;->withLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/MeasureFormat; -Landroid/icu/text/MeasureFormat;->withNumberFormat(Landroid/icu/text/NumberFormat;)Landroid/icu/text/MeasureFormat; -Landroid/icu/text/MeasureFormat;->withPerUnitAndAppend(Ljava/lang/CharSequence;Landroid/icu/util/MeasureUnit;Ljava/lang/StringBuilder;)I -Landroid/icu/text/MessageFormat$AppendableWrapper;-><init>(Ljava/lang/StringBuffer;)V -Landroid/icu/text/MessageFormat$AppendableWrapper;-><init>(Ljava/lang/StringBuilder;)V -Landroid/icu/text/MessageFormat$AppendableWrapper;->app:Ljava/lang/Appendable; -Landroid/icu/text/MessageFormat$AppendableWrapper;->append(Ljava/lang/Appendable;Ljava/text/CharacterIterator;)I -Landroid/icu/text/MessageFormat$AppendableWrapper;->append(Ljava/lang/CharSequence;)V -Landroid/icu/text/MessageFormat$AppendableWrapper;->append(Ljava/lang/CharSequence;II)V -Landroid/icu/text/MessageFormat$AppendableWrapper;->append(Ljava/text/CharacterIterator;)V -Landroid/icu/text/MessageFormat$AppendableWrapper;->attributes:Ljava/util/List; -Landroid/icu/text/MessageFormat$AppendableWrapper;->formatAndAppend(Ljava/text/Format;Ljava/lang/Object;)V -Landroid/icu/text/MessageFormat$AppendableWrapper;->formatAndAppend(Ljava/text/Format;Ljava/lang/Object;Ljava/lang/String;)V -Landroid/icu/text/MessageFormat$AppendableWrapper;->length:I -Landroid/icu/text/MessageFormat$AppendableWrapper;->useAttributes()V -Landroid/icu/text/MessageFormat$AttributeAndPosition;-><init>(Ljava/lang/Object;II)V -Landroid/icu/text/MessageFormat$AttributeAndPosition;-><init>(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V -Landroid/icu/text/MessageFormat$AttributeAndPosition;->init(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V -Landroid/icu/text/MessageFormat$AttributeAndPosition;->key:Ljava/text/AttributedCharacterIterator$Attribute; -Landroid/icu/text/MessageFormat$AttributeAndPosition;->limit:I -Landroid/icu/text/MessageFormat$AttributeAndPosition;->start:I -Landroid/icu/text/MessageFormat$AttributeAndPosition;->value:Ljava/lang/Object; -Landroid/icu/text/MessageFormat$PluralSelectorContext;-><init>(ILjava/lang/String;Ljava/lang/Number;D)V -Landroid/icu/text/MessageFormat$PluralSelectorContext;->argName:Ljava/lang/String; -Landroid/icu/text/MessageFormat$PluralSelectorContext;->formatter:Ljava/text/Format; -Landroid/icu/text/MessageFormat$PluralSelectorContext;->forReplaceNumber:Z -Landroid/icu/text/MessageFormat$PluralSelectorContext;->number:Ljava/lang/Number; -Landroid/icu/text/MessageFormat$PluralSelectorContext;->numberArgIndex:I -Landroid/icu/text/MessageFormat$PluralSelectorContext;->numberString:Ljava/lang/String; -Landroid/icu/text/MessageFormat$PluralSelectorContext;->offset:D -Landroid/icu/text/MessageFormat$PluralSelectorContext;->startIndex:I -Landroid/icu/text/MessageFormat$PluralSelectorProvider;-><init>(Landroid/icu/text/MessageFormat;Landroid/icu/text/PluralRules$PluralType;)V -Landroid/icu/text/MessageFormat$PluralSelectorProvider;->msgFormat:Landroid/icu/text/MessageFormat; -Landroid/icu/text/MessageFormat$PluralSelectorProvider;->rules:Landroid/icu/text/PluralRules; -Landroid/icu/text/MessageFormat$PluralSelectorProvider;->select(Ljava/lang/Object;D)Ljava/lang/String; -Landroid/icu/text/MessageFormat$PluralSelectorProvider;->type:Landroid/icu/text/PluralRules$PluralType; -Landroid/icu/text/MessageFormat;->argNameMatches(ILjava/lang/String;I)Z -Landroid/icu/text/MessageFormat;->cachedFormatters:Ljava/util/Map; -Landroid/icu/text/MessageFormat;->cacheExplicitFormats()V -Landroid/icu/text/MessageFormat;->createAppropriateFormat(Ljava/lang/String;Ljava/lang/String;)Ljava/text/Format; -Landroid/icu/text/MessageFormat;->CURLY_BRACE_LEFT:C -Landroid/icu/text/MessageFormat;->CURLY_BRACE_RIGHT:C -Landroid/icu/text/MessageFormat;->customFormatArgStarts:Ljava/util/Set; -Landroid/icu/text/MessageFormat;->dateModifierList:[Ljava/lang/String; -Landroid/icu/text/MessageFormat;->DATE_MODIFIER_EMPTY:I -Landroid/icu/text/MessageFormat;->DATE_MODIFIER_FULL:I -Landroid/icu/text/MessageFormat;->DATE_MODIFIER_LONG:I -Landroid/icu/text/MessageFormat;->DATE_MODIFIER_MEDIUM:I -Landroid/icu/text/MessageFormat;->DATE_MODIFIER_SHORT:I -Landroid/icu/text/MessageFormat;->findChoiceSubMessage(Landroid/icu/text/MessagePattern;ID)I -Landroid/icu/text/MessageFormat;->findFirstPluralNumberArg(ILjava/lang/String;)I -Landroid/icu/text/MessageFormat;->findKeyword(Ljava/lang/String;[Ljava/lang/String;)I -Landroid/icu/text/MessageFormat;->findOtherSubMessage(I)I -Landroid/icu/text/MessageFormat;->format(ILandroid/icu/text/MessageFormat$PluralSelectorContext;[Ljava/lang/Object;Ljava/util/Map;Landroid/icu/text/MessageFormat$AppendableWrapper;Ljava/text/FieldPosition;)V -Landroid/icu/text/MessageFormat;->format(Ljava/lang/Object;Landroid/icu/text/MessageFormat$AppendableWrapper;Ljava/text/FieldPosition;)V -Landroid/icu/text/MessageFormat;->format([Ljava/lang/Object;Ljava/util/Map;Landroid/icu/text/MessageFormat$AppendableWrapper;Ljava/text/FieldPosition;)V -Landroid/icu/text/MessageFormat;->formatComplexSubMessage(ILandroid/icu/text/MessageFormat$PluralSelectorContext;[Ljava/lang/Object;Ljava/util/Map;Landroid/icu/text/MessageFormat$AppendableWrapper;)V -Landroid/icu/text/MessageFormat;->getArgName(I)Ljava/lang/String; -Landroid/icu/text/MessageFormat;->getLiteralStringUntilNextArgument(I)Ljava/lang/String; -Landroid/icu/text/MessageFormat;->getStockDateFormatter()Landroid/icu/text/DateFormat; -Landroid/icu/text/MessageFormat;->getStockNumberFormatter()Landroid/icu/text/NumberFormat; -Landroid/icu/text/MessageFormat;->matchStringUntilLimitPart(Landroid/icu/text/MessagePattern;IILjava/lang/String;I)I -Landroid/icu/text/MessageFormat;->modifierList:[Ljava/lang/String; -Landroid/icu/text/MessageFormat;->MODIFIER_CURRENCY:I -Landroid/icu/text/MessageFormat;->MODIFIER_EMPTY:I -Landroid/icu/text/MessageFormat;->MODIFIER_INTEGER:I -Landroid/icu/text/MessageFormat;->MODIFIER_PERCENT:I -Landroid/icu/text/MessageFormat;->msgPattern:Landroid/icu/text/MessagePattern; -Landroid/icu/text/MessageFormat;->nextTopLevelArgStart(I)I -Landroid/icu/text/MessageFormat;->ordinalProvider:Landroid/icu/text/MessageFormat$PluralSelectorProvider; -Landroid/icu/text/MessageFormat;->parse(ILjava/lang/String;Ljava/text/ParsePosition;[Ljava/lang/Object;Ljava/util/Map;)V -Landroid/icu/text/MessageFormat;->parseChoiceArgument(Landroid/icu/text/MessagePattern;ILjava/lang/String;Ljava/text/ParsePosition;)D -Landroid/icu/text/MessageFormat;->pluralProvider:Landroid/icu/text/MessageFormat$PluralSelectorProvider; -Landroid/icu/text/MessageFormat;->resetPattern()V -Landroid/icu/text/MessageFormat;->rootLocale:Ljava/util/Locale; -Landroid/icu/text/MessageFormat;->setArgStartFormat(ILjava/text/Format;)V -Landroid/icu/text/MessageFormat;->setCustomArgStartFormat(ILjava/text/Format;)V -Landroid/icu/text/MessageFormat;->SINGLE_QUOTE:C -Landroid/icu/text/MessageFormat;->STATE_INITIAL:I -Landroid/icu/text/MessageFormat;->STATE_IN_QUOTE:I -Landroid/icu/text/MessageFormat;->STATE_MSG_ELEMENT:I -Landroid/icu/text/MessageFormat;->STATE_SINGLE_QUOTE:I -Landroid/icu/text/MessageFormat;->stockDateFormatter:Landroid/icu/text/DateFormat; -Landroid/icu/text/MessageFormat;->stockNumberFormatter:Landroid/icu/text/NumberFormat; -Landroid/icu/text/MessageFormat;->typeList:[Ljava/lang/String; -Landroid/icu/text/MessageFormat;->TYPE_DATE:I -Landroid/icu/text/MessageFormat;->TYPE_DURATION:I -Landroid/icu/text/MessageFormat;->TYPE_NUMBER:I -Landroid/icu/text/MessageFormat;->TYPE_ORDINAL:I -Landroid/icu/text/MessageFormat;->TYPE_SPELLOUT:I -Landroid/icu/text/MessageFormat;->TYPE_TIME:I -Landroid/icu/text/MessageFormat;->ulocale:Landroid/icu/util/ULocale; -Landroid/icu/text/MessageFormat;->updateMetaData(Landroid/icu/text/MessageFormat$AppendableWrapper;ILjava/text/FieldPosition;Ljava/lang/Object;)Ljava/text/FieldPosition; -Landroid/icu/text/MessagePattern$Part;-><init>(Landroid/icu/text/MessagePattern$Part$Type;III)V -Landroid/icu/text/MessagePattern$Part;->index:I -Landroid/icu/text/MessagePattern$Part;->length:C -Landroid/icu/text/MessagePattern$Part;->limitPartIndex:I -Landroid/icu/text/MessagePattern$Part;->MAX_LENGTH:I -Landroid/icu/text/MessagePattern$Part;->MAX_VALUE:I -Landroid/icu/text/MessagePattern$Part;->type:Landroid/icu/text/MessagePattern$Part$Type; -Landroid/icu/text/MessagePattern$Part;->value:S -Landroid/icu/text/MessagePattern;->addArgDoublePart(DII)V -Landroid/icu/text/MessagePattern;->addLimitPart(ILandroid/icu/text/MessagePattern$Part$Type;III)V -Landroid/icu/text/MessagePattern;->addPart(Landroid/icu/text/MessagePattern$Part$Type;III)V -Landroid/icu/text/MessagePattern;->aposMode:Landroid/icu/text/MessagePattern$ApostropheMode; -Landroid/icu/text/MessagePattern;->appendReducedApostrophes(Ljava/lang/String;IILjava/lang/StringBuilder;)V -Landroid/icu/text/MessagePattern;->argTypes:[Landroid/icu/text/MessagePattern$ArgType; -Landroid/icu/text/MessagePattern;->defaultAposMode:Landroid/icu/text/MessagePattern$ApostropheMode; -Landroid/icu/text/MessagePattern;->frozen:Z -Landroid/icu/text/MessagePattern;->hasArgNames:Z -Landroid/icu/text/MessagePattern;->hasArgNumbers:Z -Landroid/icu/text/MessagePattern;->inMessageFormatPattern(I)Z -Landroid/icu/text/MessagePattern;->inTopLevelChoiceMessage(ILandroid/icu/text/MessagePattern$ArgType;)Z -Landroid/icu/text/MessagePattern;->isArgTypeChar(I)Z -Landroid/icu/text/MessagePattern;->isChoice(I)Z -Landroid/icu/text/MessagePattern;->isOrdinal(I)Z -Landroid/icu/text/MessagePattern;->isPlural(I)Z -Landroid/icu/text/MessagePattern;->isSelect(I)Z -Landroid/icu/text/MessagePattern;->jdkAposMode()Z -Landroid/icu/text/MessagePattern;->MAX_PREFIX_LENGTH:I -Landroid/icu/text/MessagePattern;->msg:Ljava/lang/String; -Landroid/icu/text/MessagePattern;->needsAutoQuoting:Z -Landroid/icu/text/MessagePattern;->numericValues:Ljava/util/ArrayList; -Landroid/icu/text/MessagePattern;->parseArg(III)I -Landroid/icu/text/MessagePattern;->parseArgNumber(II)I -Landroid/icu/text/MessagePattern;->parseArgNumber(Ljava/lang/CharSequence;II)I -Landroid/icu/text/MessagePattern;->parseChoiceStyle(II)I -Landroid/icu/text/MessagePattern;->parseDouble(IIZ)V -Landroid/icu/text/MessagePattern;->parseMessage(IIILandroid/icu/text/MessagePattern$ArgType;)I -Landroid/icu/text/MessagePattern;->parsePluralOrSelectStyle(Landroid/icu/text/MessagePattern$ArgType;II)I -Landroid/icu/text/MessagePattern;->parseSimpleStyle(I)I -Landroid/icu/text/MessagePattern;->parts:Ljava/util/ArrayList; -Landroid/icu/text/MessagePattern;->postParse()V -Landroid/icu/text/MessagePattern;->prefix()Ljava/lang/String; -Landroid/icu/text/MessagePattern;->prefix(I)Ljava/lang/String; -Landroid/icu/text/MessagePattern;->prefix(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/MessagePattern;->prefix(Ljava/lang/String;I)Ljava/lang/String; -Landroid/icu/text/MessagePattern;->preParse(Ljava/lang/String;)V -Landroid/icu/text/MessagePattern;->skipDouble(I)I -Landroid/icu/text/MessagePattern;->skipIdentifier(I)I -Landroid/icu/text/MessagePattern;->skipWhiteSpace(I)I -Landroid/icu/text/MessagePatternUtil$ArgNode;-><init>()V -Landroid/icu/text/MessagePatternUtil$ArgNode;->argType:Landroid/icu/text/MessagePattern$ArgType; -Landroid/icu/text/MessagePatternUtil$ArgNode;->complexStyle:Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode; -Landroid/icu/text/MessagePatternUtil$ArgNode;->createArgNode()Landroid/icu/text/MessagePatternUtil$ArgNode; -Landroid/icu/text/MessagePatternUtil$ArgNode;->getArgType()Landroid/icu/text/MessagePattern$ArgType; -Landroid/icu/text/MessagePatternUtil$ArgNode;->getComplexStyle()Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode; -Landroid/icu/text/MessagePatternUtil$ArgNode;->getName()Ljava/lang/String; -Landroid/icu/text/MessagePatternUtil$ArgNode;->getNumber()I -Landroid/icu/text/MessagePatternUtil$ArgNode;->getSimpleStyle()Ljava/lang/String; -Landroid/icu/text/MessagePatternUtil$ArgNode;->getTypeName()Ljava/lang/String; -Landroid/icu/text/MessagePatternUtil$ArgNode;->name:Ljava/lang/String; -Landroid/icu/text/MessagePatternUtil$ArgNode;->number:I -Landroid/icu/text/MessagePatternUtil$ArgNode;->style:Ljava/lang/String; -Landroid/icu/text/MessagePatternUtil$ArgNode;->typeName:Ljava/lang/String; -Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;-><init>(Landroid/icu/text/MessagePattern$ArgType;)V -Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->addVariant(Landroid/icu/text/MessagePatternUtil$VariantNode;)V -Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->argType:Landroid/icu/text/MessagePattern$ArgType; -Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->explicitOffset:Z -Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->freeze()Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode; -Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->getArgType()Landroid/icu/text/MessagePattern$ArgType; -Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->getOffset()D -Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->getVariants()Ljava/util/List; -Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->getVariantsByType(Ljava/util/List;Ljava/util/List;)Landroid/icu/text/MessagePatternUtil$VariantNode; -Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->hasExplicitOffset()Z -Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->list:Ljava/util/List; -Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode;->offset:D -Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->ARG:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type; -Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->REPLACE_NUMBER:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type; -Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->TEXT:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type; -Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->valueOf(Ljava/lang/String;)Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type; -Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;->values()[Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type; -Landroid/icu/text/MessagePatternUtil$MessageContentsNode;-><init>(Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type;)V -Landroid/icu/text/MessagePatternUtil$MessageContentsNode;->createReplaceNumberNode()Landroid/icu/text/MessagePatternUtil$MessageContentsNode; -Landroid/icu/text/MessagePatternUtil$MessageContentsNode;->getType()Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type; -Landroid/icu/text/MessagePatternUtil$MessageContentsNode;->type:Landroid/icu/text/MessagePatternUtil$MessageContentsNode$Type; -Landroid/icu/text/MessagePatternUtil$MessageNode;-><init>()V -Landroid/icu/text/MessagePatternUtil$MessageNode;->addContentsNode(Landroid/icu/text/MessagePatternUtil$MessageContentsNode;)V -Landroid/icu/text/MessagePatternUtil$MessageNode;->freeze()Landroid/icu/text/MessagePatternUtil$MessageNode; -Landroid/icu/text/MessagePatternUtil$MessageNode;->getContents()Ljava/util/List; -Landroid/icu/text/MessagePatternUtil$MessageNode;->list:Ljava/util/List; -Landroid/icu/text/MessagePatternUtil$Node;-><init>()V -Landroid/icu/text/MessagePatternUtil$TextNode;-><init>(Ljava/lang/String;)V -Landroid/icu/text/MessagePatternUtil$TextNode;->getText()Ljava/lang/String; -Landroid/icu/text/MessagePatternUtil$TextNode;->text:Ljava/lang/String; -Landroid/icu/text/MessagePatternUtil$VariantNode;-><init>()V -Landroid/icu/text/MessagePatternUtil$VariantNode;->getMessage()Landroid/icu/text/MessagePatternUtil$MessageNode; -Landroid/icu/text/MessagePatternUtil$VariantNode;->getSelector()Ljava/lang/String; -Landroid/icu/text/MessagePatternUtil$VariantNode;->getSelectorValue()D -Landroid/icu/text/MessagePatternUtil$VariantNode;->isSelectorNumeric()Z -Landroid/icu/text/MessagePatternUtil$VariantNode;->msgNode:Landroid/icu/text/MessagePatternUtil$MessageNode; -Landroid/icu/text/MessagePatternUtil$VariantNode;->numericValue:D -Landroid/icu/text/MessagePatternUtil$VariantNode;->selector:Ljava/lang/String; -Landroid/icu/text/MessagePatternUtil;-><init>()V -Landroid/icu/text/MessagePatternUtil;->buildArgNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$ArgNode; -Landroid/icu/text/MessagePatternUtil;->buildChoiceStyleNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode; -Landroid/icu/text/MessagePatternUtil;->buildMessageNode(Landroid/icu/text/MessagePattern;)Landroid/icu/text/MessagePatternUtil$MessageNode; -Landroid/icu/text/MessagePatternUtil;->buildMessageNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$MessageNode; -Landroid/icu/text/MessagePatternUtil;->buildMessageNode(Ljava/lang/String;)Landroid/icu/text/MessagePatternUtil$MessageNode; -Landroid/icu/text/MessagePatternUtil;->buildPluralStyleNode(Landroid/icu/text/MessagePattern;IILandroid/icu/text/MessagePattern$ArgType;)Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode; -Landroid/icu/text/MessagePatternUtil;->buildSelectStyleNode(Landroid/icu/text/MessagePattern;II)Landroid/icu/text/MessagePatternUtil$ComplexArgStyleNode; -Landroid/icu/text/NFRule;-><init>(Landroid/icu/text/RuleBasedNumberFormat;Ljava/lang/String;)V -Landroid/icu/text/NFRule;->allIgnorable(Ljava/lang/String;)Z -Landroid/icu/text/NFRule;->baseValue:J -Landroid/icu/text/NFRule;->decimalPoint:C -Landroid/icu/text/NFRule;->doFormat(DLjava/lang/StringBuilder;II)V -Landroid/icu/text/NFRule;->doFormat(JLjava/lang/StringBuilder;II)V -Landroid/icu/text/NFRule;->doParse(Ljava/lang/String;Ljava/text/ParsePosition;ZD)Ljava/lang/Number; -Landroid/icu/text/NFRule;->expectedExponent()S -Landroid/icu/text/NFRule;->exponent:S -Landroid/icu/text/NFRule;->extractSubstitution(Landroid/icu/text/NFRuleSet;Landroid/icu/text/NFRule;)Landroid/icu/text/NFSubstitution; -Landroid/icu/text/NFRule;->extractSubstitutions(Landroid/icu/text/NFRuleSet;Ljava/lang/String;Landroid/icu/text/NFRule;)V -Landroid/icu/text/NFRule;->findText(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/PluralFormat;I)[I -Landroid/icu/text/NFRule;->formatter:Landroid/icu/text/RuleBasedNumberFormat; -Landroid/icu/text/NFRule;->getBaseValue()J -Landroid/icu/text/NFRule;->getDecimalPoint()C -Landroid/icu/text/NFRule;->getDivisor()J -Landroid/icu/text/NFRule;->IMPROPER_FRACTION_RULE:I -Landroid/icu/text/NFRule;->indexOfAnyRulePrefix(Ljava/lang/String;)I -Landroid/icu/text/NFRule;->INFINITY_RULE:I -Landroid/icu/text/NFRule;->makeRules(Ljava/lang/String;Landroid/icu/text/NFRuleSet;Landroid/icu/text/NFRule;Landroid/icu/text/RuleBasedNumberFormat;Ljava/util/List;)V -Landroid/icu/text/NFRule;->MASTER_RULE:I -Landroid/icu/text/NFRule;->matchToDelimiter(Ljava/lang/String;IDLjava/lang/String;Landroid/icu/text/PluralFormat;Ljava/text/ParsePosition;Landroid/icu/text/NFSubstitution;D)Ljava/lang/Number; -Landroid/icu/text/NFRule;->NAN_RULE:I -Landroid/icu/text/NFRule;->NEGATIVE_NUMBER_RULE:I -Landroid/icu/text/NFRule;->parseRuleDescriptor(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/NFRule;->power(JS)J -Landroid/icu/text/NFRule;->prefixLength(Ljava/lang/String;Ljava/lang/String;)I -Landroid/icu/text/NFRule;->PROPER_FRACTION_RULE:I -Landroid/icu/text/NFRule;->radix:I -Landroid/icu/text/NFRule;->rulePatternFormat:Landroid/icu/text/PluralFormat; -Landroid/icu/text/NFRule;->ruleText:Ljava/lang/String; -Landroid/icu/text/NFRule;->RULE_PREFIXES:[Ljava/lang/String; -Landroid/icu/text/NFRule;->setBaseValue(J)V -Landroid/icu/text/NFRule;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V -Landroid/icu/text/NFRule;->shouldRollBack(J)Z -Landroid/icu/text/NFRule;->stripPrefix(Ljava/lang/String;Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/String; -Landroid/icu/text/NFRule;->sub1:Landroid/icu/text/NFSubstitution; -Landroid/icu/text/NFRule;->sub2:Landroid/icu/text/NFSubstitution; -Landroid/icu/text/NFRule;->ZERO:Ljava/lang/Long; -Landroid/icu/text/NFRuleSet;-><init>(Landroid/icu/text/RuleBasedNumberFormat;[Ljava/lang/String;I)V -Landroid/icu/text/NFRuleSet;->findFractionRuleSetRule(D)Landroid/icu/text/NFRule; -Landroid/icu/text/NFRuleSet;->findNormalRule(J)Landroid/icu/text/NFRule; -Landroid/icu/text/NFRuleSet;->findRule(D)Landroid/icu/text/NFRule; -Landroid/icu/text/NFRuleSet;->format(DLjava/lang/StringBuilder;II)V -Landroid/icu/text/NFRuleSet;->format(JLjava/lang/StringBuilder;II)V -Landroid/icu/text/NFRuleSet;->fractionRules:Ljava/util/LinkedList; -Landroid/icu/text/NFRuleSet;->getName()Ljava/lang/String; -Landroid/icu/text/NFRuleSet;->IMPROPER_FRACTION_RULE_INDEX:I -Landroid/icu/text/NFRuleSet;->INFINITY_RULE_INDEX:I -Landroid/icu/text/NFRuleSet;->isFractionRuleSet:Z -Landroid/icu/text/NFRuleSet;->isFractionSet()Z -Landroid/icu/text/NFRuleSet;->isParseable()Z -Landroid/icu/text/NFRuleSet;->isParseable:Z -Landroid/icu/text/NFRuleSet;->isPublic()Z -Landroid/icu/text/NFRuleSet;->lcm(JJ)J -Landroid/icu/text/NFRuleSet;->makeIntoFractionRuleSet()V -Landroid/icu/text/NFRuleSet;->MASTER_RULE_INDEX:I -Landroid/icu/text/NFRuleSet;->name:Ljava/lang/String; -Landroid/icu/text/NFRuleSet;->NAN_RULE_INDEX:I -Landroid/icu/text/NFRuleSet;->NEGATIVE_RULE_INDEX:I -Landroid/icu/text/NFRuleSet;->nonNumericalRules:[Landroid/icu/text/NFRule; -Landroid/icu/text/NFRuleSet;->owner:Landroid/icu/text/RuleBasedNumberFormat; -Landroid/icu/text/NFRuleSet;->parse(Ljava/lang/String;Ljava/text/ParsePosition;D)Ljava/lang/Number; -Landroid/icu/text/NFRuleSet;->parseRules(Ljava/lang/String;)V -Landroid/icu/text/NFRuleSet;->PROPER_FRACTION_RULE_INDEX:I -Landroid/icu/text/NFRuleSet;->RECURSION_LIMIT:I -Landroid/icu/text/NFRuleSet;->rules:[Landroid/icu/text/NFRule; -Landroid/icu/text/NFRuleSet;->setBestFractionRule(ILandroid/icu/text/NFRule;Z)V -Landroid/icu/text/NFRuleSet;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V -Landroid/icu/text/NFRuleSet;->setNonNumericalRule(Landroid/icu/text/NFRule;)V -Landroid/icu/text/NFSubstitution;-><init>(ILandroid/icu/text/NFRuleSet;Ljava/lang/String;)V -Landroid/icu/text/NFSubstitution;->calcUpperBound(D)D -Landroid/icu/text/NFSubstitution;->composeRuleValue(DD)D -Landroid/icu/text/NFSubstitution;->doParse(Ljava/lang/String;Ljava/text/ParsePosition;DDZ)Ljava/lang/Number; -Landroid/icu/text/NFSubstitution;->doSubstitution(DLjava/lang/StringBuilder;II)V -Landroid/icu/text/NFSubstitution;->doSubstitution(JLjava/lang/StringBuilder;II)V -Landroid/icu/text/NFSubstitution;->getPos()I -Landroid/icu/text/NFSubstitution;->isModulusSubstitution()Z -Landroid/icu/text/NFSubstitution;->makeSubstitution(ILandroid/icu/text/NFRule;Landroid/icu/text/NFRule;Landroid/icu/text/NFRuleSet;Landroid/icu/text/RuleBasedNumberFormat;Ljava/lang/String;)Landroid/icu/text/NFSubstitution; -Landroid/icu/text/NFSubstitution;->MAX_INT64_IN_DOUBLE:J -Landroid/icu/text/NFSubstitution;->numberFormat:Landroid/icu/text/DecimalFormat; -Landroid/icu/text/NFSubstitution;->pos:I -Landroid/icu/text/NFSubstitution;->ruleSet:Landroid/icu/text/NFRuleSet; -Landroid/icu/text/NFSubstitution;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V -Landroid/icu/text/NFSubstitution;->setDivisor(IS)V -Landroid/icu/text/NFSubstitution;->tokenChar()C -Landroid/icu/text/NFSubstitution;->transformNumber(D)D -Landroid/icu/text/NFSubstitution;->transformNumber(J)J -Landroid/icu/text/Normalizer$CharsAppendable;-><init>([CII)V -Landroid/icu/text/Normalizer$CharsAppendable;->chars:[C -Landroid/icu/text/Normalizer$CharsAppendable;->length()I -Landroid/icu/text/Normalizer$CharsAppendable;->limit:I -Landroid/icu/text/Normalizer$CharsAppendable;->offset:I -Landroid/icu/text/Normalizer$CharsAppendable;->start:I -Landroid/icu/text/Normalizer$CmpEquivLevel;-><init>()V -Landroid/icu/text/Normalizer$CmpEquivLevel;->cs:Ljava/lang/CharSequence; -Landroid/icu/text/Normalizer$CmpEquivLevel;->s:I -Landroid/icu/text/Normalizer$FCD32ModeImpl;-><init>()V -Landroid/icu/text/Normalizer$FCD32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl; -Landroid/icu/text/Normalizer$FCDMode;-><init>()V -Landroid/icu/text/Normalizer$FCDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2; -Landroid/icu/text/Normalizer$FCDModeImpl;-><init>()V -Landroid/icu/text/Normalizer$FCDModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl; -Landroid/icu/text/Normalizer$Mode;-><init>()V -Landroid/icu/text/Normalizer$Mode;->getNormalizer2(I)Landroid/icu/text/Normalizer2; -Landroid/icu/text/Normalizer$ModeImpl;-><init>(Landroid/icu/text/Normalizer2;)V -Landroid/icu/text/Normalizer$ModeImpl;->normalizer2:Landroid/icu/text/Normalizer2; -Landroid/icu/text/Normalizer$NFC32ModeImpl;-><init>()V -Landroid/icu/text/Normalizer$NFC32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl; -Landroid/icu/text/Normalizer$NFCMode;-><init>()V -Landroid/icu/text/Normalizer$NFCMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2; -Landroid/icu/text/Normalizer$NFCModeImpl;-><init>()V -Landroid/icu/text/Normalizer$NFCModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl; -Landroid/icu/text/Normalizer$NFD32ModeImpl;-><init>()V -Landroid/icu/text/Normalizer$NFD32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl; -Landroid/icu/text/Normalizer$NFDMode;-><init>()V -Landroid/icu/text/Normalizer$NFDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2; -Landroid/icu/text/Normalizer$NFDModeImpl;-><init>()V -Landroid/icu/text/Normalizer$NFDModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl; -Landroid/icu/text/Normalizer$NFKC32ModeImpl;-><init>()V -Landroid/icu/text/Normalizer$NFKC32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl; -Landroid/icu/text/Normalizer$NFKCMode;-><init>()V -Landroid/icu/text/Normalizer$NFKCMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2; -Landroid/icu/text/Normalizer$NFKCModeImpl;-><init>()V -Landroid/icu/text/Normalizer$NFKCModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl; -Landroid/icu/text/Normalizer$NFKD32ModeImpl;-><init>()V -Landroid/icu/text/Normalizer$NFKD32ModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl; -Landroid/icu/text/Normalizer$NFKDMode;-><init>()V -Landroid/icu/text/Normalizer$NFKDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2; -Landroid/icu/text/Normalizer$NFKDModeImpl;-><init>()V -Landroid/icu/text/Normalizer$NFKDModeImpl;->INSTANCE:Landroid/icu/text/Normalizer$ModeImpl; -Landroid/icu/text/Normalizer$NONEMode;-><init>()V -Landroid/icu/text/Normalizer$NONEMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2; -Landroid/icu/text/Normalizer$QuickCheckResult;-><init>(I)V -Landroid/icu/text/Normalizer$Unicode32;-><init>()V -Landroid/icu/text/Normalizer$Unicode32;->INSTANCE:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/Normalizer2;-><init>()V -Landroid/icu/text/Normalizer;-><init>(Landroid/icu/text/UCharacterIterator;Landroid/icu/text/Normalizer$Mode;I)V -Landroid/icu/text/Normalizer;-><init>(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)V -Landroid/icu/text/Normalizer;-><init>(Ljava/text/CharacterIterator;Landroid/icu/text/Normalizer$Mode;I)V -Landroid/icu/text/Normalizer;->buffer:Ljava/lang/StringBuilder; -Landroid/icu/text/Normalizer;->bufferPos:I -Landroid/icu/text/Normalizer;->clearBuffer()V -Landroid/icu/text/Normalizer;->cmpEquivFold(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)I -Landroid/icu/text/Normalizer;->COMPARE_EQUIV:I -Landroid/icu/text/Normalizer;->COMPARE_NORM_OPTIONS_SHIFT:I -Landroid/icu/text/Normalizer;->compose(Ljava/lang/String;Z)Ljava/lang/String; -Landroid/icu/text/Normalizer;->compose(Ljava/lang/String;ZI)Ljava/lang/String; -Landroid/icu/text/Normalizer;->compose([CII[CIIZI)I -Landroid/icu/text/Normalizer;->compose([C[CZI)I -Landroid/icu/text/Normalizer;->COMPOSE:Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->COMPOSE_COMPAT:Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->concatenate(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Ljava/lang/String; -Landroid/icu/text/Normalizer;->concatenate([CII[CII[CIILandroid/icu/text/Normalizer$Mode;I)I -Landroid/icu/text/Normalizer;->concatenate([C[CLandroid/icu/text/Normalizer$Mode;I)Ljava/lang/String; -Landroid/icu/text/Normalizer;->createCmpEquivLevelStack()[Landroid/icu/text/Normalizer$CmpEquivLevel; -Landroid/icu/text/Normalizer;->current()I -Landroid/icu/text/Normalizer;->currentIndex:I -Landroid/icu/text/Normalizer;->DECOMP:Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->decompose(Ljava/lang/String;Z)Ljava/lang/String; -Landroid/icu/text/Normalizer;->decompose(Ljava/lang/String;ZI)Ljava/lang/String; -Landroid/icu/text/Normalizer;->decompose([CII[CIIZI)I -Landroid/icu/text/Normalizer;->decompose([C[CZI)I -Landroid/icu/text/Normalizer;->DECOMP_COMPAT:Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->DEFAULT:Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->DONE:I -Landroid/icu/text/Normalizer;->endIndex()I -Landroid/icu/text/Normalizer;->FCD:Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->first()I -Landroid/icu/text/Normalizer;->getBeginIndex()I -Landroid/icu/text/Normalizer;->getComposeNormalizer2(ZI)Landroid/icu/text/Normalizer2; -Landroid/icu/text/Normalizer;->getDecomposeNormalizer2(ZI)Landroid/icu/text/Normalizer2; -Landroid/icu/text/Normalizer;->getEndIndex()I -Landroid/icu/text/Normalizer;->getFC_NFKC_Closure(I)Ljava/lang/String; -Landroid/icu/text/Normalizer;->getFC_NFKC_Closure(I[C)I -Landroid/icu/text/Normalizer;->getIndex()I -Landroid/icu/text/Normalizer;->getLength()I -Landroid/icu/text/Normalizer;->getMode()Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->getOption(I)I -Landroid/icu/text/Normalizer;->getText()Ljava/lang/String; -Landroid/icu/text/Normalizer;->getText([C)I -Landroid/icu/text/Normalizer;->IGNORE_HANGUL:I -Landroid/icu/text/Normalizer;->internalCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)I -Landroid/icu/text/Normalizer;->isNormalized(ILandroid/icu/text/Normalizer$Mode;I)Z -Landroid/icu/text/Normalizer;->isNormalized(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Z -Landroid/icu/text/Normalizer;->isNormalized([CIILandroid/icu/text/Normalizer$Mode;I)Z -Landroid/icu/text/Normalizer;->last()I -Landroid/icu/text/Normalizer;->mode:Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->next()I -Landroid/icu/text/Normalizer;->nextIndex:I -Landroid/icu/text/Normalizer;->nextNormalize()Z -Landroid/icu/text/Normalizer;->NFC:Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->NFD:Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->NFKC:Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->NFKD:Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->NONE:Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->norm2:Landroid/icu/text/Normalizer2; -Landroid/icu/text/Normalizer;->normalize(ILandroid/icu/text/Normalizer$Mode;)Ljava/lang/String; -Landroid/icu/text/Normalizer;->normalize(ILandroid/icu/text/Normalizer$Mode;I)Ljava/lang/String; -Landroid/icu/text/Normalizer;->normalize(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;)Ljava/lang/String; -Landroid/icu/text/Normalizer;->normalize(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Ljava/lang/String; -Landroid/icu/text/Normalizer;->normalize([CII[CIILandroid/icu/text/Normalizer$Mode;I)I -Landroid/icu/text/Normalizer;->normalize([C[CLandroid/icu/text/Normalizer$Mode;I)I -Landroid/icu/text/Normalizer;->NO_OP:Landroid/icu/text/Normalizer$Mode; -Landroid/icu/text/Normalizer;->options:I -Landroid/icu/text/Normalizer;->previous()I -Landroid/icu/text/Normalizer;->previousNormalize()Z -Landroid/icu/text/Normalizer;->quickCheck(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;)Landroid/icu/text/Normalizer$QuickCheckResult; -Landroid/icu/text/Normalizer;->quickCheck(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Landroid/icu/text/Normalizer$QuickCheckResult; -Landroid/icu/text/Normalizer;->quickCheck([CIILandroid/icu/text/Normalizer$Mode;I)Landroid/icu/text/Normalizer$QuickCheckResult; -Landroid/icu/text/Normalizer;->quickCheck([CLandroid/icu/text/Normalizer$Mode;I)Landroid/icu/text/Normalizer$QuickCheckResult; -Landroid/icu/text/Normalizer;->reset()V -Landroid/icu/text/Normalizer;->setIndex(I)I -Landroid/icu/text/Normalizer;->setIndexOnly(I)V -Landroid/icu/text/Normalizer;->setMode(Landroid/icu/text/Normalizer$Mode;)V -Landroid/icu/text/Normalizer;->setOption(IZ)V -Landroid/icu/text/Normalizer;->setText(Landroid/icu/text/UCharacterIterator;)V -Landroid/icu/text/Normalizer;->setText(Ljava/lang/String;)V -Landroid/icu/text/Normalizer;->setText(Ljava/lang/StringBuffer;)V -Landroid/icu/text/Normalizer;->setText(Ljava/text/CharacterIterator;)V -Landroid/icu/text/Normalizer;->setText([C)V -Landroid/icu/text/Normalizer;->startIndex()I -Landroid/icu/text/Normalizer;->text:Landroid/icu/text/UCharacterIterator; -Landroid/icu/text/Normalizer;->UNICODE_3_2:I -Landroid/icu/text/NumberFormat$NumberFormatFactory;-><init>()V -Landroid/icu/text/NumberFormat$NumberFormatFactory;->createFormat(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat; -Landroid/icu/text/NumberFormat$NumberFormatFactory;->createFormat(Ljava/util/Locale;I)Landroid/icu/text/NumberFormat; -Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_CURRENCY:I -Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_INTEGER:I -Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_NUMBER:I -Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_PERCENT:I -Landroid/icu/text/NumberFormat$NumberFormatFactory;->FORMAT_SCIENTIFIC:I -Landroid/icu/text/NumberFormat$NumberFormatFactory;->getSupportedLocaleNames()Ljava/util/Set; -Landroid/icu/text/NumberFormat$NumberFormatFactory;->visible()Z -Landroid/icu/text/NumberFormat$NumberFormatShim;-><init>()V -Landroid/icu/text/NumberFormat$NumberFormatShim;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat; -Landroid/icu/text/NumberFormat$NumberFormatShim;->getAvailableLocales()[Ljava/util/Locale; -Landroid/icu/text/NumberFormat$NumberFormatShim;->getAvailableULocales()[Landroid/icu/util/ULocale; -Landroid/icu/text/NumberFormat$NumberFormatShim;->registerFactory(Landroid/icu/text/NumberFormat$NumberFormatFactory;)Ljava/lang/Object; -Landroid/icu/text/NumberFormat$NumberFormatShim;->unregister(Ljava/lang/Object;)Z -Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Landroid/icu/util/ULocale;)V -Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Landroid/icu/util/ULocale;Z)V -Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Ljava/util/Locale;)V -Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;-><init>(Ljava/util/Locale;Z)V -Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;->getSupportedLocaleNames()Ljava/util/Set; -Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;->localeNames:Ljava/util/Set; -Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;->visible()Z -Landroid/icu/text/NumberFormat$SimpleNumberFormatFactory;->visible:Z -Landroid/icu/text/NumberFormat;->capitalizationSetting:Landroid/icu/text/DisplayContext; -Landroid/icu/text/NumberFormat;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat; -Landroid/icu/text/NumberFormat;->currency:Landroid/icu/util/Currency; -Landroid/icu/text/NumberFormat;->currentSerialVersion:I -Landroid/icu/text/NumberFormat;->doubleCurrencySign:[C -Landroid/icu/text/NumberFormat;->doubleCurrencyStr:Ljava/lang/String; -Landroid/icu/text/NumberFormat;->getAvailableULocales()[Landroid/icu/util/ULocale; -Landroid/icu/text/NumberFormat;->getEffectiveCurrency()Landroid/icu/util/Currency; -Landroid/icu/text/NumberFormat;->getPattern(Ljava/util/Locale;I)Ljava/lang/String; -Landroid/icu/text/NumberFormat;->getPatternForStyle(Landroid/icu/util/ULocale;I)Ljava/lang/String; -Landroid/icu/text/NumberFormat;->getPatternForStyleAndNumberingSystem(Landroid/icu/util/ULocale;Ljava/lang/String;I)Ljava/lang/String; -Landroid/icu/text/NumberFormat;->getShim()Landroid/icu/text/NumberFormat$NumberFormatShim; -Landroid/icu/text/NumberFormat;->groupingUsed:Z -Landroid/icu/text/NumberFormat;->maxFractionDigits:B -Landroid/icu/text/NumberFormat;->maximumFractionDigits:I -Landroid/icu/text/NumberFormat;->maximumIntegerDigits:I -Landroid/icu/text/NumberFormat;->maxIntegerDigits:B -Landroid/icu/text/NumberFormat;->minFractionDigits:B -Landroid/icu/text/NumberFormat;->minimumFractionDigits:I -Landroid/icu/text/NumberFormat;->minimumIntegerDigits:I -Landroid/icu/text/NumberFormat;->minIntegerDigits:B -Landroid/icu/text/NumberFormat;->parseIntegerOnly:Z -Landroid/icu/text/NumberFormat;->parseStrict:Z -Landroid/icu/text/NumberFormat;->registerFactory(Landroid/icu/text/NumberFormat$NumberFormatFactory;)Ljava/lang/Object; -Landroid/icu/text/NumberFormat;->serialVersionOnStream:I -Landroid/icu/text/NumberFormat;->shim:Landroid/icu/text/NumberFormat$NumberFormatShim; -Landroid/icu/text/NumberFormat;->unregister(Ljava/lang/Object;)Z -Landroid/icu/text/NumberingSystem$LocaleLookupData;-><init>(Landroid/icu/util/ULocale;Ljava/lang/String;)V -Landroid/icu/text/NumberingSystem$LocaleLookupData;->locale:Landroid/icu/util/ULocale; -Landroid/icu/text/NumberingSystem$LocaleLookupData;->numbersKeyword:Ljava/lang/String; -Landroid/icu/text/NumberingSystem;->algorithmic:Z -Landroid/icu/text/NumberingSystem;->cachedLocaleData:Landroid/icu/impl/CacheBase; -Landroid/icu/text/NumberingSystem;->cachedStringData:Landroid/icu/impl/CacheBase; -Landroid/icu/text/NumberingSystem;->desc:Ljava/lang/String; -Landroid/icu/text/NumberingSystem;->getInstance(Ljava/lang/String;IZLjava/lang/String;)Landroid/icu/text/NumberingSystem; -Landroid/icu/text/NumberingSystem;->LATIN:Landroid/icu/text/NumberingSystem; -Landroid/icu/text/NumberingSystem;->lookupInstanceByLocale(Landroid/icu/text/NumberingSystem$LocaleLookupData;)Landroid/icu/text/NumberingSystem; -Landroid/icu/text/NumberingSystem;->lookupInstanceByName(Ljava/lang/String;)Landroid/icu/text/NumberingSystem; -Landroid/icu/text/NumberingSystem;->name:Ljava/lang/String; -Landroid/icu/text/NumberingSystem;->OTHER_NS_KEYWORDS:[Ljava/lang/String; -Landroid/icu/text/NumberingSystem;->radix:I -Landroid/icu/text/PluralFormat$PluralSelector;->select(Ljava/lang/Object;D)Ljava/lang/String; -Landroid/icu/text/PluralFormat$PluralSelectorAdapter;->select(Ljava/lang/Object;D)Ljava/lang/String; -Landroid/icu/text/PluralFormat;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;Ljava/lang/String;Landroid/icu/text/NumberFormat;)V -Landroid/icu/text/PluralFormat;->findSubMessage(Landroid/icu/text/MessagePattern;ILandroid/icu/text/PluralFormat$PluralSelector;Ljava/lang/Object;D)I -Landroid/icu/text/PluralFormat;->format(Ljava/lang/Number;D)Ljava/lang/String; -Landroid/icu/text/PluralFormat;->init(Landroid/icu/text/PluralRules;Landroid/icu/text/PluralRules$PluralType;Landroid/icu/util/ULocale;Landroid/icu/text/NumberFormat;)V -Landroid/icu/text/PluralFormat;->msgPattern:Landroid/icu/text/MessagePattern; -Landroid/icu/text/PluralFormat;->numberFormat:Landroid/icu/text/NumberFormat; -Landroid/icu/text/PluralFormat;->offset:D -Landroid/icu/text/PluralFormat;->parsedValues:Ljava/util/Map; -Landroid/icu/text/PluralFormat;->parseType(Ljava/lang/String;Landroid/icu/text/RbnfLenientScanner;Ljava/text/FieldPosition;)Ljava/lang/String; -Landroid/icu/text/PluralFormat;->pattern:Ljava/lang/String; -Landroid/icu/text/PluralFormat;->pluralRules:Landroid/icu/text/PluralRules; -Landroid/icu/text/PluralFormat;->pluralRulesWrapper:Landroid/icu/text/PluralFormat$PluralSelectorAdapter; -Landroid/icu/text/PluralFormat;->resetPattern()V -Landroid/icu/text/PluralFormat;->setLocale(Landroid/icu/util/ULocale;)V -Landroid/icu/text/PluralFormat;->ulocale:Landroid/icu/util/ULocale; -Landroid/icu/text/PluralRanges$Matrix;-><init>()V -Landroid/icu/text/PluralRanges$Matrix;->compareTo(Landroid/icu/text/PluralRanges$Matrix;)I -Landroid/icu/text/PluralRanges$Matrix;->data:[B -Landroid/icu/text/PluralRanges$Matrix;->endSame(Landroid/icu/impl/StandardPlural;)Landroid/icu/impl/StandardPlural; -Landroid/icu/text/PluralRanges$Matrix;->get(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)Landroid/icu/impl/StandardPlural; -Landroid/icu/text/PluralRanges$Matrix;->set(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V -Landroid/icu/text/PluralRanges$Matrix;->setIfNew(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V -Landroid/icu/text/PluralRanges$Matrix;->startSame(Landroid/icu/impl/StandardPlural;Ljava/util/EnumSet;Landroid/icu/util/Output;)Landroid/icu/impl/StandardPlural; -Landroid/icu/text/PluralRanges;-><init>()V -Landroid/icu/text/PluralRanges;->add(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V -Landroid/icu/text/PluralRanges;->compareTo(Landroid/icu/text/PluralRanges;)I -Landroid/icu/text/PluralRanges;->explicit:[Z -Landroid/icu/text/PluralRanges;->get(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)Landroid/icu/impl/StandardPlural; -Landroid/icu/text/PluralRanges;->isExplicit(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)Z -Landroid/icu/text/PluralRanges;->isExplicitlySet(Landroid/icu/impl/StandardPlural;)Z -Landroid/icu/text/PluralRanges;->isFrozen:Z -Landroid/icu/text/PluralRanges;->matrix:Landroid/icu/text/PluralRanges$Matrix; -Landroid/icu/text/PluralRules$AndConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V -Landroid/icu/text/PluralRules$AndConstraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z -Landroid/icu/text/PluralRules$AndConstraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z -Landroid/icu/text/PluralRules$BinaryConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V -Landroid/icu/text/PluralRules$BinaryConstraint;->a:Landroid/icu/text/PluralRules$Constraint; -Landroid/icu/text/PluralRules$BinaryConstraint;->b:Landroid/icu/text/PluralRules$Constraint; -Landroid/icu/text/PluralRules$Constraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z -Landroid/icu/text/PluralRules$Constraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z -Landroid/icu/text/PluralRules$Factory;-><init>()V -Landroid/icu/text/PluralRules$Factory;->forLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/PluralRules; -Landroid/icu/text/PluralRules$Factory;->forLocale(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;)Landroid/icu/text/PluralRules; -Landroid/icu/text/PluralRules$Factory;->getAvailableULocales()[Landroid/icu/util/ULocale; -Landroid/icu/text/PluralRules$Factory;->getDefaultFactory()Landroid/icu/impl/PluralRulesLoader; -Landroid/icu/text/PluralRules$Factory;->getFunctionalEquivalent(Landroid/icu/util/ULocale;[Z)Landroid/icu/util/ULocale; -Landroid/icu/text/PluralRules$Factory;->hasOverride(Landroid/icu/util/ULocale;)Z -Landroid/icu/text/PluralRules$FixedDecimal;-><init>(D)V -Landroid/icu/text/PluralRules$FixedDecimal;-><init>(DI)V -Landroid/icu/text/PluralRules$FixedDecimal;-><init>(DIJ)V -Landroid/icu/text/PluralRules$FixedDecimal;-><init>(J)V -Landroid/icu/text/PluralRules$FixedDecimal;-><init>(Ljava/lang/String;)V -Landroid/icu/text/PluralRules$FixedDecimal;->baseFactor:I -Landroid/icu/text/PluralRules$FixedDecimal;->compareTo(Landroid/icu/text/PluralRules$FixedDecimal;)I -Landroid/icu/text/PluralRules$FixedDecimal;->decimalDigits:J -Landroid/icu/text/PluralRules$FixedDecimal;->decimalDigitsWithoutTrailingZeros:J -Landroid/icu/text/PluralRules$FixedDecimal;->decimals(D)I -Landroid/icu/text/PluralRules$FixedDecimal;->getBaseFactor()I -Landroid/icu/text/PluralRules$FixedDecimal;->getDecimalDigits()J -Landroid/icu/text/PluralRules$FixedDecimal;->getDecimalDigitsWithoutTrailingZeros()J -Landroid/icu/text/PluralRules$FixedDecimal;->getFractionalDigits(DI)I -Landroid/icu/text/PluralRules$FixedDecimal;->getIntegerValue()J -Landroid/icu/text/PluralRules$FixedDecimal;->getOperand(Ljava/lang/String;)Landroid/icu/text/PluralRules$Operand; -Landroid/icu/text/PluralRules$FixedDecimal;->getPluralOperand(Landroid/icu/text/PluralRules$Operand;)D -Landroid/icu/text/PluralRules$FixedDecimal;->getShiftedValue()J -Landroid/icu/text/PluralRules$FixedDecimal;->getSource()D -Landroid/icu/text/PluralRules$FixedDecimal;->getVisibleDecimalDigitCount()I -Landroid/icu/text/PluralRules$FixedDecimal;->getVisibleDecimalDigitCountWithoutTrailingZeros()I -Landroid/icu/text/PluralRules$FixedDecimal;->getVisibleFractionCount(Ljava/lang/String;)I -Landroid/icu/text/PluralRules$FixedDecimal;->hasIntegerValue()Z -Landroid/icu/text/PluralRules$FixedDecimal;->hasIntegerValue:Z -Landroid/icu/text/PluralRules$FixedDecimal;->integerValue:J -Landroid/icu/text/PluralRules$FixedDecimal;->isHasIntegerValue()Z -Landroid/icu/text/PluralRules$FixedDecimal;->isInfinite()Z -Landroid/icu/text/PluralRules$FixedDecimal;->isNaN()Z -Landroid/icu/text/PluralRules$FixedDecimal;->isNegative()Z -Landroid/icu/text/PluralRules$FixedDecimal;->isNegative:Z -Landroid/icu/text/PluralRules$FixedDecimal;->MAX:J -Landroid/icu/text/PluralRules$FixedDecimal;->MAX_INTEGER_PART:J -Landroid/icu/text/PluralRules$FixedDecimal;->source:D -Landroid/icu/text/PluralRules$FixedDecimal;->visibleDecimalDigitCount:I -Landroid/icu/text/PluralRules$FixedDecimal;->visibleDecimalDigitCountWithoutTrailingZeros:I -Landroid/icu/text/PluralRules$FixedDecimalRange;-><init>(Landroid/icu/text/PluralRules$FixedDecimal;Landroid/icu/text/PluralRules$FixedDecimal;)V -Landroid/icu/text/PluralRules$FixedDecimalRange;->end:Landroid/icu/text/PluralRules$FixedDecimal; -Landroid/icu/text/PluralRules$FixedDecimalRange;->start:Landroid/icu/text/PluralRules$FixedDecimal; -Landroid/icu/text/PluralRules$FixedDecimalSamples;-><init>(Landroid/icu/text/PluralRules$SampleType;Ljava/util/Set;Z)V -Landroid/icu/text/PluralRules$FixedDecimalSamples;->addSamples(Ljava/util/Set;)Ljava/util/Set; -Landroid/icu/text/PluralRules$FixedDecimalSamples;->bounded:Z -Landroid/icu/text/PluralRules$FixedDecimalSamples;->checkDecimal(Landroid/icu/text/PluralRules$SampleType;Landroid/icu/text/PluralRules$FixedDecimal;)V -Landroid/icu/text/PluralRules$FixedDecimalSamples;->getSamples()Ljava/util/Set; -Landroid/icu/text/PluralRules$FixedDecimalSamples;->getStartEndSamples(Ljava/util/Set;)V -Landroid/icu/text/PluralRules$FixedDecimalSamples;->parse(Ljava/lang/String;)Landroid/icu/text/PluralRules$FixedDecimalSamples; -Landroid/icu/text/PluralRules$FixedDecimalSamples;->samples:Ljava/util/Set; -Landroid/icu/text/PluralRules$FixedDecimalSamples;->sampleType:Landroid/icu/text/PluralRules$SampleType; -Landroid/icu/text/PluralRules$IFixedDecimal;->getPluralOperand(Landroid/icu/text/PluralRules$Operand;)D -Landroid/icu/text/PluralRules$IFixedDecimal;->isInfinite()Z -Landroid/icu/text/PluralRules$IFixedDecimal;->isNaN()Z -Landroid/icu/text/PluralRules$KeywordStatus;->BOUNDED:Landroid/icu/text/PluralRules$KeywordStatus; -Landroid/icu/text/PluralRules$KeywordStatus;->INVALID:Landroid/icu/text/PluralRules$KeywordStatus; -Landroid/icu/text/PluralRules$KeywordStatus;->SUPPRESSED:Landroid/icu/text/PluralRules$KeywordStatus; -Landroid/icu/text/PluralRules$KeywordStatus;->UNBOUNDED:Landroid/icu/text/PluralRules$KeywordStatus; -Landroid/icu/text/PluralRules$KeywordStatus;->UNIQUE:Landroid/icu/text/PluralRules$KeywordStatus; -Landroid/icu/text/PluralRules$KeywordStatus;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$KeywordStatus; -Landroid/icu/text/PluralRules$KeywordStatus;->values()[Landroid/icu/text/PluralRules$KeywordStatus; -Landroid/icu/text/PluralRules$Operand;->f:Landroid/icu/text/PluralRules$Operand; -Landroid/icu/text/PluralRules$Operand;->i:Landroid/icu/text/PluralRules$Operand; -Landroid/icu/text/PluralRules$Operand;->j:Landroid/icu/text/PluralRules$Operand; -Landroid/icu/text/PluralRules$Operand;->n:Landroid/icu/text/PluralRules$Operand; -Landroid/icu/text/PluralRules$Operand;->t:Landroid/icu/text/PluralRules$Operand; -Landroid/icu/text/PluralRules$Operand;->v:Landroid/icu/text/PluralRules$Operand; -Landroid/icu/text/PluralRules$Operand;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$Operand; -Landroid/icu/text/PluralRules$Operand;->values()[Landroid/icu/text/PluralRules$Operand; -Landroid/icu/text/PluralRules$Operand;->w:Landroid/icu/text/PluralRules$Operand; -Landroid/icu/text/PluralRules$OrConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V -Landroid/icu/text/PluralRules$OrConstraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z -Landroid/icu/text/PluralRules$OrConstraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z -Landroid/icu/text/PluralRules$RangeConstraint;-><init>(IZLandroid/icu/text/PluralRules$Operand;ZDD[J)V -Landroid/icu/text/PluralRules$RangeConstraint;->inRange:Z -Landroid/icu/text/PluralRules$RangeConstraint;->integersOnly:Z -Landroid/icu/text/PluralRules$RangeConstraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z -Landroid/icu/text/PluralRules$RangeConstraint;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z -Landroid/icu/text/PluralRules$RangeConstraint;->lowerBound:D -Landroid/icu/text/PluralRules$RangeConstraint;->mod:I -Landroid/icu/text/PluralRules$RangeConstraint;->operand:Landroid/icu/text/PluralRules$Operand; -Landroid/icu/text/PluralRules$RangeConstraint;->range_list:[J -Landroid/icu/text/PluralRules$RangeConstraint;->upperBound:D -Landroid/icu/text/PluralRules$Rule;-><init>(Ljava/lang/String;Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$FixedDecimalSamples;Landroid/icu/text/PluralRules$FixedDecimalSamples;)V -Landroid/icu/text/PluralRules$Rule;->and(Landroid/icu/text/PluralRules$Constraint;)Landroid/icu/text/PluralRules$Rule; -Landroid/icu/text/PluralRules$Rule;->appliesTo(Landroid/icu/text/PluralRules$IFixedDecimal;)Z -Landroid/icu/text/PluralRules$Rule;->constraint:Landroid/icu/text/PluralRules$Constraint; -Landroid/icu/text/PluralRules$Rule;->decimalSamples:Landroid/icu/text/PluralRules$FixedDecimalSamples; -Landroid/icu/text/PluralRules$Rule;->getConstraint()Ljava/lang/String; -Landroid/icu/text/PluralRules$Rule;->getKeyword()Ljava/lang/String; -Landroid/icu/text/PluralRules$Rule;->integerSamples:Landroid/icu/text/PluralRules$FixedDecimalSamples; -Landroid/icu/text/PluralRules$Rule;->isLimited(Landroid/icu/text/PluralRules$SampleType;)Z -Landroid/icu/text/PluralRules$Rule;->keyword:Ljava/lang/String; -Landroid/icu/text/PluralRules$Rule;->or(Landroid/icu/text/PluralRules$Constraint;)Landroid/icu/text/PluralRules$Rule; -Landroid/icu/text/PluralRules$RuleList;-><init>()V -Landroid/icu/text/PluralRules$RuleList;->addRule(Landroid/icu/text/PluralRules$Rule;)Landroid/icu/text/PluralRules$RuleList; -Landroid/icu/text/PluralRules$RuleList;->computeLimited(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Z -Landroid/icu/text/PluralRules$RuleList;->finish()Landroid/icu/text/PluralRules$RuleList; -Landroid/icu/text/PluralRules$RuleList;->getDecimalSamples(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Landroid/icu/text/PluralRules$FixedDecimalSamples; -Landroid/icu/text/PluralRules$RuleList;->getKeywords()Ljava/util/Set; -Landroid/icu/text/PluralRules$RuleList;->getRules(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/PluralRules$RuleList;->hasExplicitBoundingInfo:Z -Landroid/icu/text/PluralRules$RuleList;->isLimited(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Z -Landroid/icu/text/PluralRules$RuleList;->rules:Ljava/util/List; -Landroid/icu/text/PluralRules$RuleList;->select(Landroid/icu/text/PluralRules$IFixedDecimal;)Ljava/lang/String; -Landroid/icu/text/PluralRules$RuleList;->select(Landroid/icu/text/PluralRules$IFixedDecimal;Ljava/lang/String;)Z -Landroid/icu/text/PluralRules$RuleList;->selectRule(Landroid/icu/text/PluralRules$IFixedDecimal;)Landroid/icu/text/PluralRules$Rule; -Landroid/icu/text/PluralRules$SampleType;->DECIMAL:Landroid/icu/text/PluralRules$SampleType; -Landroid/icu/text/PluralRules$SampleType;->INTEGER:Landroid/icu/text/PluralRules$SampleType; -Landroid/icu/text/PluralRules$SampleType;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$SampleType; -Landroid/icu/text/PluralRules$SampleType;->values()[Landroid/icu/text/PluralRules$SampleType; -Landroid/icu/text/PluralRules$SimpleTokenizer;-><init>()V -Landroid/icu/text/PluralRules$SimpleTokenizer;->BREAK_AND_IGNORE:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/PluralRules$SimpleTokenizer;->BREAK_AND_KEEP:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/PluralRules$SimpleTokenizer;->split(Ljava/lang/String;)[Ljava/lang/String; -Landroid/icu/text/PluralRules;-><init>(Landroid/icu/text/PluralRules$RuleList;)V -Landroid/icu/text/PluralRules;->addConditional(Ljava/util/Set;Ljava/util/Set;D)Z -Landroid/icu/text/PluralRules;->addRange(Ljava/lang/StringBuilder;DDZ)V -Landroid/icu/text/PluralRules;->addSample(Ljava/lang/String;Ljava/lang/Number;ILjava/util/Set;)Z -Landroid/icu/text/PluralRules;->ALLOWED_ID:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/PluralRules;->AND_SEPARATED:Ljava/util/regex/Pattern; -Landroid/icu/text/PluralRules;->AT_SEPARATED:Ljava/util/regex/Pattern; -Landroid/icu/text/PluralRules;->CATEGORY_SEPARATOR:Ljava/lang/String; -Landroid/icu/text/PluralRules;->COMMA_SEPARATED:Ljava/util/regex/Pattern; -Landroid/icu/text/PluralRules;->compareTo(Landroid/icu/text/PluralRules;)I -Landroid/icu/text/PluralRules;->computeLimited(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Z -Landroid/icu/text/PluralRules;->DEFAULT_RULE:Landroid/icu/text/PluralRules$Rule; -Landroid/icu/text/PluralRules;->DOTDOT_SEPARATED:Ljava/util/regex/Pattern; -Landroid/icu/text/PluralRules;->format(D)Ljava/lang/String; -Landroid/icu/text/PluralRules;->getAllKeywordValues(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Ljava/util/Collection; -Landroid/icu/text/PluralRules;->getAvailableULocales()[Landroid/icu/util/ULocale; -Landroid/icu/text/PluralRules;->getDecimalSamples(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Landroid/icu/text/PluralRules$FixedDecimalSamples; -Landroid/icu/text/PluralRules;->getFunctionalEquivalent(Landroid/icu/util/ULocale;[Z)Landroid/icu/util/ULocale; -Landroid/icu/text/PluralRules;->getKeywordStatus(Ljava/lang/String;ILjava/util/Set;Landroid/icu/util/Output;)Landroid/icu/text/PluralRules$KeywordStatus; -Landroid/icu/text/PluralRules;->getKeywordStatus(Ljava/lang/String;ILjava/util/Set;Landroid/icu/util/Output;Landroid/icu/text/PluralRules$SampleType;)Landroid/icu/text/PluralRules$KeywordStatus; -Landroid/icu/text/PluralRules;->getRules(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/PluralRules;->getSamples(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Ljava/util/Collection; -Landroid/icu/text/PluralRules;->isLimited(Ljava/lang/String;)Ljava/lang/Boolean; -Landroid/icu/text/PluralRules;->isLimited(Ljava/lang/String;Landroid/icu/text/PluralRules$SampleType;)Z -Landroid/icu/text/PluralRules;->isValidKeyword(Ljava/lang/String;)Z -Landroid/icu/text/PluralRules;->keywords:Ljava/util/Set; -Landroid/icu/text/PluralRules;->KEYWORD_RULE_SEPARATOR:Ljava/lang/String; -Landroid/icu/text/PluralRules;->matches(Landroid/icu/text/PluralRules$FixedDecimal;Ljava/lang/String;)Z -Landroid/icu/text/PluralRules;->nextToken([Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String; -Landroid/icu/text/PluralRules;->NO_CONSTRAINT:Landroid/icu/text/PluralRules$Constraint; -Landroid/icu/text/PluralRules;->OR_SEPARATED:Ljava/util/regex/Pattern; -Landroid/icu/text/PluralRules;->parseConstraint(Ljava/lang/String;)Landroid/icu/text/PluralRules$Constraint; -Landroid/icu/text/PluralRules;->parseRule(Ljava/lang/String;)Landroid/icu/text/PluralRules$Rule; -Landroid/icu/text/PluralRules;->parseRuleChain(Ljava/lang/String;)Landroid/icu/text/PluralRules$RuleList; -Landroid/icu/text/PluralRules;->rules:Landroid/icu/text/PluralRules$RuleList; -Landroid/icu/text/PluralRules;->select(DIJ)Ljava/lang/String; -Landroid/icu/text/PluralRules;->select(Landroid/icu/text/PluralRules$IFixedDecimal;)Ljava/lang/String; -Landroid/icu/text/PluralRules;->SEMI_SEPARATED:Ljava/util/regex/Pattern; -Landroid/icu/text/PluralRules;->TILDE_SEPARATED:Ljava/util/regex/Pattern; -Landroid/icu/text/PluralRules;->unexpected(Ljava/lang/String;Ljava/lang/String;)Ljava/text/ParseException; -Landroid/icu/text/PluralSamples;-><init>(Landroid/icu/text/PluralRules;)V -Landroid/icu/text/PluralSamples;->addIfNotPresent(DLjava/util/Set;Ljava/util/Map;)Z -Landroid/icu/text/PluralSamples;->addRelation(Ljava/util/Map;Ljava/lang/String;Landroid/icu/text/PluralRules$FixedDecimal;)V -Landroid/icu/text/PluralSamples;->addSimpleSamples(Landroid/icu/text/PluralRules;ILjava/util/Map;ID)I -Landroid/icu/text/PluralSamples;->fractions(Ljava/util/Set;)Ljava/util/Set; -Landroid/icu/text/PluralSamples;->getAllKeywordValues(Ljava/lang/String;)Ljava/util/Collection; -Landroid/icu/text/PluralSamples;->getDifferentCategory(Ljava/util/List;Ljava/lang/String;)Ljava/lang/Integer; -Landroid/icu/text/PluralSamples;->getFractionSamples()Ljava/util/Set; -Landroid/icu/text/PluralSamples;->getKeyFractionSamplesMap()Ljava/util/Map; -Landroid/icu/text/PluralSamples;->getKeySamplesMap()Ljava/util/Map; -Landroid/icu/text/PluralSamples;->getStatus(Ljava/lang/String;ILjava/util/Set;Landroid/icu/util/Output;)Landroid/icu/text/PluralRules$KeywordStatus; -Landroid/icu/text/PluralSamples;->LIMIT_FRACTION_SAMPLES:I -Landroid/icu/text/PluralSamples;->pluralRules:Landroid/icu/text/PluralRules; -Landroid/icu/text/PluralSamples;->TENS:[I -Landroid/icu/text/PluralSamples;->_fractionSamples:Ljava/util/Set; -Landroid/icu/text/PluralSamples;->_keyFractionSamplesMap:Ljava/util/Map; -Landroid/icu/text/PluralSamples;->_keyLimitedMap:Ljava/util/Map; -Landroid/icu/text/PluralSamples;->_keySamplesMap:Ljava/util/Map; -Landroid/icu/text/RawCollationKey;-><init>()V -Landroid/icu/text/RawCollationKey;-><init>(I)V -Landroid/icu/text/RawCollationKey;-><init>([B)V -Landroid/icu/text/RawCollationKey;-><init>([BI)V -Landroid/icu/text/RawCollationKey;->compareTo(Landroid/icu/text/RawCollationKey;)I -Landroid/icu/text/RBBIDataWrapper$IsAcceptable;-><init>()V -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;-><init>()V -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fCatCount:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fFormatVersion:[B -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fFTable:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fFTableLen:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fLength:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fMagic:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fRTable:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fRTableLen:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fRuleSource:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fRuleSourceLen:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fSFTable:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fSFTableLen:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fSRTable:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fSRTableLen:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fStatusTable:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fStatusTableLen:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fTrie:I -Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader;->fTrieLen:I -Landroid/icu/text/RBBIDataWrapper;-><init>()V -Landroid/icu/text/RBBIDataWrapper;->ACCEPTING:I -Landroid/icu/text/RBBIDataWrapper;->DATA_FORMAT:I -Landroid/icu/text/RBBIDataWrapper;->DH_CATCOUNT:I -Landroid/icu/text/RBBIDataWrapper;->DH_FORMATVERSION:I -Landroid/icu/text/RBBIDataWrapper;->DH_FTABLE:I -Landroid/icu/text/RBBIDataWrapper;->DH_FTABLELEN:I -Landroid/icu/text/RBBIDataWrapper;->DH_LENGTH:I -Landroid/icu/text/RBBIDataWrapper;->DH_MAGIC:I -Landroid/icu/text/RBBIDataWrapper;->DH_RTABLE:I -Landroid/icu/text/RBBIDataWrapper;->DH_RTABLELEN:I -Landroid/icu/text/RBBIDataWrapper;->DH_RULESOURCE:I -Landroid/icu/text/RBBIDataWrapper;->DH_RULESOURCELEN:I -Landroid/icu/text/RBBIDataWrapper;->DH_SFTABLE:I -Landroid/icu/text/RBBIDataWrapper;->DH_SFTABLELEN:I -Landroid/icu/text/RBBIDataWrapper;->DH_SIZE:I -Landroid/icu/text/RBBIDataWrapper;->DH_SRTABLE:I -Landroid/icu/text/RBBIDataWrapper;->DH_SRTABLELEN:I -Landroid/icu/text/RBBIDataWrapper;->DH_STATUSTABLE:I -Landroid/icu/text/RBBIDataWrapper;->DH_STATUSTABLELEN:I -Landroid/icu/text/RBBIDataWrapper;->DH_TRIE:I -Landroid/icu/text/RBBIDataWrapper;->DH_TRIELEN:I -Landroid/icu/text/RBBIDataWrapper;->dump(Ljava/io/PrintStream;)V -Landroid/icu/text/RBBIDataWrapper;->dumpCharCategories(Ljava/io/PrintStream;)V -Landroid/icu/text/RBBIDataWrapper;->dumpRow(Ljava/io/PrintStream;[SI)V -Landroid/icu/text/RBBIDataWrapper;->dumpTable(Ljava/io/PrintStream;[S)V -Landroid/icu/text/RBBIDataWrapper;->fFTable:[S -Landroid/icu/text/RBBIDataWrapper;->fHeader:Landroid/icu/text/RBBIDataWrapper$RBBIDataHeader; -Landroid/icu/text/RBBIDataWrapper;->FLAGS:I -Landroid/icu/text/RBBIDataWrapper;->FORMAT_VERSION:I -Landroid/icu/text/RBBIDataWrapper;->fRTable:[S -Landroid/icu/text/RBBIDataWrapper;->fRuleSource:Ljava/lang/String; -Landroid/icu/text/RBBIDataWrapper;->fSFTable:[S -Landroid/icu/text/RBBIDataWrapper;->fSRTable:[S -Landroid/icu/text/RBBIDataWrapper;->fStatusTable:[I -Landroid/icu/text/RBBIDataWrapper;->fTrie:Landroid/icu/impl/Trie2; -Landroid/icu/text/RBBIDataWrapper;->get(Ljava/nio/ByteBuffer;)Landroid/icu/text/RBBIDataWrapper; -Landroid/icu/text/RBBIDataWrapper;->getRowIndex(I)I -Landroid/icu/text/RBBIDataWrapper;->getStateTableFlags([S)I -Landroid/icu/text/RBBIDataWrapper;->getStateTableNumStates([S)I -Landroid/icu/text/RBBIDataWrapper;->intToHexString(II)Ljava/lang/String; -Landroid/icu/text/RBBIDataWrapper;->intToString(II)Ljava/lang/String; -Landroid/icu/text/RBBIDataWrapper;->isBigEndian:Z -Landroid/icu/text/RBBIDataWrapper;->IS_ACCEPTABLE:Landroid/icu/text/RBBIDataWrapper$IsAcceptable; -Landroid/icu/text/RBBIDataWrapper;->LOOKAHEAD:I -Landroid/icu/text/RBBIDataWrapper;->NEXTSTATES:I -Landroid/icu/text/RBBIDataWrapper;->NUMSTATES:I -Landroid/icu/text/RBBIDataWrapper;->RBBI_BOF_REQUIRED:I -Landroid/icu/text/RBBIDataWrapper;->RBBI_LOOKAHEAD_HARD_BREAK:I -Landroid/icu/text/RBBIDataWrapper;->RESERVED:I -Landroid/icu/text/RBBIDataWrapper;->ROWLEN:I -Landroid/icu/text/RBBIDataWrapper;->ROW_DATA:I -Landroid/icu/text/RBBIDataWrapper;->TAGIDX:I -Landroid/icu/text/RbnfLenientScanner;->allIgnorable(Ljava/lang/String;)Z -Landroid/icu/text/RbnfLenientScanner;->findText(Ljava/lang/String;Ljava/lang/String;I)[I -Landroid/icu/text/RbnfLenientScanner;->prefixLength(Ljava/lang/String;Ljava/lang/String;)I -Landroid/icu/text/RbnfLenientScannerProvider;->get(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/RbnfLenientScanner; -Landroid/icu/text/RBNFPostProcessor;->init(Landroid/icu/text/RuleBasedNumberFormat;Ljava/lang/String;)V -Landroid/icu/text/RBNFPostProcessor;->process(Ljava/lang/StringBuilder;Landroid/icu/text/NFRuleSet;)V -Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;->QUARTER:Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit; -Landroid/icu/text/RelativeDateTimeFormatter$Cache;-><init>()V -Landroid/icu/text/RelativeDateTimeFormatter$Cache;->cache:Landroid/icu/impl/CacheBase; -Landroid/icu/text/RelativeDateTimeFormatter$Cache;->get(Landroid/icu/util/ULocale;)Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData; -Landroid/icu/text/RelativeDateTimeFormatter$Loader;-><init>(Landroid/icu/util/ULocale;)V -Landroid/icu/text/RelativeDateTimeFormatter$Loader;->getDateTimePattern(Landroid/icu/impl/ICUResourceBundle;)Ljava/lang/String; -Landroid/icu/text/RelativeDateTimeFormatter$Loader;->load()Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData; -Landroid/icu/text/RelativeDateTimeFormatter$Loader;->ulocale:Landroid/icu/util/ULocale; -Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap;Ljava/lang/String;)V -Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;->dateTimePattern:Ljava/lang/String; -Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;->qualitativeUnitMap:Ljava/util/EnumMap; -Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;->relUnitPatternMap:Ljava/util/EnumMap; -Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;->QUARTERS:Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->absUnit:Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->DAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->FRIDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->HOUR:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->MINUTE:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->MONDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->MONTH:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->orNullFromString(Ljava/lang/CharSequence;)Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->QUARTER:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->relUnit:Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->SATURDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->SECOND:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->SUNDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->THURSDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->TUESDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->valueOf(Ljava/lang/String;)Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->values()[Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->WEDNESDAY:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->WEEK:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit;->YEAR:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;-><init>()V -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelative(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelativeTime(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTimeDetail(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTimeUnit(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->handleAlias(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->handlePlainDirection(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->pastFutureIndex:I -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->qualitativeUnitMap:Ljava/util/EnumMap; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->sb:Ljava/lang/StringBuilder; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->style:Landroid/icu/text/RelativeDateTimeFormatter$Style; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleFromAlias(Landroid/icu/impl/UResource$Value;)Landroid/icu/text/RelativeDateTimeFormatter$Style; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleFromKey(Landroid/icu/impl/UResource$Key;)Landroid/icu/text/RelativeDateTimeFormatter$Style; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleRelUnitPatterns:Ljava/util/EnumMap; -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->styleSuffixLength(Landroid/icu/text/RelativeDateTimeFormatter$Style;)I -Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->unit:Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink$DateTimeUnit; -Landroid/icu/text/RelativeDateTimeFormatter$Style;->INDEX_COUNT:I -Landroid/icu/text/RelativeDateTimeFormatter;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap;Ljava/lang/String;Landroid/icu/text/PluralRules;Landroid/icu/text/NumberFormat;Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/DisplayContext;Landroid/icu/text/BreakIterator;Landroid/icu/util/ULocale;)V -Landroid/icu/text/RelativeDateTimeFormatter;->adjustForContext(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/RelativeDateTimeFormatter;->breakIterator:Landroid/icu/text/BreakIterator; -Landroid/icu/text/RelativeDateTimeFormatter;->cache:Landroid/icu/text/RelativeDateTimeFormatter$Cache; -Landroid/icu/text/RelativeDateTimeFormatter;->capitalizationContext:Landroid/icu/text/DisplayContext; -Landroid/icu/text/RelativeDateTimeFormatter;->combinedDateAndTime:Ljava/lang/String; -Landroid/icu/text/RelativeDateTimeFormatter;->dateFormatSymbols:Landroid/icu/text/DateFormatSymbols; -Landroid/icu/text/RelativeDateTimeFormatter;->fallbackCache:[Landroid/icu/text/RelativeDateTimeFormatter$Style; -Landroid/icu/text/RelativeDateTimeFormatter;->getAbsoluteUnitString(Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/RelativeDateTimeFormatter$AbsoluteUnit;Landroid/icu/text/RelativeDateTimeFormatter$Direction;)Ljava/lang/String; -Landroid/icu/text/RelativeDateTimeFormatter;->getRelativeUnitPattern(Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;ILandroid/icu/impl/StandardPlural;)Ljava/lang/String; -Landroid/icu/text/RelativeDateTimeFormatter;->getRelativeUnitPluralPattern(Landroid/icu/text/RelativeDateTimeFormatter$Style;Landroid/icu/text/RelativeDateTimeFormatter$RelativeUnit;ILandroid/icu/impl/StandardPlural;)Ljava/lang/String; -Landroid/icu/text/RelativeDateTimeFormatter;->keyToDirection(Landroid/icu/impl/UResource$Key;)Landroid/icu/text/RelativeDateTimeFormatter$Direction; -Landroid/icu/text/RelativeDateTimeFormatter;->locale:Landroid/icu/util/ULocale; -Landroid/icu/text/RelativeDateTimeFormatter;->numberFormat:Landroid/icu/text/NumberFormat; -Landroid/icu/text/RelativeDateTimeFormatter;->patternMap:Ljava/util/EnumMap; -Landroid/icu/text/RelativeDateTimeFormatter;->pluralRules:Landroid/icu/text/PluralRules; -Landroid/icu/text/RelativeDateTimeFormatter;->qualitativeUnitMap:Ljava/util/EnumMap; -Landroid/icu/text/RelativeDateTimeFormatter;->style:Landroid/icu/text/RelativeDateTimeFormatter$Style; -Landroid/icu/text/RelativeDateTimeFormatter;->styleToDateFormatSymbolsWidth:[I -Landroid/icu/text/ReplaceableString;-><init>()V -Landroid/icu/text/ReplaceableString;-><init>(Ljava/lang/String;)V -Landroid/icu/text/ReplaceableString;-><init>(Ljava/lang/StringBuffer;)V -Landroid/icu/text/ReplaceableString;->buf:Ljava/lang/StringBuffer; -Landroid/icu/text/ReplaceableString;->substring(II)Ljava/lang/String; -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->addFollowing(IIZ)V -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->addPreceding(IIZ)Z -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->CACHE_SIZE:I -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->current()I -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->dumpCache()V -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fBoundaries:[I -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fBufIdx:I -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fEndBufIdx:I -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->following(I)V -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fSideBuffer:Landroid/icu/text/DictionaryBreakEngine$DequeI; -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fStartBufIdx:I -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fStatuses:[S -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->fTextIdx:I -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->modChunkSize(I)I -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->next()V -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->populateFollowing()Z -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->populateNear(I)Z -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->populatePreceding()Z -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->preceding(I)V -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->previous()V -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->reset()V -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->reset(II)V -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->RetainCachePosition:Z -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->seek(I)Z -Landroid/icu/text/RuleBasedBreakIterator$BreakCache;->UpdateCachePosition:Z -Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fBoundary:I -Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fBreaks:Landroid/icu/text/DictionaryBreakEngine$DequeI; -Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fFirstRuleStatusIndex:I -Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fLimit:I -Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->following(I)Z -Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fOtherRuleStatusIndex:I -Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fPositionInCache:I -Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fStart:I -Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->fStatusIndex:I -Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->populateDictionary(IIII)V -Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->preceding(I)Z -Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->reset()V -Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;-><init>()V -Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->fKeys:[I -Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->fPositions:[I -Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->fUsedSlotLimit:I -Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->getPosition(I)I -Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->reset()V -Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->setPosition(II)V -Landroid/icu/text/RuleBasedBreakIterator;-><init>()V -Landroid/icu/text/RuleBasedBreakIterator;-><init>(Ljava/lang/String;)V -Landroid/icu/text/RuleBasedBreakIterator;->checkOffset(ILjava/text/CharacterIterator;)V -Landroid/icu/text/RuleBasedBreakIterator;->CISetIndex32(Ljava/text/CharacterIterator;I)I -Landroid/icu/text/RuleBasedBreakIterator;->compileRules(Ljava/lang/String;Ljava/io/OutputStream;)V -Landroid/icu/text/RuleBasedBreakIterator;->dump(Ljava/io/PrintStream;)V -Landroid/icu/text/RuleBasedBreakIterator;->fBreakCache:Landroid/icu/text/RuleBasedBreakIterator$BreakCache; -Landroid/icu/text/RuleBasedBreakIterator;->fBreakEngines:Ljava/util/List; -Landroid/icu/text/RuleBasedBreakIterator;->fBreakType:I -Landroid/icu/text/RuleBasedBreakIterator;->fDebugEnv:Ljava/lang/String; -Landroid/icu/text/RuleBasedBreakIterator;->fDictionaryCache:Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache; -Landroid/icu/text/RuleBasedBreakIterator;->fDictionaryCharCount:I -Landroid/icu/text/RuleBasedBreakIterator;->fDone:Z -Landroid/icu/text/RuleBasedBreakIterator;->fLookAheadMatches:Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults; -Landroid/icu/text/RuleBasedBreakIterator;->fPosition:I -Landroid/icu/text/RuleBasedBreakIterator;->fRData:Landroid/icu/text/RBBIDataWrapper; -Landroid/icu/text/RuleBasedBreakIterator;->fRuleStatusIndex:I -Landroid/icu/text/RuleBasedBreakIterator;->fText:Ljava/text/CharacterIterator; -Landroid/icu/text/RuleBasedBreakIterator;->gAllBreakEngines:Ljava/util/List; -Landroid/icu/text/RuleBasedBreakIterator;->getBreakType()I -Landroid/icu/text/RuleBasedBreakIterator;->getInstanceFromCompiledRules(Ljava/io/InputStream;)Landroid/icu/text/RuleBasedBreakIterator; -Landroid/icu/text/RuleBasedBreakIterator;->getInstanceFromCompiledRules(Ljava/nio/ByteBuffer;)Landroid/icu/text/RuleBasedBreakIterator; -Landroid/icu/text/RuleBasedBreakIterator;->getLanguageBreakEngine(I)Landroid/icu/text/LanguageBreakEngine; -Landroid/icu/text/RuleBasedBreakIterator;->gUnhandledBreakEngine:Landroid/icu/text/UnhandledBreakEngine; -Landroid/icu/text/RuleBasedBreakIterator;->handleNext()I -Landroid/icu/text/RuleBasedBreakIterator;->handlePrevious(I)I -Landroid/icu/text/RuleBasedBreakIterator;->kMaxLookaheads:I -Landroid/icu/text/RuleBasedBreakIterator;->RBBI_DEBUG_ARG:Ljava/lang/String; -Landroid/icu/text/RuleBasedBreakIterator;->RBBI_END:I -Landroid/icu/text/RuleBasedBreakIterator;->RBBI_RUN:I -Landroid/icu/text/RuleBasedBreakIterator;->RBBI_START:I -Landroid/icu/text/RuleBasedBreakIterator;->setBreakType(I)V -Landroid/icu/text/RuleBasedBreakIterator;->START_STATE:I -Landroid/icu/text/RuleBasedBreakIterator;->STOP_STATE:I -Landroid/icu/text/RuleBasedBreakIterator;->TRACE:Z -Landroid/icu/text/RuleBasedCollator$CollationBuffer;-><init>(Landroid/icu/impl/coll/CollationData;)V -Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftFCDUTF16Iter:Landroid/icu/impl/coll/FCDUTF16CollationIterator; -Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftFCDUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator; -Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftUTF16CollIter:Landroid/icu/impl/coll/UTF16CollationIterator; -Landroid/icu/text/RuleBasedCollator$CollationBuffer;->leftUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator; -Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rawCollationKey:Landroid/icu/text/RawCollationKey; -Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightFCDUTF16Iter:Landroid/icu/impl/coll/FCDUTF16CollationIterator; -Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightFCDUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator; -Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightUTF16CollIter:Landroid/icu/impl/coll/UTF16CollationIterator; -Landroid/icu/text/RuleBasedCollator$CollationBuffer;->rightUTF16NFDIter:Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator; -Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;-><init>(Landroid/icu/text/RawCollationKey;)V -Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;->key_:Landroid/icu/text/RawCollationKey; -Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;-><init>()V -Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;->setText(Landroid/icu/impl/Normalizer2Impl;Ljava/lang/CharSequence;I)V -Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;->str:Ljava/lang/StringBuilder; -Landroid/icu/text/RuleBasedCollator$NFDIterator;-><init>()V -Landroid/icu/text/RuleBasedCollator$NFDIterator;->decomp:Ljava/lang/String; -Landroid/icu/text/RuleBasedCollator$NFDIterator;->index:I -Landroid/icu/text/RuleBasedCollator$NFDIterator;->nextCodePoint()I -Landroid/icu/text/RuleBasedCollator$NFDIterator;->nextDecomposedCodePoint(Landroid/icu/impl/Normalizer2Impl;I)I -Landroid/icu/text/RuleBasedCollator$NFDIterator;->nextRawCodePoint()I -Landroid/icu/text/RuleBasedCollator$NFDIterator;->reset()V -Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;-><init>()V -Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->nextRawCodePoint()I -Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->pos:I -Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->s:Ljava/lang/CharSequence; -Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;->setText(Ljava/lang/CharSequence;I)V -Landroid/icu/text/RuleBasedCollator;-><init>(Landroid/icu/impl/coll/CollationTailoring;Landroid/icu/util/ULocale;)V -Landroid/icu/text/RuleBasedCollator;->actualLocaleIsSameAsValid:Z -Landroid/icu/text/RuleBasedCollator;->adoptTailoring(Landroid/icu/impl/coll/CollationTailoring;)V -Landroid/icu/text/RuleBasedCollator;->checkNotFrozen()V -Landroid/icu/text/RuleBasedCollator;->collationBuffer:Landroid/icu/text/RuleBasedCollator$CollationBuffer; -Landroid/icu/text/RuleBasedCollator;->compareNFDIter(Landroid/icu/impl/Normalizer2Impl;Landroid/icu/text/RuleBasedCollator$NFDIterator;Landroid/icu/text/RuleBasedCollator$NFDIterator;)I -Landroid/icu/text/RuleBasedCollator;->data:Landroid/icu/impl/coll/CollationData; -Landroid/icu/text/RuleBasedCollator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I -Landroid/icu/text/RuleBasedCollator;->frozenLock:Ljava/util/concurrent/locks/Lock; -Landroid/icu/text/RuleBasedCollator;->getCollationBuffer()Landroid/icu/text/RuleBasedCollator$CollationBuffer; -Landroid/icu/text/RuleBasedCollator;->getCollationKey(Ljava/lang/String;Landroid/icu/text/RuleBasedCollator$CollationBuffer;)Landroid/icu/text/CollationKey; -Landroid/icu/text/RuleBasedCollator;->getDefaultSettings()Landroid/icu/impl/coll/CollationSettings; -Landroid/icu/text/RuleBasedCollator;->getOwnedSettings()Landroid/icu/impl/coll/CollationSettings; -Landroid/icu/text/RuleBasedCollator;->getRawCollationKey(Ljava/lang/CharSequence;Landroid/icu/text/RawCollationKey;Landroid/icu/text/RuleBasedCollator$CollationBuffer;)Landroid/icu/text/RawCollationKey; -Landroid/icu/text/RuleBasedCollator;->getRawCollationKey(Ljava/lang/String;Landroid/icu/text/RawCollationKey;)Landroid/icu/text/RawCollationKey; -Landroid/icu/text/RuleBasedCollator;->initMaxExpansions()V -Landroid/icu/text/RuleBasedCollator;->internalAddContractions(ILandroid/icu/text/UnicodeSet;)V -Landroid/icu/text/RuleBasedCollator;->internalBuildTailoring(Ljava/lang/String;)V -Landroid/icu/text/RuleBasedCollator;->internalGetCEs(Ljava/lang/CharSequence;)[J -Landroid/icu/text/RuleBasedCollator;->internalSetVariableTop(J)V -Landroid/icu/text/RuleBasedCollator;->isHiraganaQuaternary()Z -Landroid/icu/text/RuleBasedCollator;->isUnsafe(I)Z -Landroid/icu/text/RuleBasedCollator;->releaseCollationBuffer(Landroid/icu/text/RuleBasedCollator$CollationBuffer;)V -Landroid/icu/text/RuleBasedCollator;->setFastLatinOptions(Landroid/icu/impl/coll/CollationSettings;)V -Landroid/icu/text/RuleBasedCollator;->setHiraganaQuaternary(Z)V -Landroid/icu/text/RuleBasedCollator;->setHiraganaQuaternaryDefault()V -Landroid/icu/text/RuleBasedCollator;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V -Landroid/icu/text/RuleBasedCollator;->settings:Landroid/icu/impl/coll/SharedObject$Reference; -Landroid/icu/text/RuleBasedCollator;->setVariableTop(I)V -Landroid/icu/text/RuleBasedCollator;->setVariableTop(Ljava/lang/String;)I -Landroid/icu/text/RuleBasedCollator;->simpleKeyLengthEstimate(Ljava/lang/CharSequence;)I -Landroid/icu/text/RuleBasedCollator;->tailoring:Landroid/icu/impl/coll/CollationTailoring; -Landroid/icu/text/RuleBasedCollator;->validLocale:Landroid/icu/util/ULocale; -Landroid/icu/text/RuleBasedCollator;->writeIdenticalLevel(Ljava/lang/CharSequence;Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;)V -Landroid/icu/text/RuleBasedCollator;->writeSortKey(Ljava/lang/CharSequence;Landroid/icu/text/RuleBasedCollator$CollationKeyByteSink;Landroid/icu/text/RuleBasedCollator$CollationBuffer;)V -Landroid/icu/text/RuleBasedNumberFormat;-><init>(I)V -Landroid/icu/text/RuleBasedNumberFormat;-><init>(Landroid/icu/util/ULocale;I)V -Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;)V -Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;)V -Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;Ljava/util/Locale;)V -Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;[[Ljava/lang/String;)V -Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/lang/String;[[Ljava/lang/String;Landroid/icu/util/ULocale;)V -Landroid/icu/text/RuleBasedNumberFormat;-><init>(Ljava/util/Locale;I)V -Landroid/icu/text/RuleBasedNumberFormat;->adjustForContext(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->capitalizationBrkIter:Landroid/icu/text/BreakIterator; -Landroid/icu/text/RuleBasedNumberFormat;->capitalizationForListOrMenu:Z -Landroid/icu/text/RuleBasedNumberFormat;->capitalizationForStandAlone:Z -Landroid/icu/text/RuleBasedNumberFormat;->capitalizationInfoIsSet:Z -Landroid/icu/text/RuleBasedNumberFormat;->createPluralFormat(Landroid/icu/text/PluralRules$PluralType;Ljava/lang/String;)Landroid/icu/text/PluralFormat; -Landroid/icu/text/RuleBasedNumberFormat;->DEBUG:Z -Landroid/icu/text/RuleBasedNumberFormat;->decimalFormat:Landroid/icu/text/DecimalFormat; -Landroid/icu/text/RuleBasedNumberFormat;->decimalFormatSymbols:Landroid/icu/text/DecimalFormatSymbols; -Landroid/icu/text/RuleBasedNumberFormat;->defaultInfinityRule:Landroid/icu/text/NFRule; -Landroid/icu/text/RuleBasedNumberFormat;->defaultNaNRule:Landroid/icu/text/NFRule; -Landroid/icu/text/RuleBasedNumberFormat;->defaultRuleSet:Landroid/icu/text/NFRuleSet; -Landroid/icu/text/RuleBasedNumberFormat;->DURATION:I -Landroid/icu/text/RuleBasedNumberFormat;->extractSpecial(Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->findRuleSet(Ljava/lang/String;)Landroid/icu/text/NFRuleSet; -Landroid/icu/text/RuleBasedNumberFormat;->format(DLandroid/icu/text/NFRuleSet;)Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->format(DLjava/lang/String;)Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->format(JLandroid/icu/text/NFRuleSet;)Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->format(JLjava/lang/String;)Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->getDecimalFormat()Landroid/icu/text/DecimalFormat; -Landroid/icu/text/RuleBasedNumberFormat;->getDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols; -Landroid/icu/text/RuleBasedNumberFormat;->getDefaultInfinityRule()Landroid/icu/text/NFRule; -Landroid/icu/text/RuleBasedNumberFormat;->getDefaultNaNRule()Landroid/icu/text/NFRule; -Landroid/icu/text/RuleBasedNumberFormat;->getDefaultRuleSet()Landroid/icu/text/NFRuleSet; -Landroid/icu/text/RuleBasedNumberFormat;->getDefaultRuleSetName()Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->getLenientScanner()Landroid/icu/text/RbnfLenientScanner; -Landroid/icu/text/RuleBasedNumberFormat;->getLenientScannerProvider()Landroid/icu/text/RbnfLenientScannerProvider; -Landroid/icu/text/RuleBasedNumberFormat;->getNameListForLocale(Landroid/icu/util/ULocale;)[Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayName(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayName(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayNameLocales()[Landroid/icu/util/ULocale; -Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayNames()[Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetDisplayNames(Landroid/icu/util/ULocale;)[Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->getRuleSetNames()[Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->init(Ljava/lang/String;[[Ljava/lang/String;)V -Landroid/icu/text/RuleBasedNumberFormat;->initCapitalizationContextInfo(Landroid/icu/util/ULocale;)V -Landroid/icu/text/RuleBasedNumberFormat;->initLocalizations([[Ljava/lang/String;)V -Landroid/icu/text/RuleBasedNumberFormat;->lenientParse:Z -Landroid/icu/text/RuleBasedNumberFormat;->lenientParseEnabled()Z -Landroid/icu/text/RuleBasedNumberFormat;->lenientParseRules:Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->locale:Landroid/icu/util/ULocale; -Landroid/icu/text/RuleBasedNumberFormat;->locnames:[Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->lookedForScanner:Z -Landroid/icu/text/RuleBasedNumberFormat;->MAX_VALUE:Landroid/icu/math/BigDecimal; -Landroid/icu/text/RuleBasedNumberFormat;->MIN_VALUE:Landroid/icu/math/BigDecimal; -Landroid/icu/text/RuleBasedNumberFormat;->NUMBERING_SYSTEM:I -Landroid/icu/text/RuleBasedNumberFormat;->ORDINAL:I -Landroid/icu/text/RuleBasedNumberFormat;->postProcess(Ljava/lang/StringBuilder;Landroid/icu/text/NFRuleSet;)V -Landroid/icu/text/RuleBasedNumberFormat;->postProcessor:Landroid/icu/text/RBNFPostProcessor; -Landroid/icu/text/RuleBasedNumberFormat;->postProcessRules:Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->publicRuleSetNames:[Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->roundingMode:I -Landroid/icu/text/RuleBasedNumberFormat;->rulenames:[Ljava/lang/String; -Landroid/icu/text/RuleBasedNumberFormat;->ruleSetDisplayNames:Ljava/util/Map; -Landroid/icu/text/RuleBasedNumberFormat;->ruleSets:[Landroid/icu/text/NFRuleSet; -Landroid/icu/text/RuleBasedNumberFormat;->ruleSetsMap:Ljava/util/Map; -Landroid/icu/text/RuleBasedNumberFormat;->scannerProvider:Landroid/icu/text/RbnfLenientScannerProvider; -Landroid/icu/text/RuleBasedNumberFormat;->setDecimalFormatSymbols(Landroid/icu/text/DecimalFormatSymbols;)V -Landroid/icu/text/RuleBasedNumberFormat;->setDefaultRuleSet(Ljava/lang/String;)V -Landroid/icu/text/RuleBasedNumberFormat;->setLenientParseMode(Z)V -Landroid/icu/text/RuleBasedNumberFormat;->setLenientScannerProvider(Landroid/icu/text/RbnfLenientScannerProvider;)V -Landroid/icu/text/RuleBasedNumberFormat;->SPELLOUT:I -Landroid/icu/text/RuleBasedNumberFormat;->stripWhitespace(Ljava/lang/String;)Ljava/lang/StringBuilder; -Landroid/icu/text/RuleBasedTransliterator$Data;-><init>()V -Landroid/icu/text/RuleBasedTransliterator$Data;->lookupMatcher(I)Landroid/icu/text/UnicodeMatcher; -Landroid/icu/text/RuleBasedTransliterator$Data;->lookupReplacer(I)Landroid/icu/text/UnicodeReplacer; -Landroid/icu/text/RuleBasedTransliterator$Data;->ruleSet:Landroid/icu/text/TransliterationRuleSet; -Landroid/icu/text/RuleBasedTransliterator$Data;->variableNames:Ljava/util/Map; -Landroid/icu/text/RuleBasedTransliterator$Data;->variables:[Ljava/lang/Object; -Landroid/icu/text/RuleBasedTransliterator$Data;->variablesBase:C -Landroid/icu/text/RuleBasedTransliterator;-><init>(Ljava/lang/String;Landroid/icu/text/RuleBasedTransliterator$Data;Landroid/icu/text/UnicodeFilter;)V -Landroid/icu/text/RuleBasedTransliterator;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V -Landroid/icu/text/RuleBasedTransliterator;->data:Landroid/icu/text/RuleBasedTransliterator$Data; -Landroid/icu/text/RuleBasedTransliterator;->handleTransliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)V -Landroid/icu/text/RuleBasedTransliterator;->safeClone()Landroid/icu/text/Transliterator; -Landroid/icu/text/RuleBasedTransliterator;->toRules(Z)Ljava/lang/String; -Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;->beginMarkup:Ljava/lang/String; -Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;->endMarkup:Ljava/lang/String; -Landroid/icu/text/ScientificNumberFormatter$MarkupStyle;->format(Ljava/text/AttributedCharacterIterator;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/ScientificNumberFormatter$Style;-><init>()V -Landroid/icu/text/ScientificNumberFormatter$Style;->append(Ljava/text/AttributedCharacterIterator;IILjava/lang/StringBuilder;)V -Landroid/icu/text/ScientificNumberFormatter$Style;->format(Ljava/text/AttributedCharacterIterator;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;-><init>()V -Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->char32AtAndAdvance(Ljava/text/AttributedCharacterIterator;)I -Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->copyAsSuperscript(Ljava/text/AttributedCharacterIterator;IILjava/lang/StringBuilder;)V -Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->format(Ljava/text/AttributedCharacterIterator;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->SUPERSCRIPT_DIGITS:[C -Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->SUPERSCRIPT_MINUS_SIGN:C -Landroid/icu/text/ScientificNumberFormatter$SuperscriptStyle;->SUPERSCRIPT_PLUS_SIGN:C -Landroid/icu/text/ScientificNumberFormatter;-><init>(Landroid/icu/text/DecimalFormat;Ljava/lang/String;Landroid/icu/text/ScientificNumberFormatter$Style;)V -Landroid/icu/text/ScientificNumberFormatter;->fmt:Landroid/icu/text/DecimalFormat; -Landroid/icu/text/ScientificNumberFormatter;->getInstance(Landroid/icu/text/DecimalFormat;Landroid/icu/text/ScientificNumberFormatter$Style;)Landroid/icu/text/ScientificNumberFormatter; -Landroid/icu/text/ScientificNumberFormatter;->getInstanceForLocale(Landroid/icu/util/ULocale;Landroid/icu/text/ScientificNumberFormatter$Style;)Landroid/icu/text/ScientificNumberFormatter; -Landroid/icu/text/ScientificNumberFormatter;->getPreExponent(Landroid/icu/text/DecimalFormatSymbols;)Ljava/lang/String; -Landroid/icu/text/ScientificNumberFormatter;->preExponent:Ljava/lang/String; -Landroid/icu/text/ScientificNumberFormatter;->style:Landroid/icu/text/ScientificNumberFormatter$Style; -Landroid/icu/text/ScientificNumberFormatter;->SUPER_SCRIPT:Landroid/icu/text/ScientificNumberFormatter$Style; -Landroid/icu/text/SCSU;->ARMENIANINDEX:I -Landroid/icu/text/SCSU;->COMPRESSIONOFFSET:I -Landroid/icu/text/SCSU;->GREEKINDEX:I -Landroid/icu/text/SCSU;->HALFWIDTHKATAKANAINDEX:I -Landroid/icu/text/SCSU;->HIRAGANAINDEX:I -Landroid/icu/text/SCSU;->INVALIDCHAR:I -Landroid/icu/text/SCSU;->INVALIDWINDOW:I -Landroid/icu/text/SCSU;->IPAEXTENSIONINDEX:I -Landroid/icu/text/SCSU;->KATAKANAINDEX:I -Landroid/icu/text/SCSU;->LATININDEX:I -Landroid/icu/text/SCSU;->MAXINDEX:I -Landroid/icu/text/SCSU;->NUMSTATICWINDOWS:I -Landroid/icu/text/SCSU;->NUMWINDOWS:I -Landroid/icu/text/SCSU;->RESERVEDINDEX:I -Landroid/icu/text/SCSU;->SCHANGE0:I -Landroid/icu/text/SCSU;->SCHANGE1:I -Landroid/icu/text/SCSU;->SCHANGE2:I -Landroid/icu/text/SCSU;->SCHANGE3:I -Landroid/icu/text/SCSU;->SCHANGE4:I -Landroid/icu/text/SCSU;->SCHANGE5:I -Landroid/icu/text/SCSU;->SCHANGE6:I -Landroid/icu/text/SCSU;->SCHANGE7:I -Landroid/icu/text/SCSU;->SCHANGEU:I -Landroid/icu/text/SCSU;->SDEFINE0:I -Landroid/icu/text/SCSU;->SDEFINE1:I -Landroid/icu/text/SCSU;->SDEFINE2:I -Landroid/icu/text/SCSU;->SDEFINE3:I -Landroid/icu/text/SCSU;->SDEFINE4:I -Landroid/icu/text/SCSU;->SDEFINE5:I -Landroid/icu/text/SCSU;->SDEFINE6:I -Landroid/icu/text/SCSU;->SDEFINE7:I -Landroid/icu/text/SCSU;->SDEFINEX:I -Landroid/icu/text/SCSU;->SINGLEBYTEMODE:I -Landroid/icu/text/SCSU;->sOffsets:[I -Landroid/icu/text/SCSU;->sOffsetTable:[I -Landroid/icu/text/SCSU;->SQUOTE0:I -Landroid/icu/text/SCSU;->SQUOTE1:I -Landroid/icu/text/SCSU;->SQUOTE2:I -Landroid/icu/text/SCSU;->SQUOTE3:I -Landroid/icu/text/SCSU;->SQUOTE4:I -Landroid/icu/text/SCSU;->SQUOTE5:I -Landroid/icu/text/SCSU;->SQUOTE6:I -Landroid/icu/text/SCSU;->SQUOTE7:I -Landroid/icu/text/SCSU;->SQUOTEU:I -Landroid/icu/text/SCSU;->SRESERVED:I -Landroid/icu/text/SCSU;->UCHANGE0:I -Landroid/icu/text/SCSU;->UCHANGE1:I -Landroid/icu/text/SCSU;->UCHANGE2:I -Landroid/icu/text/SCSU;->UCHANGE3:I -Landroid/icu/text/SCSU;->UCHANGE4:I -Landroid/icu/text/SCSU;->UCHANGE5:I -Landroid/icu/text/SCSU;->UCHANGE6:I -Landroid/icu/text/SCSU;->UCHANGE7:I -Landroid/icu/text/SCSU;->UDEFINE0:I -Landroid/icu/text/SCSU;->UDEFINE1:I -Landroid/icu/text/SCSU;->UDEFINE2:I -Landroid/icu/text/SCSU;->UDEFINE3:I -Landroid/icu/text/SCSU;->UDEFINE4:I -Landroid/icu/text/SCSU;->UDEFINE5:I -Landroid/icu/text/SCSU;->UDEFINE6:I -Landroid/icu/text/SCSU;->UDEFINE7:I -Landroid/icu/text/SCSU;->UDEFINEX:I -Landroid/icu/text/SCSU;->UNICODEMODE:I -Landroid/icu/text/SCSU;->UQUOTEU:I -Landroid/icu/text/SCSU;->URESERVED:I -Landroid/icu/text/SearchIterator$Search;->beginIndex()I -Landroid/icu/text/SearchIterator$Search;->breakIter()Landroid/icu/text/BreakIterator; -Landroid/icu/text/SearchIterator$Search;->elementComparisonType_:Landroid/icu/text/SearchIterator$ElementComparisonType; -Landroid/icu/text/SearchIterator$Search;->endIndex()I -Landroid/icu/text/SearchIterator$Search;->internalBreakIter_:Landroid/icu/text/BreakIterator; -Landroid/icu/text/SearchIterator$Search;->isCanonicalMatch_:Z -Landroid/icu/text/SearchIterator$Search;->isForwardSearching_:Z -Landroid/icu/text/SearchIterator$Search;->isOverlap_:Z -Landroid/icu/text/SearchIterator$Search;->matchedIndex_:I -Landroid/icu/text/SearchIterator$Search;->matchedLength()I -Landroid/icu/text/SearchIterator$Search;->reset_:Z -Landroid/icu/text/SearchIterator$Search;->setBreakIter(Landroid/icu/text/BreakIterator;)V -Landroid/icu/text/SearchIterator$Search;->setMatchedLength(I)V -Landroid/icu/text/SearchIterator$Search;->setTarget(Ljava/text/CharacterIterator;)V -Landroid/icu/text/SearchIterator$Search;->text()Ljava/text/CharacterIterator; -Landroid/icu/text/SearchIterator;->search_:Landroid/icu/text/SearchIterator$Search; -Landroid/icu/text/SearchIterator;->setMatchNotFound()V -Landroid/icu/text/SelectFormat;->findSubMessage(Landroid/icu/text/MessagePattern;ILjava/lang/String;)I -Landroid/icu/text/SelectFormat;->msgPattern:Landroid/icu/text/MessagePattern; -Landroid/icu/text/SelectFormat;->pattern:Ljava/lang/String; -Landroid/icu/text/SelectFormat;->reset()V -Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE:Landroid/icu/text/SimpleDateFormat$ContextValue; -Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE:Landroid/icu/text/SimpleDateFormat$ContextValue; -Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_STANDALONE:Landroid/icu/text/SimpleDateFormat$ContextValue; -Landroid/icu/text/SimpleDateFormat$ContextValue;->CAPITALIZATION_FOR_UI_LIST_OR_MENU:Landroid/icu/text/SimpleDateFormat$ContextValue; -Landroid/icu/text/SimpleDateFormat$ContextValue;->UNKNOWN:Landroid/icu/text/SimpleDateFormat$ContextValue; -Landroid/icu/text/SimpleDateFormat$ContextValue;->valueOf(Ljava/lang/String;)Landroid/icu/text/SimpleDateFormat$ContextValue; -Landroid/icu/text/SimpleDateFormat$ContextValue;->values()[Landroid/icu/text/SimpleDateFormat$ContextValue; -Landroid/icu/text/SimpleDateFormat$PatternItem;-><init>(CI)V -Landroid/icu/text/SimpleDateFormat$PatternItem;->isNumeric:Z -Landroid/icu/text/SimpleDateFormat$PatternItem;->length:I -Landroid/icu/text/SimpleDateFormat$PatternItem;->type:C -Landroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/Calendar;Landroid/icu/text/NumberFormat;Landroid/icu/util/ULocale;ZLjava/lang/String;)V -Landroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;ZLjava/lang/String;)V -Landroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/ULocale;)V -Landroid/icu/text/SimpleDateFormat;->allowNumericFallback(I)Z -Landroid/icu/text/SimpleDateFormat;->cachedDefaultLocale:Landroid/icu/util/ULocale; -Landroid/icu/text/SimpleDateFormat;->cachedDefaultPattern:Ljava/lang/String; -Landroid/icu/text/SimpleDateFormat;->CALENDAR_FIELD_TO_LEVEL:[I -Landroid/icu/text/SimpleDateFormat;->capitalizationBrkIter:Landroid/icu/text/BreakIterator; -Landroid/icu/text/SimpleDateFormat;->countDigits(Ljava/lang/String;II)I -Landroid/icu/text/SimpleDateFormat;->currentSerialVersion:I -Landroid/icu/text/SimpleDateFormat;->DATE_PATTERN_TYPE:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/SimpleDateFormat;->decDigits:[C -Landroid/icu/text/SimpleDateFormat;->decimalBuf:[C -Landroid/icu/text/SimpleDateFormat;->DECIMAL_BUF_SIZE:I -Landroid/icu/text/SimpleDateFormat;->defaultCenturyBase:J -Landroid/icu/text/SimpleDateFormat;->defaultCenturyStart:Ljava/util/Date; -Landroid/icu/text/SimpleDateFormat;->defaultCenturyStartYear:I -Landroid/icu/text/SimpleDateFormat;->DelayedHebrewMonthCheck:Z -Landroid/icu/text/SimpleDateFormat;->diffCalFieldValue(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;[Ljava/lang/Object;I)Z -Landroid/icu/text/SimpleDateFormat;->FALLBACKPATTERN:Ljava/lang/String; -Landroid/icu/text/SimpleDateFormat;->fastZeroPaddingNumber(Ljava/lang/StringBuffer;III)V -Landroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/text/DisplayContext;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer; -Landroid/icu/text/SimpleDateFormat;->formatData:Landroid/icu/text/DateFormatSymbols; -Landroid/icu/text/SimpleDateFormat;->getDefaultCenturyStart()Ljava/util/Date; -Landroid/icu/text/SimpleDateFormat;->getDefaultCenturyStartYear()I -Landroid/icu/text/SimpleDateFormat;->getDefaultPattern()Ljava/lang/String; -Landroid/icu/text/SimpleDateFormat;->getIndexFromChar(C)I -Landroid/icu/text/SimpleDateFormat;->getInstance(Landroid/icu/util/Calendar$FormatConfiguration;)Landroid/icu/text/SimpleDateFormat; -Landroid/icu/text/SimpleDateFormat;->getLevelFromChar(C)I -Landroid/icu/text/SimpleDateFormat;->getLocale()Landroid/icu/util/ULocale; -Landroid/icu/text/SimpleDateFormat;->getPatternItems()[Ljava/lang/Object; -Landroid/icu/text/SimpleDateFormat;->hasMinute:Z -Landroid/icu/text/SimpleDateFormat;->hasSecond:Z -Landroid/icu/text/SimpleDateFormat;->HEBREW_CAL_CUR_MILLENIUM_END_YEAR:I -Landroid/icu/text/SimpleDateFormat;->HEBREW_CAL_CUR_MILLENIUM_START_YEAR:I -Landroid/icu/text/SimpleDateFormat;->initialize()V -Landroid/icu/text/SimpleDateFormat;->initializeDefaultCenturyStart(J)V -Landroid/icu/text/SimpleDateFormat;->initializeTimeZoneFormat(Z)V -Landroid/icu/text/SimpleDateFormat;->initLocalZeroPaddingNumberFormat()V -Landroid/icu/text/SimpleDateFormat;->initNumberFormatters(Landroid/icu/util/ULocale;)V -Landroid/icu/text/SimpleDateFormat;->intervalFormatByAlgorithm(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; -Landroid/icu/text/SimpleDateFormat;->isFieldUnitIgnored(I)Z -Landroid/icu/text/SimpleDateFormat;->isFieldUnitIgnored(Ljava/lang/String;I)Z -Landroid/icu/text/SimpleDateFormat;->isNumeric(CI)Z -Landroid/icu/text/SimpleDateFormat;->ISOSpecialEra:I -Landroid/icu/text/SimpleDateFormat;->isSyntaxChar(C)Z -Landroid/icu/text/SimpleDateFormat;->locale:Landroid/icu/util/ULocale; -Landroid/icu/text/SimpleDateFormat;->lowerLevel([Ljava/lang/Object;II)Z -Landroid/icu/text/SimpleDateFormat;->matchDayPeriodString(Ljava/lang/String;I[Ljava/lang/String;ILandroid/icu/util/Output;)I -Landroid/icu/text/SimpleDateFormat;->matchLiteral(Ljava/lang/String;I[Ljava/lang/Object;I[Z)I -Landroid/icu/text/SimpleDateFormat;->matchString(Ljava/lang/String;II[Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/Calendar;)I -Landroid/icu/text/SimpleDateFormat;->millisPerHour:I -Landroid/icu/text/SimpleDateFormat;->numberFormatters:Ljava/util/HashMap; -Landroid/icu/text/SimpleDateFormat;->NUMERIC_FORMAT_CHARS2:Ljava/lang/String; -Landroid/icu/text/SimpleDateFormat;->NUMERIC_FORMAT_CHARS:Ljava/lang/String; -Landroid/icu/text/SimpleDateFormat;->override:Ljava/lang/String; -Landroid/icu/text/SimpleDateFormat;->overrideMap:Ljava/util/HashMap; -Landroid/icu/text/SimpleDateFormat;->parseAmbiguousDatesAsAfter(Ljava/util/Date;)V -Landroid/icu/text/SimpleDateFormat;->PARSED_PATTERN_CACHE:Landroid/icu/impl/ICUCache; -Landroid/icu/text/SimpleDateFormat;->parseInt(Ljava/lang/String;ILjava/text/ParsePosition;ZLandroid/icu/text/NumberFormat;)Ljava/lang/Number; -Landroid/icu/text/SimpleDateFormat;->parseInt(Ljava/lang/String;Ljava/text/ParsePosition;ZLandroid/icu/text/NumberFormat;)Ljava/lang/Number; -Landroid/icu/text/SimpleDateFormat;->parsePattern()V -Landroid/icu/text/SimpleDateFormat;->pattern:Ljava/lang/String; -Landroid/icu/text/SimpleDateFormat;->patternItems:[Ljava/lang/Object; -Landroid/icu/text/SimpleDateFormat;->PATTERN_CHAR_IS_SYNTAX:[Z -Landroid/icu/text/SimpleDateFormat;->PATTERN_CHAR_TO_INDEX:[I -Landroid/icu/text/SimpleDateFormat;->PATTERN_CHAR_TO_LEVEL:[I -Landroid/icu/text/SimpleDateFormat;->PATTERN_INDEX_TO_CALENDAR_FIELD:[I -Landroid/icu/text/SimpleDateFormat;->PATTERN_INDEX_TO_DATE_FORMAT_ATTRIBUTE:[Landroid/icu/text/DateFormat$Field; -Landroid/icu/text/SimpleDateFormat;->PATTERN_INDEX_TO_DATE_FORMAT_FIELD:[I -Landroid/icu/text/SimpleDateFormat;->processOverrideString(Landroid/icu/util/ULocale;Ljava/lang/String;)V -Landroid/icu/text/SimpleDateFormat;->regionMatchesWithOptionalDot(Ljava/lang/String;ILjava/lang/String;I)I -Landroid/icu/text/SimpleDateFormat;->safeAppend([Ljava/lang/String;ILjava/lang/StringBuffer;)V -Landroid/icu/text/SimpleDateFormat;->safeAppendWithMonthPattern([Ljava/lang/String;ILjava/lang/StringBuffer;Ljava/lang/String;)V -Landroid/icu/text/SimpleDateFormat;->serialVersionOnStream:I -Landroid/icu/text/SimpleDateFormat;->subFormat(CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;Landroid/icu/util/Calendar;)Ljava/lang/String; -Landroid/icu/text/SimpleDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;Landroid/icu/util/Calendar;)V -Landroid/icu/text/SimpleDateFormat;->subParse(Ljava/lang/String;ICIZZ[ZLandroid/icu/util/Calendar;Landroid/icu/text/MessageFormat;Landroid/icu/util/Output;)I -Landroid/icu/text/SimpleDateFormat;->subParse(Ljava/lang/String;ICIZZ[ZLandroid/icu/util/Calendar;Landroid/icu/text/MessageFormat;Landroid/icu/util/Output;Landroid/icu/util/Output;)I -Landroid/icu/text/SimpleDateFormat;->SUPPRESS_NEGATIVE_PREFIX:Ljava/lang/String; -Landroid/icu/text/SimpleDateFormat;->translatePattern(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/SimpleDateFormat;->tzFormat()Landroid/icu/text/TimeZoneFormat; -Landroid/icu/text/SimpleDateFormat;->tzFormat:Landroid/icu/text/TimeZoneFormat; -Landroid/icu/text/SimpleDateFormat;->useFastFormat:Z -Landroid/icu/text/SimpleDateFormat;->useLocalZeroPaddingNumberFormat:Z -Landroid/icu/text/SimpleDateFormat;->zeroPaddingNumber(Landroid/icu/text/NumberFormat;Ljava/lang/StringBuffer;III)V -Landroid/icu/text/SimpleFormatter;-><init>(Ljava/lang/String;)V -Landroid/icu/text/SimpleFormatter;->compile(Ljava/lang/CharSequence;)Landroid/icu/text/SimpleFormatter; -Landroid/icu/text/SimpleFormatter;->compiledPattern:Ljava/lang/String; -Landroid/icu/text/SimpleFormatter;->compileMinMaxArguments(Ljava/lang/CharSequence;II)Landroid/icu/text/SimpleFormatter; -Landroid/icu/text/SimpleFormatter;->getArgumentLimit()I -Landroid/icu/text/SimpleFormatter;->getTextWithNoArguments()Ljava/lang/String; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;-><init>(Ljava/lang/String;)V -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;->fCharOrStrTableIndex:I -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;->fStr:Ljava/lang/String; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;-><init>()V -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;->compare(Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString;)I -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator;->INSTANCE:Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringComparator; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;-><init>()V -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->addString(Ljava/lang/String;)Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->fHash:Ljava/util/Hashtable; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->fVec:Ljava/util/Vector; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->getByIndex(I)Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUString; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->size()I -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool;->sort()V -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;-><init>()V -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->build(Ljava/io/Reader;Landroid/icu/text/SpoofChecker$SpoofData;)V -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->buildConfusableData(Ljava/io/Reader;Landroid/icu/text/SpoofChecker$SpoofData;)V -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fKeySet:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fKeyVec:Ljava/util/ArrayList; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fLineNum:I -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fParseHexNum:Ljava/util/regex/Pattern; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fParseLine:Ljava/util/regex/Pattern; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fStringTable:Ljava/lang/StringBuffer; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fTable:Ljava/util/Hashtable; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->fValueVec:Ljava/util/ArrayList; -Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder;->stringPool:Landroid/icu/text/SpoofChecker$Builder$ConfusabledataBuilder$SPUStringPool; -Landroid/icu/text/SpoofChecker$Builder;-><init>()V -Landroid/icu/text/SpoofChecker$Builder;-><init>(Landroid/icu/text/SpoofChecker;)V -Landroid/icu/text/SpoofChecker$Builder;->addScriptChars(Landroid/icu/util/ULocale;Landroid/icu/text/UnicodeSet;)V -Landroid/icu/text/SpoofChecker$Builder;->build()Landroid/icu/text/SpoofChecker; -Landroid/icu/text/SpoofChecker$Builder;->fAllowedCharsSet:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/SpoofChecker$Builder;->fAllowedLocales:Ljava/util/Set; -Landroid/icu/text/SpoofChecker$Builder;->fChecks:I -Landroid/icu/text/SpoofChecker$Builder;->fRestrictionLevel:Landroid/icu/text/SpoofChecker$RestrictionLevel; -Landroid/icu/text/SpoofChecker$Builder;->fSpoofData:Landroid/icu/text/SpoofChecker$SpoofData; -Landroid/icu/text/SpoofChecker$Builder;->setAllowedChars(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/SpoofChecker$Builder; -Landroid/icu/text/SpoofChecker$Builder;->setAllowedJavaLocales(Ljava/util/Set;)Landroid/icu/text/SpoofChecker$Builder; -Landroid/icu/text/SpoofChecker$Builder;->setAllowedLocales(Ljava/util/Set;)Landroid/icu/text/SpoofChecker$Builder; -Landroid/icu/text/SpoofChecker$Builder;->setChecks(I)Landroid/icu/text/SpoofChecker$Builder; -Landroid/icu/text/SpoofChecker$Builder;->setData(Ljava/io/Reader;)Landroid/icu/text/SpoofChecker$Builder; -Landroid/icu/text/SpoofChecker$Builder;->setData(Ljava/io/Reader;Ljava/io/Reader;)Landroid/icu/text/SpoofChecker$Builder; -Landroid/icu/text/SpoofChecker$Builder;->setRestrictionLevel(Landroid/icu/text/SpoofChecker$RestrictionLevel;)Landroid/icu/text/SpoofChecker$Builder; -Landroid/icu/text/SpoofChecker$CheckResult;-><init>()V -Landroid/icu/text/SpoofChecker$CheckResult;->checks:I -Landroid/icu/text/SpoofChecker$CheckResult;->numerics:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/SpoofChecker$CheckResult;->position:I -Landroid/icu/text/SpoofChecker$CheckResult;->restrictionLevel:Landroid/icu/text/SpoofChecker$RestrictionLevel; -Landroid/icu/text/SpoofChecker$ConfusableDataUtils;-><init>()V -Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->codePointAndLengthToKey(II)I -Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->FORMAT_VERSION:I -Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->keyToCodePoint(I)I -Landroid/icu/text/SpoofChecker$ConfusableDataUtils;->keyToLength(I)I -Landroid/icu/text/SpoofChecker$RestrictionLevel;->ASCII:Landroid/icu/text/SpoofChecker$RestrictionLevel; -Landroid/icu/text/SpoofChecker$RestrictionLevel;->HIGHLY_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel; -Landroid/icu/text/SpoofChecker$RestrictionLevel;->MINIMALLY_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel; -Landroid/icu/text/SpoofChecker$RestrictionLevel;->MODERATELY_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel; -Landroid/icu/text/SpoofChecker$RestrictionLevel;->SINGLE_SCRIPT_RESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel; -Landroid/icu/text/SpoofChecker$RestrictionLevel;->UNRESTRICTIVE:Landroid/icu/text/SpoofChecker$RestrictionLevel; -Landroid/icu/text/SpoofChecker$RestrictionLevel;->valueOf(Ljava/lang/String;)Landroid/icu/text/SpoofChecker$RestrictionLevel; -Landroid/icu/text/SpoofChecker$RestrictionLevel;->values()[Landroid/icu/text/SpoofChecker$RestrictionLevel; -Landroid/icu/text/SpoofChecker$ScriptSet;->appendStringTo(Ljava/lang/StringBuilder;)V -Landroid/icu/text/SpoofChecker$SpoofData$DefaultData;-><init>()V -Landroid/icu/text/SpoofChecker$SpoofData$DefaultData;->EXCEPTION:Ljava/io/IOException; -Landroid/icu/text/SpoofChecker$SpoofData$DefaultData;->INSTANCE:Landroid/icu/text/SpoofChecker$SpoofData; -Landroid/icu/text/SpoofChecker$SpoofData$IsAcceptable;-><init>()V -Landroid/icu/text/SpoofChecker$SpoofData;-><init>()V -Landroid/icu/text/SpoofChecker$SpoofData;-><init>(Ljava/nio/ByteBuffer;)V -Landroid/icu/text/SpoofChecker$SpoofData;->appendValueTo(ILjava/lang/StringBuilder;)V -Landroid/icu/text/SpoofChecker$SpoofData;->codePointAt(I)I -Landroid/icu/text/SpoofChecker$SpoofData;->confusableLookup(ILjava/lang/StringBuilder;)V -Landroid/icu/text/SpoofChecker$SpoofData;->DATA_FORMAT:I -Landroid/icu/text/SpoofChecker$SpoofData;->fCFUKeys:[I -Landroid/icu/text/SpoofChecker$SpoofData;->fCFUStrings:Ljava/lang/String; -Landroid/icu/text/SpoofChecker$SpoofData;->fCFUValues:[S -Landroid/icu/text/SpoofChecker$SpoofData;->getDefault()Landroid/icu/text/SpoofChecker$SpoofData; -Landroid/icu/text/SpoofChecker$SpoofData;->IS_ACCEPTABLE:Landroid/icu/text/SpoofChecker$SpoofData$IsAcceptable; -Landroid/icu/text/SpoofChecker$SpoofData;->length()I -Landroid/icu/text/SpoofChecker$SpoofData;->readData(Ljava/nio/ByteBuffer;)V -Landroid/icu/text/SpoofChecker;-><init>()V -Landroid/icu/text/SpoofChecker;->ALL_CHECKS:I -Landroid/icu/text/SpoofChecker;->ANY_CASE:I -Landroid/icu/text/SpoofChecker;->areConfusable(Ljava/lang/String;Ljava/lang/String;)I -Landroid/icu/text/SpoofChecker;->ASCII:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/SpoofChecker;->CHAR_LIMIT:I -Landroid/icu/text/SpoofChecker;->CONFUSABLE:I -Landroid/icu/text/SpoofChecker;->failsChecks(Ljava/lang/String;)Z -Landroid/icu/text/SpoofChecker;->failsChecks(Ljava/lang/String;Landroid/icu/text/SpoofChecker$CheckResult;)Z -Landroid/icu/text/SpoofChecker;->fAllowedCharsSet:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/SpoofChecker;->fAllowedLocales:Ljava/util/Set; -Landroid/icu/text/SpoofChecker;->fChecks:I -Landroid/icu/text/SpoofChecker;->fRestrictionLevel:Landroid/icu/text/SpoofChecker$RestrictionLevel; -Landroid/icu/text/SpoofChecker;->fSpoofData:Landroid/icu/text/SpoofChecker$SpoofData; -Landroid/icu/text/SpoofChecker;->getAllowedChars()Landroid/icu/text/UnicodeSet; -Landroid/icu/text/SpoofChecker;->getAllowedJavaLocales()Ljava/util/Set; -Landroid/icu/text/SpoofChecker;->getAllowedLocales()Ljava/util/Set; -Landroid/icu/text/SpoofChecker;->getAugmentedScriptSet(ILandroid/icu/text/SpoofChecker$ScriptSet;)V -Landroid/icu/text/SpoofChecker;->getChecks()I -Landroid/icu/text/SpoofChecker;->getNumerics(Ljava/lang/String;Landroid/icu/text/UnicodeSet;)V -Landroid/icu/text/SpoofChecker;->getResolvedScriptSet(Ljava/lang/CharSequence;Landroid/icu/text/SpoofChecker$ScriptSet;)V -Landroid/icu/text/SpoofChecker;->getResolvedScriptSetWithout(Ljava/lang/CharSequence;ILandroid/icu/text/SpoofChecker$ScriptSet;)V -Landroid/icu/text/SpoofChecker;->getRestrictionLevel()Landroid/icu/text/SpoofChecker$RestrictionLevel; -Landroid/icu/text/SpoofChecker;->getRestrictionLevel(Ljava/lang/String;)Landroid/icu/text/SpoofChecker$RestrictionLevel; -Landroid/icu/text/SpoofChecker;->getSkeleton(ILjava/lang/String;)Ljava/lang/String; -Landroid/icu/text/SpoofChecker;->getSkeleton(Ljava/lang/CharSequence;)Ljava/lang/String; -Landroid/icu/text/SpoofChecker;->INCLUSION:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/SpoofChecker;->INVISIBLE:I -Landroid/icu/text/SpoofChecker;->MIXED_NUMBERS:I -Landroid/icu/text/SpoofChecker;->MIXED_SCRIPT_CONFUSABLE:I -Landroid/icu/text/SpoofChecker;->nfdNormalizer:Landroid/icu/text/Normalizer2; -Landroid/icu/text/SpoofChecker;->RECOMMENDED:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/SpoofChecker;->RESTRICTION_LEVEL:I -Landroid/icu/text/SpoofChecker;->SINGLE_SCRIPT:I -Landroid/icu/text/SpoofChecker;->SINGLE_SCRIPT_CONFUSABLE:I -Landroid/icu/text/SpoofChecker;->WHOLE_SCRIPT_CONFUSABLE:I -Landroid/icu/text/StringCharacterIterator;-><init>(Ljava/lang/String;)V -Landroid/icu/text/StringCharacterIterator;-><init>(Ljava/lang/String;I)V -Landroid/icu/text/StringCharacterIterator;-><init>(Ljava/lang/String;III)V -Landroid/icu/text/StringCharacterIterator;->begin:I -Landroid/icu/text/StringCharacterIterator;->end:I -Landroid/icu/text/StringCharacterIterator;->pos:I -Landroid/icu/text/StringCharacterIterator;->setText(Ljava/lang/String;)V -Landroid/icu/text/StringCharacterIterator;->text:Ljava/lang/String; -Landroid/icu/text/StringMatcher;-><init>(Ljava/lang/String;IIILandroid/icu/text/RuleBasedTransliterator$Data;)V -Landroid/icu/text/StringMatcher;-><init>(Ljava/lang/String;ILandroid/icu/text/RuleBasedTransliterator$Data;)V -Landroid/icu/text/StringMatcher;->addReplacementSetTo(Landroid/icu/text/UnicodeSet;)V -Landroid/icu/text/StringMatcher;->data:Landroid/icu/text/RuleBasedTransliterator$Data; -Landroid/icu/text/StringMatcher;->matchLimit:I -Landroid/icu/text/StringMatcher;->matchStart:I -Landroid/icu/text/StringMatcher;->pattern:Ljava/lang/String; -Landroid/icu/text/StringMatcher;->replace(Landroid/icu/text/Replaceable;II[I)I -Landroid/icu/text/StringMatcher;->resetMatch()V -Landroid/icu/text/StringMatcher;->segmentNumber:I -Landroid/icu/text/StringMatcher;->toReplacerPattern(Z)Ljava/lang/String; -Landroid/icu/text/StringPrep$Values;-><init>()V -Landroid/icu/text/StringPrep$Values;->isIndex:Z -Landroid/icu/text/StringPrep$Values;->reset()V -Landroid/icu/text/StringPrep$Values;->type:I -Landroid/icu/text/StringPrep$Values;->value:I -Landroid/icu/text/StringPrep;-><init>(Ljava/io/InputStream;)V -Landroid/icu/text/StringPrep;-><init>(Ljava/nio/ByteBuffer;)V -Landroid/icu/text/StringPrep;->ALLOW_UNASSIGNED:I -Landroid/icu/text/StringPrep;->bdp:Landroid/icu/impl/UBiDiProps; -Landroid/icu/text/StringPrep;->CACHE:[Ljava/lang/ref/WeakReference; -Landroid/icu/text/StringPrep;->checkBiDi:Z -Landroid/icu/text/StringPrep;->CHECK_BIDI_ON:I -Landroid/icu/text/StringPrep;->DEFAULT:I -Landroid/icu/text/StringPrep;->DELETE:I -Landroid/icu/text/StringPrep;->doNFKC:Z -Landroid/icu/text/StringPrep;->FOUR_UCHARS_MAPPING_INDEX_START:I -Landroid/icu/text/StringPrep;->getCodePointValue(I)C -Landroid/icu/text/StringPrep;->getInstance(I)Landroid/icu/text/StringPrep; -Landroid/icu/text/StringPrep;->getValues(CLandroid/icu/text/StringPrep$Values;)V -Landroid/icu/text/StringPrep;->getVersionInfo(I)Landroid/icu/util/VersionInfo; -Landroid/icu/text/StringPrep;->getVersionInfo([B)Landroid/icu/util/VersionInfo; -Landroid/icu/text/StringPrep;->indexes:[I -Landroid/icu/text/StringPrep;->INDEX_MAPPING_DATA_SIZE:I -Landroid/icu/text/StringPrep;->INDEX_TOP:I -Landroid/icu/text/StringPrep;->map(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer; -Landroid/icu/text/StringPrep;->MAP:I -Landroid/icu/text/StringPrep;->mappingData:[C -Landroid/icu/text/StringPrep;->MAX_INDEX_VALUE:I -Landroid/icu/text/StringPrep;->MAX_PROFILE:I -Landroid/icu/text/StringPrep;->NORMALIZATION_ON:I -Landroid/icu/text/StringPrep;->normalize(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer; -Landroid/icu/text/StringPrep;->normCorrVer:Landroid/icu/util/VersionInfo; -Landroid/icu/text/StringPrep;->NORM_CORRECTNS_LAST_UNI_VERSION:I -Landroid/icu/text/StringPrep;->ONE_UCHAR_MAPPING_INDEX_START:I -Landroid/icu/text/StringPrep;->OPTIONS:I -Landroid/icu/text/StringPrep;->prepare(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer; -Landroid/icu/text/StringPrep;->prepare(Ljava/lang/String;I)Ljava/lang/String; -Landroid/icu/text/StringPrep;->PROFILE_NAMES:[Ljava/lang/String; -Landroid/icu/text/StringPrep;->PROHIBITED:I -Landroid/icu/text/StringPrep;->RFC3491_NAMEPREP:I -Landroid/icu/text/StringPrep;->RFC3530_NFS4_CIS_PREP:I -Landroid/icu/text/StringPrep;->RFC3530_NFS4_CS_PREP:I -Landroid/icu/text/StringPrep;->RFC3530_NFS4_CS_PREP_CI:I -Landroid/icu/text/StringPrep;->RFC3530_NFS4_MIXED_PREP_PREFIX:I -Landroid/icu/text/StringPrep;->RFC3530_NFS4_MIXED_PREP_SUFFIX:I -Landroid/icu/text/StringPrep;->RFC3722_ISCSI:I -Landroid/icu/text/StringPrep;->RFC3920_NODEPREP:I -Landroid/icu/text/StringPrep;->RFC3920_RESOURCEPREP:I -Landroid/icu/text/StringPrep;->RFC4011_MIB:I -Landroid/icu/text/StringPrep;->RFC4013_SASLPREP:I -Landroid/icu/text/StringPrep;->RFC4505_TRACE:I -Landroid/icu/text/StringPrep;->RFC4518_LDAP:I -Landroid/icu/text/StringPrep;->RFC4518_LDAP_CI:I -Landroid/icu/text/StringPrep;->sprepTrie:Landroid/icu/impl/CharTrie; -Landroid/icu/text/StringPrep;->sprepUniVer:Landroid/icu/util/VersionInfo; -Landroid/icu/text/StringPrep;->THREE_UCHARS_MAPPING_INDEX_START:I -Landroid/icu/text/StringPrep;->TWO_UCHARS_MAPPING_INDEX_START:I -Landroid/icu/text/StringPrep;->TYPE_LIMIT:I -Landroid/icu/text/StringPrep;->TYPE_THRESHOLD:I -Landroid/icu/text/StringPrep;->UNASSIGNED:I -Landroid/icu/text/StringPrepParseException;->error:I -Landroid/icu/text/StringPrepParseException;->line:I -Landroid/icu/text/StringPrepParseException;->PARSE_CONTEXT_LEN:I -Landroid/icu/text/StringPrepParseException;->postContext:Ljava/lang/StringBuffer; -Landroid/icu/text/StringPrepParseException;->preContext:Ljava/lang/StringBuffer; -Landroid/icu/text/StringPrepParseException;->setContext(Ljava/lang/String;I)V -Landroid/icu/text/StringPrepParseException;->setPostContext(Ljava/lang/String;I)V -Landroid/icu/text/StringPrepParseException;->setPostContext([CI)V -Landroid/icu/text/StringPrepParseException;->setPreContext(Ljava/lang/String;I)V -Landroid/icu/text/StringPrepParseException;->setPreContext([CI)V -Landroid/icu/text/StringSearch$CEBuffer;-><init>(Landroid/icu/text/StringSearch;)V -Landroid/icu/text/StringSearch$CEBuffer;->bufSize_:I -Landroid/icu/text/StringSearch$CEBuffer;->buf_:[Landroid/icu/text/StringSearch$CEI; -Landroid/icu/text/StringSearch$CEBuffer;->CEBUFFER_EXTRA:I -Landroid/icu/text/StringSearch$CEBuffer;->firstIx_:I -Landroid/icu/text/StringSearch$CEBuffer;->get(I)Landroid/icu/text/StringSearch$CEI; -Landroid/icu/text/StringSearch$CEBuffer;->getPrevious(I)Landroid/icu/text/StringSearch$CEI; -Landroid/icu/text/StringSearch$CEBuffer;->limitIx_:I -Landroid/icu/text/StringSearch$CEBuffer;->MAX_TARGET_IGNORABLES_PER_PAT_JAMO_L:I -Landroid/icu/text/StringSearch$CEBuffer;->MAX_TARGET_IGNORABLES_PER_PAT_OTHER:I -Landroid/icu/text/StringSearch$CEBuffer;->MIGHT_BE_JAMO_L(C)Z -Landroid/icu/text/StringSearch$CEBuffer;->strSearch_:Landroid/icu/text/StringSearch; -Landroid/icu/text/StringSearch$CEI;-><init>()V -Landroid/icu/text/StringSearch$CEI;->ce_:J -Landroid/icu/text/StringSearch$CEI;->highIndex_:I -Landroid/icu/text/StringSearch$CEI;->lowIndex_:I -Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;-><init>()V -Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->bufferIndex_:I -Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->buffer_:[Landroid/icu/text/StringSearch$CollationPCE$PCEI; -Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->empty()Z -Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->get()Landroid/icu/text/StringSearch$CollationPCE$PCEI; -Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->put(JII)V -Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer;->reset()V -Landroid/icu/text/StringSearch$CollationPCE$PCEI;-><init>()V -Landroid/icu/text/StringSearch$CollationPCE$PCEI;->ce_:J -Landroid/icu/text/StringSearch$CollationPCE$PCEI;->high_:I -Landroid/icu/text/StringSearch$CollationPCE$PCEI;->low_:I -Landroid/icu/text/StringSearch$CollationPCE$Range;-><init>()V -Landroid/icu/text/StringSearch$CollationPCE$Range;->ixHigh_:I -Landroid/icu/text/StringSearch$CollationPCE$Range;->ixLow_:I -Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;-><init>()V -Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->bufferIndex_:I -Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->buffer_:[Landroid/icu/text/StringSearch$CollationPCE$RCEI; -Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->empty()Z -Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->get()Landroid/icu/text/StringSearch$CollationPCE$RCEI; -Landroid/icu/text/StringSearch$CollationPCE$RCEBuffer;->put(III)V -Landroid/icu/text/StringSearch$CollationPCE$RCEI;-><init>()V -Landroid/icu/text/StringSearch$CollationPCE$RCEI;->ce_:I -Landroid/icu/text/StringSearch$CollationPCE$RCEI;->high_:I -Landroid/icu/text/StringSearch$CollationPCE$RCEI;->low_:I -Landroid/icu/text/StringSearch$CollationPCE;-><init>(Landroid/icu/text/CollationElementIterator;)V -Landroid/icu/text/StringSearch$CollationPCE;->BUFFER_GROW:I -Landroid/icu/text/StringSearch$CollationPCE;->cei_:Landroid/icu/text/CollationElementIterator; -Landroid/icu/text/StringSearch$CollationPCE;->CONTINUATION_MARKER:I -Landroid/icu/text/StringSearch$CollationPCE;->DEFAULT_BUFFER_SIZE:I -Landroid/icu/text/StringSearch$CollationPCE;->init(Landroid/icu/text/CollationElementIterator;)V -Landroid/icu/text/StringSearch$CollationPCE;->init(Landroid/icu/text/RuleBasedCollator;)V -Landroid/icu/text/StringSearch$CollationPCE;->isContinuation(I)Z -Landroid/icu/text/StringSearch$CollationPCE;->isShifted_:Z -Landroid/icu/text/StringSearch$CollationPCE;->nextProcessed(Landroid/icu/text/StringSearch$CollationPCE$Range;)J -Landroid/icu/text/StringSearch$CollationPCE;->pceBuffer_:Landroid/icu/text/StringSearch$CollationPCE$PCEBuffer; -Landroid/icu/text/StringSearch$CollationPCE;->previousProcessed(Landroid/icu/text/StringSearch$CollationPCE$Range;)J -Landroid/icu/text/StringSearch$CollationPCE;->PRIMARYORDERMASK:I -Landroid/icu/text/StringSearch$CollationPCE;->processCE(I)J -Landroid/icu/text/StringSearch$CollationPCE;->PROCESSED_NULLORDER:J -Landroid/icu/text/StringSearch$CollationPCE;->strength_:I -Landroid/icu/text/StringSearch$CollationPCE;->toShift_:Z -Landroid/icu/text/StringSearch$CollationPCE;->variableTop_:I -Landroid/icu/text/StringSearch$Match;-><init>()V -Landroid/icu/text/StringSearch$Match;->limit_:I -Landroid/icu/text/StringSearch$Match;->start_:I -Landroid/icu/text/StringSearch$Pattern;-><init>(Ljava/lang/String;)V -Landroid/icu/text/StringSearch$Pattern;->CELength_:I -Landroid/icu/text/StringSearch$Pattern;->CE_:[I -Landroid/icu/text/StringSearch$Pattern;->PCELength_:I -Landroid/icu/text/StringSearch$Pattern;->PCE_:[J -Landroid/icu/text/StringSearch$Pattern;->text_:Ljava/lang/String; -Landroid/icu/text/StringSearch;->addToIntArray([IIII)[I -Landroid/icu/text/StringSearch;->addToLongArray([JIIJI)[J -Landroid/icu/text/StringSearch;->ceMask_:I -Landroid/icu/text/StringSearch;->CE_LEVEL2_BASE:I -Landroid/icu/text/StringSearch;->CE_LEVEL3_BASE:I -Landroid/icu/text/StringSearch;->CE_MATCH:I -Landroid/icu/text/StringSearch;->CE_NO_MATCH:I -Landroid/icu/text/StringSearch;->CE_SKIP_PATN:I -Landroid/icu/text/StringSearch;->CE_SKIP_TARG:I -Landroid/icu/text/StringSearch;->checkIdentical(II)Z -Landroid/icu/text/StringSearch;->codePointAt(Ljava/text/CharacterIterator;I)I -Landroid/icu/text/StringSearch;->codePointBefore(Ljava/text/CharacterIterator;I)I -Landroid/icu/text/StringSearch;->collator_:Landroid/icu/text/RuleBasedCollator; -Landroid/icu/text/StringSearch;->compareCE64s(JJLandroid/icu/text/SearchIterator$ElementComparisonType;)I -Landroid/icu/text/StringSearch;->getCE(I)I -Landroid/icu/text/StringSearch;->getMask(I)I -Landroid/icu/text/StringSearch;->getString(Ljava/text/CharacterIterator;II)Ljava/lang/String; -Landroid/icu/text/StringSearch;->handleNextCanonical()Z -Landroid/icu/text/StringSearch;->handleNextCommonImpl()Z -Landroid/icu/text/StringSearch;->handleNextExact()Z -Landroid/icu/text/StringSearch;->handlePreviousCanonical()Z -Landroid/icu/text/StringSearch;->handlePreviousCommonImpl()Z -Landroid/icu/text/StringSearch;->handlePreviousExact()Z -Landroid/icu/text/StringSearch;->initialize()V -Landroid/icu/text/StringSearch;->initializePattern()I -Landroid/icu/text/StringSearch;->initializePatternCETable()I -Landroid/icu/text/StringSearch;->initializePatternPCETable()I -Landroid/icu/text/StringSearch;->INITIAL_ARRAY_SIZE_:I -Landroid/icu/text/StringSearch;->initTextProcessedIter()Z -Landroid/icu/text/StringSearch;->isBreakBoundary(I)Z -Landroid/icu/text/StringSearch;->isOutOfBounds(III)Z -Landroid/icu/text/StringSearch;->nextBoundaryAfter(I)I -Landroid/icu/text/StringSearch;->nfd_:Landroid/icu/text/Normalizer2; -Landroid/icu/text/StringSearch;->pattern_:Landroid/icu/text/StringSearch$Pattern; -Landroid/icu/text/StringSearch;->PRIMARYORDERMASK:I -Landroid/icu/text/StringSearch;->search(ILandroid/icu/text/StringSearch$Match;)Z -Landroid/icu/text/StringSearch;->searchBackwards(ILandroid/icu/text/StringSearch$Match;)Z -Landroid/icu/text/StringSearch;->SECONDARYORDERMASK:I -Landroid/icu/text/StringSearch;->setMatchNotFound()V -Landroid/icu/text/StringSearch;->strength_:I -Landroid/icu/text/StringSearch;->TERTIARYORDERMASK:I -Landroid/icu/text/StringSearch;->textIter_:Landroid/icu/text/CollationElementIterator; -Landroid/icu/text/StringSearch;->textProcessedIter_:Landroid/icu/text/StringSearch$CollationPCE; -Landroid/icu/text/StringSearch;->toShift_:Z -Landroid/icu/text/StringSearch;->utilIter_:Landroid/icu/text/CollationElementIterator; -Landroid/icu/text/StringSearch;->variableTop_:I -Landroid/icu/text/StringTransform;->transform(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;-><init>(Ljava/util/Map;ILjava/util/Set;Landroid/icu/util/ULocale;)V -Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->beenHere:Z -Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->locale:Landroid/icu/util/ULocale; -Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->pluralKeywords:Ljava/util/Set; -Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->style:I -Landroid/icu/text/TimeUnitFormat$TimeUnitFormatSetupSink;->timeUnitToCountToPatterns:Ljava/util/Map; -Landroid/icu/text/TimeUnitFormat;-><init>()V -Landroid/icu/text/TimeUnitFormat;-><init>(Landroid/icu/util/ULocale;)V -Landroid/icu/text/TimeUnitFormat;-><init>(Landroid/icu/util/ULocale;I)V -Landroid/icu/text/TimeUnitFormat;-><init>(Landroid/icu/util/ULocale;ILandroid/icu/text/NumberFormat;)V -Landroid/icu/text/TimeUnitFormat;-><init>(Ljava/util/Locale;)V -Landroid/icu/text/TimeUnitFormat;-><init>(Ljava/util/Locale;I)V -Landroid/icu/text/TimeUnitFormat;->ABBREVIATED_NAME:I -Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_DAY:Ljava/lang/String; -Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_HOUR:Ljava/lang/String; -Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_MINUTE:Ljava/lang/String; -Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_MONTH:Ljava/lang/String; -Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_SECOND:Ljava/lang/String; -Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_WEEK:Ljava/lang/String; -Landroid/icu/text/TimeUnitFormat;->DEFAULT_PATTERN_FOR_YEAR:Ljava/lang/String; -Landroid/icu/text/TimeUnitFormat;->format:Landroid/icu/text/NumberFormat; -Landroid/icu/text/TimeUnitFormat;->FULL_NAME:I -Landroid/icu/text/TimeUnitFormat;->isReady:Z -Landroid/icu/text/TimeUnitFormat;->locale:Landroid/icu/util/ULocale; -Landroid/icu/text/TimeUnitFormat;->mf:Landroid/icu/text/MeasureFormat; -Landroid/icu/text/TimeUnitFormat;->pluralRules:Landroid/icu/text/PluralRules; -Landroid/icu/text/TimeUnitFormat;->searchInTree(Ljava/lang/String;ILandroid/icu/util/TimeUnit;Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V -Landroid/icu/text/TimeUnitFormat;->setLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeUnitFormat; -Landroid/icu/text/TimeUnitFormat;->setLocale(Ljava/util/Locale;)Landroid/icu/text/TimeUnitFormat; -Landroid/icu/text/TimeUnitFormat;->setNumberFormat(Landroid/icu/text/NumberFormat;)Landroid/icu/text/TimeUnitFormat; -Landroid/icu/text/TimeUnitFormat;->setup()V -Landroid/icu/text/TimeUnitFormat;->setup(Ljava/lang/String;Ljava/util/Map;ILjava/util/Set;)V -Landroid/icu/text/TimeUnitFormat;->style:I -Landroid/icu/text/TimeUnitFormat;->timeUnitToCountToPatterns:Ljava/util/Map; -Landroid/icu/text/TimeUnitFormat;->TOTAL_STYLES:I -Landroid/icu/text/TimeZoneFormat$GMTOffsetField;-><init>(CI)V -Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->getType()C -Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->getWidth()I -Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->isValid(CI)Z -Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->_type:C -Landroid/icu/text/TimeZoneFormat$GMTOffsetField;->_width:I -Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->defaultPattern()Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->isPositive()Z -Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->required()Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->_defaultPattern:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->_isPositive:Z -Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType;->_required:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat$OffsetFields;->H:Landroid/icu/text/TimeZoneFormat$OffsetFields; -Landroid/icu/text/TimeZoneFormat$OffsetFields;->HM:Landroid/icu/text/TimeZoneFormat$OffsetFields; -Landroid/icu/text/TimeZoneFormat$OffsetFields;->HMS:Landroid/icu/text/TimeZoneFormat$OffsetFields; -Landroid/icu/text/TimeZoneFormat$OffsetFields;->valueOf(Ljava/lang/String;)Landroid/icu/text/TimeZoneFormat$OffsetFields; -Landroid/icu/text/TimeZoneFormat$OffsetFields;->values()[Landroid/icu/text/TimeZoneFormat$OffsetFields; -Landroid/icu/text/TimeZoneFormat$Style;->flag:I -Landroid/icu/text/TimeZoneFormat$TimeZoneFormatCache;-><init>()V -Landroid/icu/text/TimeZoneFormat$TimeZoneFormatCache;->createInstance(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneFormat; -Landroid/icu/text/TimeZoneFormat;->ALL_GENERIC_NAME_TYPES:Ljava/util/EnumSet; -Landroid/icu/text/TimeZoneFormat;->ALL_SIMPLE_NAME_TYPES:Ljava/util/EnumSet; -Landroid/icu/text/TimeZoneFormat;->ALT_GMT_STRINGS:[Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->appendOffsetDigits(Ljava/lang/StringBuilder;II)V -Landroid/icu/text/TimeZoneFormat;->ASCII_DIGITS:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->checkAbuttingHoursAndMinutes()V -Landroid/icu/text/TimeZoneFormat;->DEFAULT_GMT_DIGITS:[Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->DEFAULT_GMT_OFFSET_SEP:C -Landroid/icu/text/TimeZoneFormat;->DEFAULT_GMT_PATTERN:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->DEFAULT_GMT_ZERO:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->expandOffsetPattern(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->formatExemplarLocation(Landroid/icu/util/TimeZone;)Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->formatOffsetISO8601(IZZZZ)Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->formatOffsetLocalizedGMT(IZ)Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->formatSpecific(Landroid/icu/util/TimeZone;Landroid/icu/text/TimeZoneNames$NameType;Landroid/icu/text/TimeZoneNames$NameType;JLandroid/icu/util/Output;)Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->getTargetRegion()Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->getTimeType(Landroid/icu/text/TimeZoneNames$NameType;)Landroid/icu/text/TimeZoneFormat$TimeType; -Landroid/icu/text/TimeZoneFormat;->getTimeZoneForOffset(I)Landroid/icu/util/TimeZone; -Landroid/icu/text/TimeZoneFormat;->getTimeZoneGenericNames()Landroid/icu/impl/TimeZoneGenericNames; -Landroid/icu/text/TimeZoneFormat;->getTimeZoneID(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->getTZDBTimeZoneNames()Landroid/icu/text/TimeZoneNames; -Landroid/icu/text/TimeZoneFormat;->initGMTOffsetPatterns([Ljava/lang/String;)V -Landroid/icu/text/TimeZoneFormat;->initGMTPattern(Ljava/lang/String;)V -Landroid/icu/text/TimeZoneFormat;->ISO8601_UTC:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->ISO_LOCAL_STYLE_FLAG:I -Landroid/icu/text/TimeZoneFormat;->ISO_Z_STYLE_FLAG:I -Landroid/icu/text/TimeZoneFormat;->MAX_OFFSET:I -Landroid/icu/text/TimeZoneFormat;->MAX_OFFSET_HOUR:I -Landroid/icu/text/TimeZoneFormat;->MAX_OFFSET_MINUTE:I -Landroid/icu/text/TimeZoneFormat;->MAX_OFFSET_SECOND:I -Landroid/icu/text/TimeZoneFormat;->MILLIS_PER_HOUR:I -Landroid/icu/text/TimeZoneFormat;->MILLIS_PER_MINUTE:I -Landroid/icu/text/TimeZoneFormat;->MILLIS_PER_SECOND:I -Landroid/icu/text/TimeZoneFormat;->parseAbuttingAsciiOffsetFields(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/TimeZoneFormat$OffsetFields;Landroid/icu/text/TimeZoneFormat$OffsetFields;Z)I -Landroid/icu/text/TimeZoneFormat;->parseAbuttingOffsetFields(Ljava/lang/String;I[I)I -Landroid/icu/text/TimeZoneFormat;->parseAsciiOffsetFields(Ljava/lang/String;Ljava/text/ParsePosition;CLandroid/icu/text/TimeZoneFormat$OffsetFields;Landroid/icu/text/TimeZoneFormat$OffsetFields;)I -Landroid/icu/text/TimeZoneFormat;->parseDefaultOffsetFields(Ljava/lang/String;IC[I)I -Landroid/icu/text/TimeZoneFormat;->parseExemplarLocation(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->parseOffsetDefaultLocalizedGMT(Ljava/lang/String;I[I)I -Landroid/icu/text/TimeZoneFormat;->parseOffsetFields(Ljava/lang/String;IZ[I)I -Landroid/icu/text/TimeZoneFormat;->parseOffsetFieldsWithPattern(Ljava/lang/String;I[Ljava/lang/Object;Z[I)I -Landroid/icu/text/TimeZoneFormat;->parseOffsetFieldWithLocalizedDigits(Ljava/lang/String;IIIII[I)I -Landroid/icu/text/TimeZoneFormat;->parseOffsetISO8601(Ljava/lang/String;Ljava/text/ParsePosition;ZLandroid/icu/util/Output;)I -Landroid/icu/text/TimeZoneFormat;->parseOffsetLocalizedGMT(Ljava/lang/String;Ljava/text/ParsePosition;ZLandroid/icu/util/Output;)I -Landroid/icu/text/TimeZoneFormat;->parseOffsetLocalizedGMTPattern(Ljava/lang/String;IZ[I)I -Landroid/icu/text/TimeZoneFormat;->parseOffsetPattern(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Object; -Landroid/icu/text/TimeZoneFormat;->parseShortZoneID(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->parseSingleLocalizedDigit(Ljava/lang/String;I[I)I -Landroid/icu/text/TimeZoneFormat;->parseZoneID(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->PARSE_GMT_OFFSET_TYPES:[Landroid/icu/text/TimeZoneFormat$GMTOffsetPatternType; -Landroid/icu/text/TimeZoneFormat;->SHORT_ZONE_ID_TRIE:Landroid/icu/impl/TextTrieMap; -Landroid/icu/text/TimeZoneFormat;->toCodePoints(Ljava/lang/String;)[Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->truncateOffsetPattern(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->TZID_GMT:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->UNKNOWN_LOCATION:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->UNKNOWN_OFFSET:I -Landroid/icu/text/TimeZoneFormat;->UNKNOWN_SHORT_ZONE_ID:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->UNKNOWN_ZONE_ID:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->unquote(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->ZONE_ID_TRIE:Landroid/icu/impl/TextTrieMap; -Landroid/icu/text/TimeZoneFormat;->_abuttingOffsetHoursAndMinutes:Z -Landroid/icu/text/TimeZoneFormat;->_frozen:Z -Landroid/icu/text/TimeZoneFormat;->_gmtOffsetDigits:[Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->_gmtOffsetPatternItems:[[Ljava/lang/Object; -Landroid/icu/text/TimeZoneFormat;->_gmtOffsetPatterns:[Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->_gmtPattern:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->_gmtPatternPrefix:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->_gmtPatternSuffix:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->_gmtZeroFormat:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->_gnames:Landroid/icu/impl/TimeZoneGenericNames; -Landroid/icu/text/TimeZoneFormat;->_locale:Landroid/icu/util/ULocale; -Landroid/icu/text/TimeZoneFormat;->_parseAllStyles:Z -Landroid/icu/text/TimeZoneFormat;->_parseTZDBNames:Z -Landroid/icu/text/TimeZoneFormat;->_region:Ljava/lang/String; -Landroid/icu/text/TimeZoneFormat;->_tzdbNames:Landroid/icu/text/TimeZoneNames; -Landroid/icu/text/TimeZoneFormat;->_tzfCache:Landroid/icu/text/TimeZoneFormat$TimeZoneFormatCache; -Landroid/icu/text/TimeZoneFormat;->_tznames:Landroid/icu/text/TimeZoneNames; -Landroid/icu/text/TimeZoneNames$Cache;-><init>()V -Landroid/icu/text/TimeZoneNames$Cache;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames; -Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames$FactoryImpl;->getTimeZoneNames(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames; -Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;-><init>()V -Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;->find(Ljava/lang/CharSequence;ILjava/util/EnumSet;)Ljava/util/Collection; -Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames;->INSTANCE:Landroid/icu/text/TimeZoneNames$DefaultTimeZoneNames; -Landroid/icu/text/TimeZoneNames$Factory;-><init>()V -Landroid/icu/text/TimeZoneNames$Factory;->getTimeZoneNames(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames; -Landroid/icu/text/TimeZoneNames$MatchInfo;-><init>(Landroid/icu/text/TimeZoneNames$NameType;Ljava/lang/String;Ljava/lang/String;I)V -Landroid/icu/text/TimeZoneNames$MatchInfo;->matchLength()I -Landroid/icu/text/TimeZoneNames$MatchInfo;->mzID()Ljava/lang/String; -Landroid/icu/text/TimeZoneNames$MatchInfo;->nameType()Landroid/icu/text/TimeZoneNames$NameType; -Landroid/icu/text/TimeZoneNames$MatchInfo;->tzID()Ljava/lang/String; -Landroid/icu/text/TimeZoneNames$MatchInfo;->_matchLength:I -Landroid/icu/text/TimeZoneNames$MatchInfo;->_mzID:Ljava/lang/String; -Landroid/icu/text/TimeZoneNames$MatchInfo;->_nameType:Landroid/icu/text/TimeZoneNames$NameType; -Landroid/icu/text/TimeZoneNames$MatchInfo;->_tzID:Ljava/lang/String; -Landroid/icu/text/TimeZoneNames;-><init>()V -Landroid/icu/text/TimeZoneNames;->DEFAULT_FACTORY_CLASS:Ljava/lang/String; -Landroid/icu/text/TimeZoneNames;->FACTORY_NAME_PROP:Ljava/lang/String; -Landroid/icu/text/TimeZoneNames;->find(Ljava/lang/CharSequence;ILjava/util/EnumSet;)Ljava/util/Collection; -Landroid/icu/text/TimeZoneNames;->getDisplayNames(Ljava/lang/String;[Landroid/icu/text/TimeZoneNames$NameType;J[Ljava/lang/String;I)V -Landroid/icu/text/TimeZoneNames;->loadAllDisplayNames()V -Landroid/icu/text/TimeZoneNames;->TZNAMES_CACHE:Landroid/icu/text/TimeZoneNames$Cache; -Landroid/icu/text/TimeZoneNames;->TZNAMES_FACTORY:Landroid/icu/text/TimeZoneNames$Factory; -Landroid/icu/text/Transform;->transform(Ljava/lang/Object;)Ljava/lang/Object; -Landroid/icu/text/TransliterationRule;-><init>(Ljava/lang/String;IILjava/lang/String;II[Landroid/icu/text/UnicodeMatcher;ZZLandroid/icu/text/RuleBasedTransliterator$Data;)V -Landroid/icu/text/TransliterationRule;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V -Landroid/icu/text/TransliterationRule;->ANCHOR_END:I -Landroid/icu/text/TransliterationRule;->ANCHOR_START:I -Landroid/icu/text/TransliterationRule;->anteContext:Landroid/icu/text/StringMatcher; -Landroid/icu/text/TransliterationRule;->anteContextLength:I -Landroid/icu/text/TransliterationRule;->data:Landroid/icu/text/RuleBasedTransliterator$Data; -Landroid/icu/text/TransliterationRule;->flags:B -Landroid/icu/text/TransliterationRule;->getAnteContextLength()I -Landroid/icu/text/TransliterationRule;->getIndexValue()I -Landroid/icu/text/TransliterationRule;->key:Landroid/icu/text/StringMatcher; -Landroid/icu/text/TransliterationRule;->keyLength:I -Landroid/icu/text/TransliterationRule;->masks(Landroid/icu/text/TransliterationRule;)Z -Landroid/icu/text/TransliterationRule;->matchAndReplace(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)I -Landroid/icu/text/TransliterationRule;->matchesIndexValue(I)Z -Landroid/icu/text/TransliterationRule;->output:Landroid/icu/text/UnicodeReplacer; -Landroid/icu/text/TransliterationRule;->pattern:Ljava/lang/String; -Landroid/icu/text/TransliterationRule;->posAfter(Landroid/icu/text/Replaceable;I)I -Landroid/icu/text/TransliterationRule;->posBefore(Landroid/icu/text/Replaceable;I)I -Landroid/icu/text/TransliterationRule;->postContext:Landroid/icu/text/StringMatcher; -Landroid/icu/text/TransliterationRule;->segments:[Landroid/icu/text/UnicodeMatcher; -Landroid/icu/text/TransliterationRule;->toRule(Z)Ljava/lang/String; -Landroid/icu/text/TransliterationRuleSet;-><init>()V -Landroid/icu/text/TransliterationRuleSet;->addRule(Landroid/icu/text/TransliterationRule;)V -Landroid/icu/text/TransliterationRuleSet;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V -Landroid/icu/text/TransliterationRuleSet;->freeze()V -Landroid/icu/text/TransliterationRuleSet;->getMaximumContextLength()I -Landroid/icu/text/TransliterationRuleSet;->index:[I -Landroid/icu/text/TransliterationRuleSet;->maxContextLength:I -Landroid/icu/text/TransliterationRuleSet;->rules:[Landroid/icu/text/TransliterationRule; -Landroid/icu/text/TransliterationRuleSet;->ruleVector:Ljava/util/List; -Landroid/icu/text/TransliterationRuleSet;->toRules(Z)Ljava/lang/String; -Landroid/icu/text/TransliterationRuleSet;->transliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)Z -Landroid/icu/text/Transliterator$Factory;->getInstance(Ljava/lang/String;)Landroid/icu/text/Transliterator; -Landroid/icu/text/Transliterator$Position;-><init>()V -Landroid/icu/text/Transliterator$Position;-><init>(III)V -Landroid/icu/text/Transliterator$Position;-><init>(IIII)V -Landroid/icu/text/Transliterator$Position;-><init>(Landroid/icu/text/Transliterator$Position;)V -Landroid/icu/text/Transliterator$Position;->contextLimit:I -Landroid/icu/text/Transliterator$Position;->contextStart:I -Landroid/icu/text/Transliterator$Position;->limit:I -Landroid/icu/text/Transliterator$Position;->set(Landroid/icu/text/Transliterator$Position;)V -Landroid/icu/text/Transliterator$Position;->start:I -Landroid/icu/text/Transliterator$Position;->validate(I)V -Landroid/icu/text/Transliterator;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeFilter;)V -Landroid/icu/text/Transliterator;->addSourceTargetSet(Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;Landroid/icu/text/UnicodeSet;)V -Landroid/icu/text/Transliterator;->baseToRules(Z)Ljava/lang/String; -Landroid/icu/text/Transliterator;->DEBUG:Z -Landroid/icu/text/Transliterator;->displayNameCache:Ljava/util/Map; -Landroid/icu/text/Transliterator;->filter:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/Transliterator;->filteredTransliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)V -Landroid/icu/text/Transliterator;->filteredTransliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;ZZ)V -Landroid/icu/text/Transliterator;->finishTransliteration(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;)V -Landroid/icu/text/Transliterator;->FORWARD:I -Landroid/icu/text/Transliterator;->getAvailableIDs()Ljava/util/Enumeration; -Landroid/icu/text/Transliterator;->getAvailableSources()Ljava/util/Enumeration; -Landroid/icu/text/Transliterator;->getAvailableTargets(Ljava/lang/String;)Ljava/util/Enumeration; -Landroid/icu/text/Transliterator;->getAvailableVariants(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Enumeration; -Landroid/icu/text/Transliterator;->getBasicInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/text/Transliterator; -Landroid/icu/text/Transliterator;->getDisplayName(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/Transliterator;->getDisplayName(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/text/Transliterator;->getDisplayName(Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String; -Landroid/icu/text/Transliterator;->getElements()[Landroid/icu/text/Transliterator; -Landroid/icu/text/Transliterator;->getFilter()Landroid/icu/text/UnicodeFilter; -Landroid/icu/text/Transliterator;->getFilterAsUnicodeSet(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet; -Landroid/icu/text/Transliterator;->getID()Ljava/lang/String; -Landroid/icu/text/Transliterator;->getInverse()Landroid/icu/text/Transliterator; -Landroid/icu/text/Transliterator;->getMaximumContextLength()I -Landroid/icu/text/Transliterator;->getSourceSet()Landroid/icu/text/UnicodeSet; -Landroid/icu/text/Transliterator;->getTargetSet()Landroid/icu/text/UnicodeSet; -Landroid/icu/text/Transliterator;->handleGetSourceSet()Landroid/icu/text/UnicodeSet; -Landroid/icu/text/Transliterator;->handleTransliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;Z)V -Landroid/icu/text/Transliterator;->ID:Ljava/lang/String; -Landroid/icu/text/Transliterator;->ID_DELIM:C -Landroid/icu/text/Transliterator;->ID_SEP:C -Landroid/icu/text/Transliterator;->maximumContextLength:I -Landroid/icu/text/Transliterator;->RB_DISPLAY_NAME_PATTERN:Ljava/lang/String; -Landroid/icu/text/Transliterator;->RB_DISPLAY_NAME_PREFIX:Ljava/lang/String; -Landroid/icu/text/Transliterator;->RB_RULE_BASED_IDS:Ljava/lang/String; -Landroid/icu/text/Transliterator;->RB_SCRIPT_DISPLAY_NAME_PREFIX:Ljava/lang/String; -Landroid/icu/text/Transliterator;->registerAlias(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/text/Transliterator;->registerAny()V -Landroid/icu/text/Transliterator;->registerClass(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)V -Landroid/icu/text/Transliterator;->registerFactory(Ljava/lang/String;Landroid/icu/text/Transliterator$Factory;)V -Landroid/icu/text/Transliterator;->registerInstance(Landroid/icu/text/Transliterator;)V -Landroid/icu/text/Transliterator;->registerInstance(Landroid/icu/text/Transliterator;Z)V -Landroid/icu/text/Transliterator;->registerSpecialInverse(Ljava/lang/String;Ljava/lang/String;Z)V -Landroid/icu/text/Transliterator;->registry:Landroid/icu/text/TransliteratorRegistry; -Landroid/icu/text/Transliterator;->REVERSE:I -Landroid/icu/text/Transliterator;->ROOT:Ljava/lang/String; -Landroid/icu/text/Transliterator;->setFilter(Landroid/icu/text/UnicodeFilter;)V -Landroid/icu/text/Transliterator;->setID(Ljava/lang/String;)V -Landroid/icu/text/Transliterator;->setMaximumContextLength(I)V -Landroid/icu/text/Transliterator;->toRules(Z)Ljava/lang/String; -Landroid/icu/text/Transliterator;->transform(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/Transliterator;->transliterate(Landroid/icu/text/Replaceable;)V -Landroid/icu/text/Transliterator;->transliterate(Landroid/icu/text/Replaceable;II)I -Landroid/icu/text/Transliterator;->transliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;)V -Landroid/icu/text/Transliterator;->transliterate(Landroid/icu/text/Replaceable;Landroid/icu/text/Transliterator$Position;I)V -Landroid/icu/text/Transliterator;->unregister(Ljava/lang/String;)V -Landroid/icu/text/Transliterator;->VARIANT_SEP:C -Landroid/icu/text/TransliteratorRegistry$AliasEntry;-><init>(Ljava/lang/String;)V -Landroid/icu/text/TransliteratorRegistry$AliasEntry;->alias:Ljava/lang/String; -Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;-><init>(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Landroid/icu/text/UnicodeSet;)V -Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->compoundFilter:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->dataVector:Ljava/util/List; -Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->getInstance()Landroid/icu/text/Transliterator; -Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->ID:Ljava/lang/String; -Landroid/icu/text/TransliteratorRegistry$CompoundRBTEntry;->idBlockVector:Ljava/util/List; -Landroid/icu/text/TransliteratorRegistry$IDEnumeration;-><init>(Ljava/util/Enumeration;)V -Landroid/icu/text/TransliteratorRegistry$IDEnumeration;->en:Ljava/util/Enumeration; -Landroid/icu/text/TransliteratorRegistry$LocaleEntry;-><init>(Ljava/lang/String;I)V -Landroid/icu/text/TransliteratorRegistry$LocaleEntry;->direction:I -Landroid/icu/text/TransliteratorRegistry$LocaleEntry;->rule:Ljava/lang/String; -Landroid/icu/text/TransliteratorRegistry$ResourceEntry;-><init>(Ljava/lang/String;I)V -Landroid/icu/text/TransliteratorRegistry$ResourceEntry;->direction:I -Landroid/icu/text/TransliteratorRegistry$ResourceEntry;->resource:Ljava/lang/String; -Landroid/icu/text/TransliteratorRegistry$Spec;-><init>(Ljava/lang/String;)V -Landroid/icu/text/TransliteratorRegistry$Spec;->get()Ljava/lang/String; -Landroid/icu/text/TransliteratorRegistry$Spec;->getBundle()Ljava/util/ResourceBundle; -Landroid/icu/text/TransliteratorRegistry$Spec;->getTop()Ljava/lang/String; -Landroid/icu/text/TransliteratorRegistry$Spec;->hasFallback()Z -Landroid/icu/text/TransliteratorRegistry$Spec;->isLocale()Z -Landroid/icu/text/TransliteratorRegistry$Spec;->isNextLocale:Z -Landroid/icu/text/TransliteratorRegistry$Spec;->isSpecLocale:Z -Landroid/icu/text/TransliteratorRegistry$Spec;->next()Ljava/lang/String; -Landroid/icu/text/TransliteratorRegistry$Spec;->nextSpec:Ljava/lang/String; -Landroid/icu/text/TransliteratorRegistry$Spec;->res:Landroid/icu/impl/ICUResourceBundle; -Landroid/icu/text/TransliteratorRegistry$Spec;->reset()V -Landroid/icu/text/TransliteratorRegistry$Spec;->scriptName:Ljava/lang/String; -Landroid/icu/text/TransliteratorRegistry$Spec;->setupNext()V -Landroid/icu/text/TransliteratorRegistry$Spec;->spec:Ljava/lang/String; -Landroid/icu/text/TransliteratorRegistry$Spec;->top:Ljava/lang/String; -Landroid/icu/text/TransliteratorRegistry;-><init>()V -Landroid/icu/text/TransliteratorRegistry;->ANY:Ljava/lang/String; -Landroid/icu/text/TransliteratorRegistry;->availableIDs:Ljava/util/List; -Landroid/icu/text/TransliteratorRegistry;->DEBUG:Z -Landroid/icu/text/TransliteratorRegistry;->find(Ljava/lang/String;)[Ljava/lang/Object; -Landroid/icu/text/TransliteratorRegistry;->find(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Object; -Landroid/icu/text/TransliteratorRegistry;->findInBundle(Landroid/icu/text/TransliteratorRegistry$Spec;Landroid/icu/text/TransliteratorRegistry$Spec;Ljava/lang/String;I)[Ljava/lang/Object; -Landroid/icu/text/TransliteratorRegistry;->findInDynamicStore(Landroid/icu/text/TransliteratorRegistry$Spec;Landroid/icu/text/TransliteratorRegistry$Spec;Ljava/lang/String;)[Ljava/lang/Object; -Landroid/icu/text/TransliteratorRegistry;->findInStaticStore(Landroid/icu/text/TransliteratorRegistry$Spec;Landroid/icu/text/TransliteratorRegistry$Spec;Ljava/lang/String;)[Ljava/lang/Object; -Landroid/icu/text/TransliteratorRegistry;->get(Ljava/lang/String;Ljava/lang/StringBuffer;)Landroid/icu/text/Transliterator; -Landroid/icu/text/TransliteratorRegistry;->getAvailableIDs()Ljava/util/Enumeration; -Landroid/icu/text/TransliteratorRegistry;->getAvailableSources()Ljava/util/Enumeration; -Landroid/icu/text/TransliteratorRegistry;->getAvailableTargets(Ljava/lang/String;)Ljava/util/Enumeration; -Landroid/icu/text/TransliteratorRegistry;->getAvailableVariants(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Enumeration; -Landroid/icu/text/TransliteratorRegistry;->instantiateEntry(Ljava/lang/String;[Ljava/lang/Object;Ljava/lang/StringBuffer;)Landroid/icu/text/Transliterator; -Landroid/icu/text/TransliteratorRegistry;->LOCALE_SEP:C -Landroid/icu/text/TransliteratorRegistry;->NO_VARIANT:Ljava/lang/String; -Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Landroid/icu/text/Transliterator$Factory;Z)V -Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Landroid/icu/text/Transliterator;Z)V -Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Ljava/lang/Class;Z)V -Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Ljava/lang/String;IZ)V -Landroid/icu/text/TransliteratorRegistry;->put(Ljava/lang/String;Ljava/lang/String;Z)V -Landroid/icu/text/TransliteratorRegistry;->registerEntry(Ljava/lang/String;Ljava/lang/Object;Z)V -Landroid/icu/text/TransliteratorRegistry;->registerEntry(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Z)V -Landroid/icu/text/TransliteratorRegistry;->registerEntry(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Z)V -Landroid/icu/text/TransliteratorRegistry;->registerSTV(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/text/TransliteratorRegistry;->registry:Ljava/util/Map; -Landroid/icu/text/TransliteratorRegistry;->remove(Ljava/lang/String;)V -Landroid/icu/text/TransliteratorRegistry;->removeSTV(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/text/TransliteratorRegistry;->specDAG:Ljava/util/Map; -Landroid/icu/text/UFieldPosition;-><init>()V -Landroid/icu/text/UFieldPosition;-><init>(I)V -Landroid/icu/text/UFieldPosition;-><init>(Ljava/text/Format$Field;)V -Landroid/icu/text/UFieldPosition;-><init>(Ljava/text/Format$Field;I)V -Landroid/icu/text/UFieldPosition;->countVisibleFractionDigits:I -Landroid/icu/text/UFieldPosition;->fractionDigits:J -Landroid/icu/text/UFieldPosition;->getCountVisibleFractionDigits()I -Landroid/icu/text/UFieldPosition;->getFractionDigits()J -Landroid/icu/text/UFieldPosition;->setFractionDigits(IJ)V -Landroid/icu/text/UFormat;->actualLocale:Landroid/icu/util/ULocale; -Landroid/icu/text/UFormat;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V -Landroid/icu/text/UFormat;->validLocale:Landroid/icu/util/ULocale; -Landroid/icu/text/UForwardCharacterIterator;->next()I -Landroid/icu/text/UForwardCharacterIterator;->nextCodePoint()I -Landroid/icu/text/UnhandledBreakEngine;-><init>()V -Landroid/icu/text/UnhandledBreakEngine;->fHandled:Ljava/util/concurrent/atomic/AtomicReferenceArray; -Landroid/icu/text/UnhandledBreakEngine;->findBreaks(Ljava/text/CharacterIterator;IIILandroid/icu/text/DictionaryBreakEngine$DequeI;)I -Landroid/icu/text/UnhandledBreakEngine;->handleChar(II)V -Landroid/icu/text/UnhandledBreakEngine;->handles(II)Z -Landroid/icu/text/UnicodeCompressor;-><init>()V -Landroid/icu/text/UnicodeCompressor;->compress(Ljava/lang/String;)[B -Landroid/icu/text/UnicodeCompressor;->compress([CII)[B -Landroid/icu/text/UnicodeCompressor;->compress([CII[I[BII)I -Landroid/icu/text/UnicodeCompressor;->fCurrentWindow:I -Landroid/icu/text/UnicodeCompressor;->findDynamicWindow(I)I -Landroid/icu/text/UnicodeCompressor;->fIndexCount:[I -Landroid/icu/text/UnicodeCompressor;->findStaticWindow(I)I -Landroid/icu/text/UnicodeCompressor;->fMode:I -Landroid/icu/text/UnicodeCompressor;->fOffsets:[I -Landroid/icu/text/UnicodeCompressor;->fTimeStamp:I -Landroid/icu/text/UnicodeCompressor;->fTimeStamps:[I -Landroid/icu/text/UnicodeCompressor;->getLRDefinedWindow()I -Landroid/icu/text/UnicodeCompressor;->inDynamicWindow(II)Z -Landroid/icu/text/UnicodeCompressor;->inStaticWindow(II)Z -Landroid/icu/text/UnicodeCompressor;->isCompressible(I)Z -Landroid/icu/text/UnicodeCompressor;->makeIndex(I)I -Landroid/icu/text/UnicodeCompressor;->reset()V -Landroid/icu/text/UnicodeCompressor;->sSingleTagTable:[Z -Landroid/icu/text/UnicodeCompressor;->sUnicodeTagTable:[Z -Landroid/icu/text/UnicodeDecompressor;-><init>()V -Landroid/icu/text/UnicodeDecompressor;->BUFSIZE:I -Landroid/icu/text/UnicodeDecompressor;->decompress([B)Ljava/lang/String; -Landroid/icu/text/UnicodeDecompressor;->decompress([BII)[C -Landroid/icu/text/UnicodeDecompressor;->decompress([BII[I[CII)I -Landroid/icu/text/UnicodeDecompressor;->fBuffer:[B -Landroid/icu/text/UnicodeDecompressor;->fBufferLength:I -Landroid/icu/text/UnicodeDecompressor;->fCurrentWindow:I -Landroid/icu/text/UnicodeDecompressor;->fMode:I -Landroid/icu/text/UnicodeDecompressor;->fOffsets:[I -Landroid/icu/text/UnicodeDecompressor;->reset()V -Landroid/icu/text/UnicodeFilter;-><init>()V -Landroid/icu/text/UnicodeReplacer;->addReplacementSetTo(Landroid/icu/text/UnicodeSet;)V -Landroid/icu/text/UnicodeReplacer;->replace(Landroid/icu/text/Replaceable;II[I)I -Landroid/icu/text/UnicodeReplacer;->toReplacerPattern(Z)Ljava/lang/String; -Landroid/icu/text/UnicodeSet$EntryRange;-><init>()V -Landroid/icu/text/UnicodeSet$EntryRangeIterator;->pos:I -Landroid/icu/text/UnicodeSet$EntryRangeIterator;->result:Landroid/icu/text/UnicodeSet$EntryRange; -Landroid/icu/text/UnicodeSet$Filter;->contains(I)Z -Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;-><init>(I)V -Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;->contains(I)Z -Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;->mask:I -Landroid/icu/text/UnicodeSet$IntPropertyFilter;-><init>(II)V -Landroid/icu/text/UnicodeSet$IntPropertyFilter;->contains(I)Z -Landroid/icu/text/UnicodeSet$IntPropertyFilter;->prop:I -Landroid/icu/text/UnicodeSet$IntPropertyFilter;->value:I -Landroid/icu/text/UnicodeSet$NumericValueFilter;-><init>(D)V -Landroid/icu/text/UnicodeSet$NumericValueFilter;->contains(I)Z -Landroid/icu/text/UnicodeSet$NumericValueFilter;->value:D -Landroid/icu/text/UnicodeSet$ScriptExtensionsFilter;-><init>(I)V -Landroid/icu/text/UnicodeSet$ScriptExtensionsFilter;->contains(I)Z -Landroid/icu/text/UnicodeSet$ScriptExtensionsFilter;->script:I -Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;-><init>(Landroid/icu/text/UnicodeSet;)V -Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->buffer:[C -Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->current:I -Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->item:I -Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->len:I -Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->limit:I -Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->sourceList:[I -Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->sourceStrings:Ljava/util/TreeSet; -Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;->stringIterator:Ljava/util/Iterator; -Landroid/icu/text/UnicodeSet$VersionFilter;-><init>(Landroid/icu/util/VersionInfo;)V -Landroid/icu/text/UnicodeSet$VersionFilter;->contains(I)Z -Landroid/icu/text/UnicodeSet$VersionFilter;->version:Landroid/icu/util/VersionInfo; -Landroid/icu/text/UnicodeSet$XSymbolTable;-><init>()V -Landroid/icu/text/UnicodeSet$XSymbolTable;->applyPropertyAlias(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/UnicodeSet;)Z -Landroid/icu/text/UnicodeSet;->add([III)Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UnicodeSet;->addAllTo(Ljava/lang/Iterable;Ljava/util/Collection;)Ljava/util/Collection; -Landroid/icu/text/UnicodeSet;->addAllTo(Ljava/lang/Iterable;[Ljava/lang/Object;)[Ljava/lang/Object; -Landroid/icu/text/UnicodeSet;->addAllTo([Ljava/lang/String;)[Ljava/lang/String; -Landroid/icu/text/UnicodeSet;->addBridges(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UnicodeSet;->addCaseMapping(Landroid/icu/text/UnicodeSet;ILjava/lang/StringBuilder;)V -Landroid/icu/text/UnicodeSet;->add_unchecked(I)Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UnicodeSet;->add_unchecked(II)Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UnicodeSet;->ANY_ID:Ljava/lang/String; -Landroid/icu/text/UnicodeSet;->append(Ljava/lang/Appendable;Ljava/lang/CharSequence;)V -Landroid/icu/text/UnicodeSet;->appendCodePoint(Ljava/lang/Appendable;I)V -Landroid/icu/text/UnicodeSet;->appendNewPattern(Ljava/lang/Appendable;ZZ)Ljava/lang/Appendable; -Landroid/icu/text/UnicodeSet;->applyFilter(Landroid/icu/text/UnicodeSet$Filter;I)Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UnicodeSet;->applyPattern(Landroid/icu/impl/RuleCharacterIterator;Landroid/icu/text/SymbolTable;Ljava/lang/Appendable;I)V -Landroid/icu/text/UnicodeSet;->applyPattern(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/SymbolTable;I)Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UnicodeSet;->applyPropertyPattern(Landroid/icu/impl/RuleCharacterIterator;Ljava/lang/Appendable;Landroid/icu/text/SymbolTable;)V -Landroid/icu/text/UnicodeSet;->applyPropertyPattern(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/SymbolTable;)Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UnicodeSet;->ASCII_ID:Ljava/lang/String; -Landroid/icu/text/UnicodeSet;->ASSIGNED:Ljava/lang/String; -Landroid/icu/text/UnicodeSet;->bmpSet:Landroid/icu/impl/BMPSet; -Landroid/icu/text/UnicodeSet;->buffer:[I -Landroid/icu/text/UnicodeSet;->checkFrozen()V -Landroid/icu/text/UnicodeSet;->compare(ILjava/lang/CharSequence;)I -Landroid/icu/text/UnicodeSet;->compare(Ljava/lang/CharSequence;I)I -Landroid/icu/text/UnicodeSet;->compare(Ljava/lang/Iterable;Ljava/lang/Iterable;)I -Landroid/icu/text/UnicodeSet;->compare(Ljava/util/Collection;Ljava/util/Collection;Landroid/icu/text/UnicodeSet$ComparisonStyle;)I -Landroid/icu/text/UnicodeSet;->compare(Ljava/util/Iterator;Ljava/util/Iterator;)I -Landroid/icu/text/UnicodeSet;->containsAll(Ljava/lang/String;I)Z -Landroid/icu/text/UnicodeSet;->ensureBufferCapacity(I)V -Landroid/icu/text/UnicodeSet;->ensureCapacity(I)V -Landroid/icu/text/UnicodeSet;->findCodePoint(I)I -Landroid/icu/text/UnicodeSet;->findIn(Ljava/lang/CharSequence;IZ)I -Landroid/icu/text/UnicodeSet;->findLastIn(Ljava/lang/CharSequence;IZ)I -Landroid/icu/text/UnicodeSet;->getDefaultXSymbolTable()Landroid/icu/text/UnicodeSet$XSymbolTable; -Landroid/icu/text/UnicodeSet;->getInclusions(I)Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UnicodeSet;->getRegexEquivalent()Ljava/lang/String; -Landroid/icu/text/UnicodeSet;->getSingleCodePoint(Ljava/lang/CharSequence;)I -Landroid/icu/text/UnicodeSet;->getSingleCP(Ljava/lang/CharSequence;)I -Landroid/icu/text/UnicodeSet;->GROW_EXTRA:I -Landroid/icu/text/UnicodeSet;->HIGH:I -Landroid/icu/text/UnicodeSet;->INCLUSIONS:[Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UnicodeSet;->LAST0_START:I -Landroid/icu/text/UnicodeSet;->LAST1_RANGE:I -Landroid/icu/text/UnicodeSet;->LAST2_SET:I -Landroid/icu/text/UnicodeSet;->len:I -Landroid/icu/text/UnicodeSet;->list:[I -Landroid/icu/text/UnicodeSet;->LOW:I -Landroid/icu/text/UnicodeSet;->matchesAt(Ljava/lang/CharSequence;I)I -Landroid/icu/text/UnicodeSet;->matchesAt(Ljava/lang/CharSequence;ILjava/lang/CharSequence;)I -Landroid/icu/text/UnicodeSet;->matchRest(Landroid/icu/text/Replaceable;IILjava/lang/String;)I -Landroid/icu/text/UnicodeSet;->max(II)I -Landroid/icu/text/UnicodeSet;->MODE0_NONE:I -Landroid/icu/text/UnicodeSet;->MODE1_INBRACKET:I -Landroid/icu/text/UnicodeSet;->MODE2_OUTBRACKET:I -Landroid/icu/text/UnicodeSet;->mungeCharName(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/UnicodeSet;->NO_VERSION:Landroid/icu/util/VersionInfo; -Landroid/icu/text/UnicodeSet;->pat:Ljava/lang/String; -Landroid/icu/text/UnicodeSet;->range(II)[I -Landroid/icu/text/UnicodeSet;->rangeList:[I -Landroid/icu/text/UnicodeSet;->resemblesPattern(Ljava/lang/String;I)Z -Landroid/icu/text/UnicodeSet;->resemblesPropertyPattern(Landroid/icu/impl/RuleCharacterIterator;I)Z -Landroid/icu/text/UnicodeSet;->resemblesPropertyPattern(Ljava/lang/String;I)Z -Landroid/icu/text/UnicodeSet;->retain([III)Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UnicodeSet;->setDefaultXSymbolTable(Landroid/icu/text/UnicodeSet$XSymbolTable;)V -Landroid/icu/text/UnicodeSet;->SETMODE0_NONE:I -Landroid/icu/text/UnicodeSet;->SETMODE1_UNICODESET:I -Landroid/icu/text/UnicodeSet;->SETMODE2_PROPERTYPAT:I -Landroid/icu/text/UnicodeSet;->SETMODE3_PREPARSED:I -Landroid/icu/text/UnicodeSet;->spanAndCount(Ljava/lang/CharSequence;ILandroid/icu/text/UnicodeSet$SpanCondition;Landroid/icu/util/OutputInt;)I -Landroid/icu/text/UnicodeSet;->spanCodePointsAndCount(Ljava/lang/CharSequence;ILandroid/icu/text/UnicodeSet$SpanCondition;Landroid/icu/util/OutputInt;)I -Landroid/icu/text/UnicodeSet;->START_EXTRA:I -Landroid/icu/text/UnicodeSet;->strings:Ljava/util/TreeSet; -Landroid/icu/text/UnicodeSet;->stringSpan:Landroid/icu/impl/UnicodeSetStringSpan; -Landroid/icu/text/UnicodeSet;->stripFrom(Ljava/lang/CharSequence;Z)Ljava/lang/String; -Landroid/icu/text/UnicodeSet;->syntaxError(Landroid/icu/impl/RuleCharacterIterator;Ljava/lang/String;)V -Landroid/icu/text/UnicodeSet;->toArray(Landroid/icu/text/UnicodeSet;)[Ljava/lang/String; -Landroid/icu/text/UnicodeSet;->xor([III)Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UnicodeSet;->XSYMBOL_TABLE:Landroid/icu/text/UnicodeSet$XSymbolTable; -Landroid/icu/text/UnicodeSet;->_appendToPat(Ljava/lang/Appendable;IZ)Ljava/lang/Appendable; -Landroid/icu/text/UnicodeSet;->_appendToPat(Ljava/lang/Appendable;Ljava/lang/String;Z)Ljava/lang/Appendable; -Landroid/icu/text/UnicodeSet;->_toPattern(Ljava/lang/Appendable;Z)Ljava/lang/Appendable; -Landroid/icu/text/UnicodeSetIterator;->endElement:I -Landroid/icu/text/UnicodeSetIterator;->endRange:I -Landroid/icu/text/UnicodeSetIterator;->getSet()Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UnicodeSetIterator;->loadRange(I)V -Landroid/icu/text/UnicodeSetIterator;->nextElement:I -Landroid/icu/text/UnicodeSetIterator;->range:I -Landroid/icu/text/UnicodeSetIterator;->set:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UnicodeSetIterator;->stringIterator:Ljava/util/Iterator; -Landroid/icu/text/UnicodeSetSpanner;->unicodeSet:Landroid/icu/text/UnicodeSet; -Landroid/icu/text/UTF16$StringComparator;-><init>()V -Landroid/icu/text/UTF16$StringComparator;-><init>(ZZI)V -Landroid/icu/text/UTF16$StringComparator;->CODE_POINT_COMPARE_SURROGATE_OFFSET_:I -Landroid/icu/text/UTF16$StringComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I -Landroid/icu/text/UTF16$StringComparator;->compareCaseInsensitive(Ljava/lang/String;Ljava/lang/String;)I -Landroid/icu/text/UTF16$StringComparator;->compareCaseSensitive(Ljava/lang/String;Ljava/lang/String;)I -Landroid/icu/text/UTF16$StringComparator;->FOLD_CASE_DEFAULT:I -Landroid/icu/text/UTF16$StringComparator;->FOLD_CASE_EXCLUDE_SPECIAL_I:I -Landroid/icu/text/UTF16$StringComparator;->getCodePointCompare()Z -Landroid/icu/text/UTF16$StringComparator;->getIgnoreCase()Z -Landroid/icu/text/UTF16$StringComparator;->getIgnoreCaseOption()I -Landroid/icu/text/UTF16$StringComparator;->m_codePointCompare_:I -Landroid/icu/text/UTF16$StringComparator;->m_foldCase_:I -Landroid/icu/text/UTF16$StringComparator;->m_ignoreCase_:Z -Landroid/icu/text/UTF16$StringComparator;->setCodePointCompare(Z)V -Landroid/icu/text/UTF16$StringComparator;->setIgnoreCase(ZI)V -Landroid/icu/text/UTF16;-><init>()V -Landroid/icu/text/UTF16;->append(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer; -Landroid/icu/text/UTF16;->append([CII)I -Landroid/icu/text/UTF16;->appendCodePoint(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer; -Landroid/icu/text/UTF16;->bounds(Ljava/lang/String;I)I -Landroid/icu/text/UTF16;->bounds(Ljava/lang/StringBuffer;I)I -Landroid/icu/text/UTF16;->bounds([CIII)I -Landroid/icu/text/UTF16;->charAt(Landroid/icu/text/Replaceable;I)I -Landroid/icu/text/UTF16;->charAt(Ljava/lang/CharSequence;I)I -Landroid/icu/text/UTF16;->charAt(Ljava/lang/String;I)I -Landroid/icu/text/UTF16;->charAt(Ljava/lang/StringBuffer;I)I -Landroid/icu/text/UTF16;->charAt([CIII)I -Landroid/icu/text/UTF16;->CODEPOINT_MAX_VALUE:I -Landroid/icu/text/UTF16;->CODEPOINT_MIN_VALUE:I -Landroid/icu/text/UTF16;->compareCodePoint(ILjava/lang/CharSequence;)I -Landroid/icu/text/UTF16;->countCodePoint(Ljava/lang/String;)I -Landroid/icu/text/UTF16;->countCodePoint(Ljava/lang/StringBuffer;)I -Landroid/icu/text/UTF16;->countCodePoint([CII)I -Landroid/icu/text/UTF16;->delete(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer; -Landroid/icu/text/UTF16;->delete([CII)I -Landroid/icu/text/UTF16;->findCodePointOffset(Ljava/lang/String;I)I -Landroid/icu/text/UTF16;->findCodePointOffset(Ljava/lang/StringBuffer;I)I -Landroid/icu/text/UTF16;->findCodePointOffset([CIII)I -Landroid/icu/text/UTF16;->findOffsetFromCodePoint(Ljava/lang/String;I)I -Landroid/icu/text/UTF16;->findOffsetFromCodePoint(Ljava/lang/StringBuffer;I)I -Landroid/icu/text/UTF16;->findOffsetFromCodePoint([CIII)I -Landroid/icu/text/UTF16;->getCharCount(I)I -Landroid/icu/text/UTF16;->getLeadSurrogate(I)C -Landroid/icu/text/UTF16;->getSingleCodePoint(Ljava/lang/CharSequence;)I -Landroid/icu/text/UTF16;->getTrailSurrogate(I)C -Landroid/icu/text/UTF16;->hasMoreCodePointsThan(Ljava/lang/String;I)Z -Landroid/icu/text/UTF16;->hasMoreCodePointsThan(Ljava/lang/StringBuffer;I)Z -Landroid/icu/text/UTF16;->hasMoreCodePointsThan([CIII)Z -Landroid/icu/text/UTF16;->indexOf(Ljava/lang/String;I)I -Landroid/icu/text/UTF16;->indexOf(Ljava/lang/String;II)I -Landroid/icu/text/UTF16;->indexOf(Ljava/lang/String;Ljava/lang/String;)I -Landroid/icu/text/UTF16;->indexOf(Ljava/lang/String;Ljava/lang/String;I)I -Landroid/icu/text/UTF16;->insert(Ljava/lang/StringBuffer;II)Ljava/lang/StringBuffer; -Landroid/icu/text/UTF16;->insert([CIII)I -Landroid/icu/text/UTF16;->isLeadSurrogate(C)Z -Landroid/icu/text/UTF16;->isSurrogate(C)Z -Landroid/icu/text/UTF16;->isTrailSurrogate(C)Z -Landroid/icu/text/UTF16;->lastIndexOf(Ljava/lang/String;I)I -Landroid/icu/text/UTF16;->lastIndexOf(Ljava/lang/String;II)I -Landroid/icu/text/UTF16;->lastIndexOf(Ljava/lang/String;Ljava/lang/String;)I -Landroid/icu/text/UTF16;->lastIndexOf(Ljava/lang/String;Ljava/lang/String;I)I -Landroid/icu/text/UTF16;->LEAD_SURROGATE_BITMASK:I -Landroid/icu/text/UTF16;->LEAD_SURROGATE_BITS:I -Landroid/icu/text/UTF16;->LEAD_SURROGATE_BOUNDARY:I -Landroid/icu/text/UTF16;->LEAD_SURROGATE_MAX_VALUE:I -Landroid/icu/text/UTF16;->LEAD_SURROGATE_MIN_VALUE:I -Landroid/icu/text/UTF16;->LEAD_SURROGATE_OFFSET_:I -Landroid/icu/text/UTF16;->LEAD_SURROGATE_SHIFT_:I -Landroid/icu/text/UTF16;->moveCodePointOffset(Ljava/lang/String;II)I -Landroid/icu/text/UTF16;->moveCodePointOffset(Ljava/lang/StringBuffer;II)I -Landroid/icu/text/UTF16;->moveCodePointOffset([CIIII)I -Landroid/icu/text/UTF16;->newString([III)Ljava/lang/String; -Landroid/icu/text/UTF16;->replace(Ljava/lang/String;II)Ljava/lang/String; -Landroid/icu/text/UTF16;->replace(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/text/UTF16;->reverse(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer; -Landroid/icu/text/UTF16;->setCharAt(Ljava/lang/StringBuffer;II)V -Landroid/icu/text/UTF16;->setCharAt([CIII)I -Landroid/icu/text/UTF16;->SINGLE_CHAR_BOUNDARY:I -Landroid/icu/text/UTF16;->SUPPLEMENTARY_MIN_VALUE:I -Landroid/icu/text/UTF16;->SURROGATE_BITMASK:I -Landroid/icu/text/UTF16;->SURROGATE_BITS:I -Landroid/icu/text/UTF16;->SURROGATE_MAX_VALUE:I -Landroid/icu/text/UTF16;->SURROGATE_MIN_VALUE:I -Landroid/icu/text/UTF16;->toString(I)Ljava/lang/String; -Landroid/icu/text/UTF16;->TRAIL_SURROGATE_BITMASK:I -Landroid/icu/text/UTF16;->TRAIL_SURROGATE_BITS:I -Landroid/icu/text/UTF16;->TRAIL_SURROGATE_BOUNDARY:I -Landroid/icu/text/UTF16;->TRAIL_SURROGATE_MASK_:I -Landroid/icu/text/UTF16;->TRAIL_SURROGATE_MAX_VALUE:I -Landroid/icu/text/UTF16;->TRAIL_SURROGATE_MIN_VALUE:I -Landroid/icu/text/UTF16;->valueOf(I)Ljava/lang/String; -Landroid/icu/text/UTF16;->valueOf(Ljava/lang/String;I)Ljava/lang/String; -Landroid/icu/text/UTF16;->valueOf(Ljava/lang/StringBuffer;I)Ljava/lang/String; -Landroid/icu/text/UTF16;->valueOf([CIII)Ljava/lang/String; -Landroid/icu/text/UTF16;->_charAt(Ljava/lang/CharSequence;IC)I -Landroid/icu/text/UTF16;->_charAt(Ljava/lang/String;IC)I -Landroid/icu/util/AnnualTimeZoneRule;-><init>(Ljava/lang/String;IILandroid/icu/util/DateTimeRule;II)V -Landroid/icu/util/AnnualTimeZoneRule;->dateTimeRule:Landroid/icu/util/DateTimeRule; -Landroid/icu/util/AnnualTimeZoneRule;->endYear:I -Landroid/icu/util/AnnualTimeZoneRule;->getEndYear()I -Landroid/icu/util/AnnualTimeZoneRule;->getFinalStart(II)Ljava/util/Date; -Landroid/icu/util/AnnualTimeZoneRule;->getFirstStart(II)Ljava/util/Date; -Landroid/icu/util/AnnualTimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date; -Landroid/icu/util/AnnualTimeZoneRule;->getPreviousStart(JIIZ)Ljava/util/Date; -Landroid/icu/util/AnnualTimeZoneRule;->getRule()Landroid/icu/util/DateTimeRule; -Landroid/icu/util/AnnualTimeZoneRule;->getStartInYear(III)Ljava/util/Date; -Landroid/icu/util/AnnualTimeZoneRule;->getStartYear()I -Landroid/icu/util/AnnualTimeZoneRule;->isEquivalentTo(Landroid/icu/util/TimeZoneRule;)Z -Landroid/icu/util/AnnualTimeZoneRule;->isTransitionRule()Z -Landroid/icu/util/AnnualTimeZoneRule;->MAX_YEAR:I -Landroid/icu/util/AnnualTimeZoneRule;->startYear:I -Landroid/icu/util/BasicTimeZone;-><init>()V -Landroid/icu/util/BasicTimeZone;-><init>(Ljava/lang/String;)V -Landroid/icu/util/BasicTimeZone;->FORMER_LATTER_MASK:I -Landroid/icu/util/BasicTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition; -Landroid/icu/util/BasicTimeZone;->getOffsetFromLocal(JII[I)V -Landroid/icu/util/BasicTimeZone;->getPreviousTransition(JZ)Landroid/icu/util/TimeZoneTransition; -Landroid/icu/util/BasicTimeZone;->getSimpleTimeZoneRulesNear(J)[Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/BasicTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/BasicTimeZone;->getTimeZoneRules(J)[Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/BasicTimeZone;->hasEquivalentTransitions(Landroid/icu/util/TimeZone;JJ)Z -Landroid/icu/util/BasicTimeZone;->hasEquivalentTransitions(Landroid/icu/util/TimeZone;JJZ)Z -Landroid/icu/util/BasicTimeZone;->LOCAL_DST:I -Landroid/icu/util/BasicTimeZone;->LOCAL_FORMER:I -Landroid/icu/util/BasicTimeZone;->LOCAL_LATTER:I -Landroid/icu/util/BasicTimeZone;->LOCAL_STD:I -Landroid/icu/util/BasicTimeZone;->MILLIS_PER_YEAR:J -Landroid/icu/util/BasicTimeZone;->STD_DST_MASK:I -Landroid/icu/util/BuddhistCalendar;->BUDDHIST_ERA_START:I -Landroid/icu/util/BuddhistCalendar;->GREGORIAN_EPOCH:I -Landroid/icu/util/ByteArrayWrapper;-><init>()V -Landroid/icu/util/ByteArrayWrapper;-><init>(Ljava/nio/ByteBuffer;)V -Landroid/icu/util/ByteArrayWrapper;-><init>([BI)V -Landroid/icu/util/ByteArrayWrapper;->append([BII)Landroid/icu/util/ByteArrayWrapper; -Landroid/icu/util/ByteArrayWrapper;->bytes:[B -Landroid/icu/util/ByteArrayWrapper;->compareTo(Landroid/icu/util/ByteArrayWrapper;)I -Landroid/icu/util/ByteArrayWrapper;->copyBytes([BI[BII)V -Landroid/icu/util/ByteArrayWrapper;->ensureCapacity(I)Landroid/icu/util/ByteArrayWrapper; -Landroid/icu/util/ByteArrayWrapper;->releaseBytes()[B -Landroid/icu/util/ByteArrayWrapper;->set([BII)Landroid/icu/util/ByteArrayWrapper; -Landroid/icu/util/ByteArrayWrapper;->size:I -Landroid/icu/util/BytesTrie$Entry;-><init>(I)V -Landroid/icu/util/BytesTrie$Entry;->append(B)V -Landroid/icu/util/BytesTrie$Entry;->append([BII)V -Landroid/icu/util/BytesTrie$Entry;->byteAt(I)B -Landroid/icu/util/BytesTrie$Entry;->bytes:[B -Landroid/icu/util/BytesTrie$Entry;->bytesAsByteBuffer()Ljava/nio/ByteBuffer; -Landroid/icu/util/BytesTrie$Entry;->bytesLength()I -Landroid/icu/util/BytesTrie$Entry;->copyBytesTo([BI)V -Landroid/icu/util/BytesTrie$Entry;->ensureCapacity(I)V -Landroid/icu/util/BytesTrie$Entry;->length:I -Landroid/icu/util/BytesTrie$Entry;->truncateString(I)V -Landroid/icu/util/BytesTrie$Entry;->value:I -Landroid/icu/util/BytesTrie$Iterator;-><init>([BIII)V -Landroid/icu/util/BytesTrie$Iterator;->branchNext(II)I -Landroid/icu/util/BytesTrie$Iterator;->bytes_:[B -Landroid/icu/util/BytesTrie$Iterator;->entry_:Landroid/icu/util/BytesTrie$Entry; -Landroid/icu/util/BytesTrie$Iterator;->initialPos_:I -Landroid/icu/util/BytesTrie$Iterator;->initialRemainingMatchLength_:I -Landroid/icu/util/BytesTrie$Iterator;->maxLength_:I -Landroid/icu/util/BytesTrie$Iterator;->pos_:I -Landroid/icu/util/BytesTrie$Iterator;->remainingMatchLength_:I -Landroid/icu/util/BytesTrie$Iterator;->reset()Landroid/icu/util/BytesTrie$Iterator; -Landroid/icu/util/BytesTrie$Iterator;->stack_:Ljava/util/ArrayList; -Landroid/icu/util/BytesTrie$Iterator;->truncateAndStop()Landroid/icu/util/BytesTrie$Entry; -Landroid/icu/util/BytesTrie$Result;->FINAL_VALUE:Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/BytesTrie$Result;->hasNext()Z -Landroid/icu/util/BytesTrie$Result;->hasValue()Z -Landroid/icu/util/BytesTrie$Result;->INTERMEDIATE_VALUE:Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/BytesTrie$Result;->matches()Z -Landroid/icu/util/BytesTrie$Result;->NO_MATCH:Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/BytesTrie$Result;->NO_VALUE:Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/BytesTrie$Result;->valueOf(Ljava/lang/String;)Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/BytesTrie$Result;->values()[Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/BytesTrie$State;-><init>()V -Landroid/icu/util/BytesTrie$State;->bytes:[B -Landroid/icu/util/BytesTrie$State;->pos:I -Landroid/icu/util/BytesTrie$State;->remainingMatchLength:I -Landroid/icu/util/BytesTrie$State;->root:I -Landroid/icu/util/BytesTrie;-><init>([BI)V -Landroid/icu/util/BytesTrie;->append(Ljava/lang/Appendable;I)V -Landroid/icu/util/BytesTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/BytesTrie;->bytes_:[B -Landroid/icu/util/BytesTrie;->current()Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/BytesTrie;->findUniqueValue([BIJ)J -Landroid/icu/util/BytesTrie;->findUniqueValueFromBranch([BIIJ)J -Landroid/icu/util/BytesTrie;->first(I)Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/BytesTrie;->getNextBranchBytes([BIILjava/lang/Appendable;)V -Landroid/icu/util/BytesTrie;->getNextBytes(Ljava/lang/Appendable;)I -Landroid/icu/util/BytesTrie;->getUniqueValue()J -Landroid/icu/util/BytesTrie;->getValue()I -Landroid/icu/util/BytesTrie;->iterator(I)Landroid/icu/util/BytesTrie$Iterator; -Landroid/icu/util/BytesTrie;->iterator([BII)Landroid/icu/util/BytesTrie$Iterator; -Landroid/icu/util/BytesTrie;->jumpByDelta([BI)I -Landroid/icu/util/BytesTrie;->kFiveByteDeltaLead:I -Landroid/icu/util/BytesTrie;->kFiveByteValueLead:I -Landroid/icu/util/BytesTrie;->kFourByteDeltaLead:I -Landroid/icu/util/BytesTrie;->kFourByteValueLead:I -Landroid/icu/util/BytesTrie;->kMaxBranchLinearSubNodeLength:I -Landroid/icu/util/BytesTrie;->kMaxLinearMatchLength:I -Landroid/icu/util/BytesTrie;->kMaxOneByteDelta:I -Landroid/icu/util/BytesTrie;->kMaxOneByteValue:I -Landroid/icu/util/BytesTrie;->kMaxThreeByteDelta:I -Landroid/icu/util/BytesTrie;->kMaxThreeByteValue:I -Landroid/icu/util/BytesTrie;->kMaxTwoByteDelta:I -Landroid/icu/util/BytesTrie;->kMaxTwoByteValue:I -Landroid/icu/util/BytesTrie;->kMinLinearMatch:I -Landroid/icu/util/BytesTrie;->kMinOneByteValueLead:I -Landroid/icu/util/BytesTrie;->kMinThreeByteDeltaLead:I -Landroid/icu/util/BytesTrie;->kMinThreeByteValueLead:I -Landroid/icu/util/BytesTrie;->kMinTwoByteDeltaLead:I -Landroid/icu/util/BytesTrie;->kMinTwoByteValueLead:I -Landroid/icu/util/BytesTrie;->kMinValueLead:I -Landroid/icu/util/BytesTrie;->kValueIsFinal:I -Landroid/icu/util/BytesTrie;->next(I)Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/BytesTrie;->next([BII)Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/BytesTrie;->nextImpl(II)Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/BytesTrie;->pos_:I -Landroid/icu/util/BytesTrie;->readValue([BII)I -Landroid/icu/util/BytesTrie;->remainingMatchLength_:I -Landroid/icu/util/BytesTrie;->reset()Landroid/icu/util/BytesTrie; -Landroid/icu/util/BytesTrie;->resetToState(Landroid/icu/util/BytesTrie$State;)Landroid/icu/util/BytesTrie; -Landroid/icu/util/BytesTrie;->root_:I -Landroid/icu/util/BytesTrie;->saveState(Landroid/icu/util/BytesTrie$State;)Landroid/icu/util/BytesTrie; -Landroid/icu/util/BytesTrie;->skipDelta([BI)I -Landroid/icu/util/BytesTrie;->skipValue(II)I -Landroid/icu/util/BytesTrie;->skipValue([BI)I -Landroid/icu/util/BytesTrie;->stop()V -Landroid/icu/util/BytesTrie;->valueResults_:[Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/BytesTrieBuilder$BytesAsCharSequence;-><init>([BI)V -Landroid/icu/util/BytesTrieBuilder$BytesAsCharSequence;->len:I -Landroid/icu/util/BytesTrieBuilder$BytesAsCharSequence;->s:[B -Landroid/icu/util/BytesTrieBuilder;-><init>()V -Landroid/icu/util/BytesTrieBuilder;->add([BII)Landroid/icu/util/BytesTrieBuilder; -Landroid/icu/util/BytesTrieBuilder;->build(Landroid/icu/util/StringTrieBuilder$Option;)Landroid/icu/util/BytesTrie; -Landroid/icu/util/BytesTrieBuilder;->buildByteBuffer(Landroid/icu/util/StringTrieBuilder$Option;)Ljava/nio/ByteBuffer; -Landroid/icu/util/BytesTrieBuilder;->buildBytes(Landroid/icu/util/StringTrieBuilder$Option;)V -Landroid/icu/util/BytesTrieBuilder;->bytes:[B -Landroid/icu/util/BytesTrieBuilder;->bytesLength:I -Landroid/icu/util/BytesTrieBuilder;->clear()Landroid/icu/util/BytesTrieBuilder; -Landroid/icu/util/BytesTrieBuilder;->ensureCapacity(I)V -Landroid/icu/util/BytesTrieBuilder;->getMaxBranchLinearSubNodeLength()I -Landroid/icu/util/BytesTrieBuilder;->getMaxLinearMatchLength()I -Landroid/icu/util/BytesTrieBuilder;->getMinLinearMatch()I -Landroid/icu/util/BytesTrieBuilder;->intBytes:[B -Landroid/icu/util/BytesTrieBuilder;->matchNodesCanHaveValues()Z -Landroid/icu/util/BytesTrieBuilder;->write(I)I -Landroid/icu/util/BytesTrieBuilder;->write(II)I -Landroid/icu/util/BytesTrieBuilder;->write([BI)I -Landroid/icu/util/BytesTrieBuilder;->writeDeltaTo(I)I -Landroid/icu/util/BytesTrieBuilder;->writeValueAndFinal(IZ)I -Landroid/icu/util/BytesTrieBuilder;->writeValueAndType(ZII)I -Landroid/icu/util/Calendar$CalType;->BUDDHIST:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->CHINESE:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->COPTIC:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->DANGI:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->ETHIOPIC:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->ETHIOPIC_AMETE_ALEM:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->GREGORIAN:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->HEBREW:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->id:Ljava/lang/String; -Landroid/icu/util/Calendar$CalType;->INDIAN:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->ISLAMIC:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->ISLAMIC_CIVIL:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->ISLAMIC_RGSA:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->ISLAMIC_TBLA:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->ISLAMIC_UMALQURA:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->ISO8601:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->JAPANESE:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->PERSIAN:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->ROC:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->UNKNOWN:Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->valueOf(Ljava/lang/String;)Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$CalType;->values()[Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar$FormatConfiguration;-><init>()V -Landroid/icu/util/Calendar$FormatConfiguration;->cal:Landroid/icu/util/Calendar; -Landroid/icu/util/Calendar$FormatConfiguration;->formatData:Landroid/icu/text/DateFormatSymbols; -Landroid/icu/util/Calendar$FormatConfiguration;->getCalendar()Landroid/icu/util/Calendar; -Landroid/icu/util/Calendar$FormatConfiguration;->getDateFormatSymbols()Landroid/icu/text/DateFormatSymbols; -Landroid/icu/util/Calendar$FormatConfiguration;->getLocale()Landroid/icu/util/ULocale; -Landroid/icu/util/Calendar$FormatConfiguration;->getOverrideString()Ljava/lang/String; -Landroid/icu/util/Calendar$FormatConfiguration;->getPatternString()Ljava/lang/String; -Landroid/icu/util/Calendar$FormatConfiguration;->loc:Landroid/icu/util/ULocale; -Landroid/icu/util/Calendar$FormatConfiguration;->override:Ljava/lang/String; -Landroid/icu/util/Calendar$FormatConfiguration;->pattern:Ljava/lang/String; -Landroid/icu/util/Calendar$PatternData;-><init>([Ljava/lang/String;[Ljava/lang/String;)V -Landroid/icu/util/Calendar$PatternData;->getDateTimePattern(I)Ljava/lang/String; -Landroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar$PatternData; -Landroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData; -Landroid/icu/util/Calendar$PatternData;->overrides:[Ljava/lang/String; -Landroid/icu/util/Calendar$PatternData;->patterns:[Ljava/lang/String; -Landroid/icu/util/Calendar$WeekDataCache;-><init>()V -Landroid/icu/util/Calendar$WeekDataCache;->createInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData; -Landroid/icu/util/Calendar;->actualLocale:Landroid/icu/util/ULocale; -Landroid/icu/util/Calendar;->areAllFieldsSet:Z -Landroid/icu/util/Calendar;->areFieldsSet:Z -Landroid/icu/util/Calendar;->areFieldsVirtuallySet:Z -Landroid/icu/util/Calendar;->compare(Ljava/lang/Object;)J -Landroid/icu/util/Calendar;->computeGregorianAndDOWFields(I)V -Landroid/icu/util/Calendar;->computeMillisInDayLong()J -Landroid/icu/util/Calendar;->computeWeekFields()V -Landroid/icu/util/Calendar;->computeZoneOffset(JJ)I -Landroid/icu/util/Calendar;->createInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar; -Landroid/icu/util/Calendar;->DATE_PRECEDENCE:[[[I -Landroid/icu/util/Calendar;->DEFAULT_PATTERNS:[Ljava/lang/String; -Landroid/icu/util/Calendar;->DOW_PRECEDENCE:[[[I -Landroid/icu/util/Calendar;->expandOverride(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/util/Calendar;->fields:[I -Landroid/icu/util/Calendar;->FIELD_DIFF_MAX_INT:I -Landroid/icu/util/Calendar;->FIELD_NAME:[Ljava/lang/String; -Landroid/icu/util/Calendar;->findPreviousZoneTransitionTime(Landroid/icu/util/TimeZone;IJJ)Ljava/lang/Long; -Landroid/icu/util/Calendar;->FIND_ZONE_TRANSITION_TIME_UNITS:[I -Landroid/icu/util/Calendar;->firstDayOfWeek:I -Landroid/icu/util/Calendar;->firstIslamicStartYearFromGrego(I)I -Landroid/icu/util/Calendar;->formatHelper(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;II)Landroid/icu/text/DateFormat; -Landroid/icu/util/Calendar;->getActualHelper(III)I -Landroid/icu/util/Calendar;->getAvailableULocales()[Landroid/icu/util/ULocale; -Landroid/icu/util/Calendar;->getCalendarTypeForLocale(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar$CalType; -Landroid/icu/util/Calendar;->getDateTimeFormatString(Landroid/icu/util/ULocale;Ljava/lang/String;II)Ljava/lang/String; -Landroid/icu/util/Calendar;->getDateTimePattern(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;I)Ljava/lang/String; -Landroid/icu/util/Calendar;->getDayOfWeekType(I)I -Landroid/icu/util/Calendar;->getDefaultDayInMonth(II)I -Landroid/icu/util/Calendar;->getDefaultMonthInYear(I)I -Landroid/icu/util/Calendar;->getImmediatePreviousZoneTransition(J)Ljava/lang/Long; -Landroid/icu/util/Calendar;->getInstanceInternal(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar; -Landroid/icu/util/Calendar;->getPatternData(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData; -Landroid/icu/util/Calendar;->getPreviousZoneTransitionTime(Landroid/icu/util/TimeZone;JJ)Ljava/lang/Long; -Landroid/icu/util/Calendar;->getRegionForCalendar(Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/util/Calendar;->getRelatedYear()I -Landroid/icu/util/Calendar;->getWeekDataForRegionInternal(Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData; -Landroid/icu/util/Calendar;->getWeekendTransition(I)I -Landroid/icu/util/Calendar;->gregorianDayOfMonth:I -Landroid/icu/util/Calendar;->gregorianDayOfYear:I -Landroid/icu/util/Calendar;->gregorianMonth:I -Landroid/icu/util/Calendar;->gregorianYear:I -Landroid/icu/util/Calendar;->GREGORIAN_MONTH_COUNT:[[I -Landroid/icu/util/Calendar;->gregoYearFromIslamicStart(I)I -Landroid/icu/util/Calendar;->handleGetDateFormat(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat; -Landroid/icu/util/Calendar;->haveDefaultCentury()Z -Landroid/icu/util/Calendar;->initInternal()V -Landroid/icu/util/Calendar;->internalSetMask:I -Landroid/icu/util/Calendar;->isTimeSet:Z -Landroid/icu/util/Calendar;->lenient:Z -Landroid/icu/util/Calendar;->LIMITS:[[I -Landroid/icu/util/Calendar;->MAX_HOURS:I -Landroid/icu/util/Calendar;->mergeOverrideStrings(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/util/Calendar;->minimalDaysInFirstWeek:I -Landroid/icu/util/Calendar;->nextStamp:I -Landroid/icu/util/Calendar;->PATTERN_CACHE:Landroid/icu/impl/ICUCache; -Landroid/icu/util/Calendar;->QUOTE:C -Landroid/icu/util/Calendar;->recalculateStamp()V -Landroid/icu/util/Calendar;->repeatedWallTime:I -Landroid/icu/util/Calendar;->setCalendarLocale(Landroid/icu/util/ULocale;)V -Landroid/icu/util/Calendar;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V -Landroid/icu/util/Calendar;->setRelatedYear(I)V -Landroid/icu/util/Calendar;->setWeekData(Ljava/lang/String;)V -Landroid/icu/util/Calendar;->skippedWallTime:I -Landroid/icu/util/Calendar;->stamp:[I -Landroid/icu/util/Calendar;->STAMP_MAX:I -Landroid/icu/util/Calendar;->time:J -Landroid/icu/util/Calendar;->updateTime()V -Landroid/icu/util/Calendar;->validLocale:Landroid/icu/util/ULocale; -Landroid/icu/util/Calendar;->WEEKDAY:I -Landroid/icu/util/Calendar;->WEEKEND:I -Landroid/icu/util/Calendar;->weekendCease:I -Landroid/icu/util/Calendar;->weekendCeaseMillis:I -Landroid/icu/util/Calendar;->weekendOnset:I -Landroid/icu/util/Calendar;->weekendOnsetMillis:I -Landroid/icu/util/Calendar;->WEEKEND_CEASE:I -Landroid/icu/util/Calendar;->WEEKEND_ONSET:I -Landroid/icu/util/Calendar;->WEEK_DATA_CACHE:Landroid/icu/util/Calendar$WeekDataCache; -Landroid/icu/util/Calendar;->zone:Landroid/icu/util/TimeZone; -Landroid/icu/util/CaseInsensitiveString;-><init>(Ljava/lang/String;)V -Landroid/icu/util/CaseInsensitiveString;->foldCase(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/util/CaseInsensitiveString;->folded:Ljava/lang/String; -Landroid/icu/util/CaseInsensitiveString;->getFolded()V -Landroid/icu/util/CaseInsensitiveString;->getString()Ljava/lang/String; -Landroid/icu/util/CaseInsensitiveString;->hash:I -Landroid/icu/util/CaseInsensitiveString;->string:Ljava/lang/String; -Landroid/icu/util/CECalendar;-><init>()V -Landroid/icu/util/CECalendar;-><init>(III)V -Landroid/icu/util/CECalendar;-><init>(IIIIII)V -Landroid/icu/util/CECalendar;-><init>(Landroid/icu/util/TimeZone;)V -Landroid/icu/util/CECalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V -Landroid/icu/util/CECalendar;-><init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V -Landroid/icu/util/CECalendar;-><init>(Landroid/icu/util/ULocale;)V -Landroid/icu/util/CECalendar;-><init>(Ljava/util/Date;)V -Landroid/icu/util/CECalendar;-><init>(Ljava/util/Locale;)V -Landroid/icu/util/CECalendar;->ceToJD(JIII)I -Landroid/icu/util/CECalendar;->getJDEpochOffset()I -Landroid/icu/util/CECalendar;->jdToCE(II[I)V -Landroid/icu/util/CECalendar;->LIMITS:[[I -Landroid/icu/util/CharsTrie$Entry;-><init>()V -Landroid/icu/util/CharsTrie$Entry;->chars:Ljava/lang/CharSequence; -Landroid/icu/util/CharsTrie$Entry;->value:I -Landroid/icu/util/CharsTrie$Iterator;-><init>(Ljava/lang/CharSequence;III)V -Landroid/icu/util/CharsTrie$Iterator;->branchNext(II)I -Landroid/icu/util/CharsTrie$Iterator;->chars_:Ljava/lang/CharSequence; -Landroid/icu/util/CharsTrie$Iterator;->entry_:Landroid/icu/util/CharsTrie$Entry; -Landroid/icu/util/CharsTrie$Iterator;->initialPos_:I -Landroid/icu/util/CharsTrie$Iterator;->initialRemainingMatchLength_:I -Landroid/icu/util/CharsTrie$Iterator;->maxLength_:I -Landroid/icu/util/CharsTrie$Iterator;->pos_:I -Landroid/icu/util/CharsTrie$Iterator;->remainingMatchLength_:I -Landroid/icu/util/CharsTrie$Iterator;->reset()Landroid/icu/util/CharsTrie$Iterator; -Landroid/icu/util/CharsTrie$Iterator;->skipValue_:Z -Landroid/icu/util/CharsTrie$Iterator;->stack_:Ljava/util/ArrayList; -Landroid/icu/util/CharsTrie$Iterator;->str_:Ljava/lang/StringBuilder; -Landroid/icu/util/CharsTrie$Iterator;->truncateAndStop()Landroid/icu/util/CharsTrie$Entry; -Landroid/icu/util/CharsTrie$State;-><init>()V -Landroid/icu/util/CharsTrie$State;->chars:Ljava/lang/CharSequence; -Landroid/icu/util/CharsTrie$State;->pos:I -Landroid/icu/util/CharsTrie$State;->remainingMatchLength:I -Landroid/icu/util/CharsTrie$State;->root:I -Landroid/icu/util/CharsTrie;-><init>(Ljava/lang/CharSequence;I)V -Landroid/icu/util/CharsTrie;->append(Ljava/lang/Appendable;I)V -Landroid/icu/util/CharsTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/CharsTrie;->chars_:Ljava/lang/CharSequence; -Landroid/icu/util/CharsTrie;->current()Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/CharsTrie;->findUniqueValue(Ljava/lang/CharSequence;IJ)J -Landroid/icu/util/CharsTrie;->findUniqueValueFromBranch(Ljava/lang/CharSequence;IIJ)J -Landroid/icu/util/CharsTrie;->first(I)Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/CharsTrie;->firstForCodePoint(I)Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/CharsTrie;->getNextBranchChars(Ljava/lang/CharSequence;IILjava/lang/Appendable;)V -Landroid/icu/util/CharsTrie;->getNextChars(Ljava/lang/Appendable;)I -Landroid/icu/util/CharsTrie;->getUniqueValue()J -Landroid/icu/util/CharsTrie;->getValue()I -Landroid/icu/util/CharsTrie;->iterator(I)Landroid/icu/util/CharsTrie$Iterator; -Landroid/icu/util/CharsTrie;->iterator(Ljava/lang/CharSequence;II)Landroid/icu/util/CharsTrie$Iterator; -Landroid/icu/util/CharsTrie;->jumpByDelta(Ljava/lang/CharSequence;I)I -Landroid/icu/util/CharsTrie;->kMaxBranchLinearSubNodeLength:I -Landroid/icu/util/CharsTrie;->kMaxLinearMatchLength:I -Landroid/icu/util/CharsTrie;->kMaxOneUnitDelta:I -Landroid/icu/util/CharsTrie;->kMaxOneUnitNodeValue:I -Landroid/icu/util/CharsTrie;->kMaxOneUnitValue:I -Landroid/icu/util/CharsTrie;->kMaxTwoUnitDelta:I -Landroid/icu/util/CharsTrie;->kMaxTwoUnitNodeValue:I -Landroid/icu/util/CharsTrie;->kMaxTwoUnitValue:I -Landroid/icu/util/CharsTrie;->kMinLinearMatch:I -Landroid/icu/util/CharsTrie;->kMinTwoUnitDeltaLead:I -Landroid/icu/util/CharsTrie;->kMinTwoUnitNodeValueLead:I -Landroid/icu/util/CharsTrie;->kMinTwoUnitValueLead:I -Landroid/icu/util/CharsTrie;->kMinValueLead:I -Landroid/icu/util/CharsTrie;->kNodeTypeMask:I -Landroid/icu/util/CharsTrie;->kThreeUnitDeltaLead:I -Landroid/icu/util/CharsTrie;->kThreeUnitNodeValueLead:I -Landroid/icu/util/CharsTrie;->kThreeUnitValueLead:I -Landroid/icu/util/CharsTrie;->kValueIsFinal:I -Landroid/icu/util/CharsTrie;->next(I)Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/CharsTrie;->next(Ljava/lang/CharSequence;II)Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/CharsTrie;->nextForCodePoint(I)Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/CharsTrie;->nextImpl(II)Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/CharsTrie;->pos_:I -Landroid/icu/util/CharsTrie;->readNodeValue(Ljava/lang/CharSequence;II)I -Landroid/icu/util/CharsTrie;->readValue(Ljava/lang/CharSequence;II)I -Landroid/icu/util/CharsTrie;->remainingMatchLength_:I -Landroid/icu/util/CharsTrie;->reset()Landroid/icu/util/CharsTrie; -Landroid/icu/util/CharsTrie;->resetToState(Landroid/icu/util/CharsTrie$State;)Landroid/icu/util/CharsTrie; -Landroid/icu/util/CharsTrie;->root_:I -Landroid/icu/util/CharsTrie;->saveState(Landroid/icu/util/CharsTrie$State;)Landroid/icu/util/CharsTrie; -Landroid/icu/util/CharsTrie;->skipDelta(Ljava/lang/CharSequence;I)I -Landroid/icu/util/CharsTrie;->skipNodeValue(II)I -Landroid/icu/util/CharsTrie;->skipValue(II)I -Landroid/icu/util/CharsTrie;->skipValue(Ljava/lang/CharSequence;I)I -Landroid/icu/util/CharsTrie;->stop()V -Landroid/icu/util/CharsTrie;->valueResults_:[Landroid/icu/util/BytesTrie$Result; -Landroid/icu/util/CharsTrieBuilder;-><init>()V -Landroid/icu/util/CharsTrieBuilder;->add(Ljava/lang/CharSequence;I)Landroid/icu/util/CharsTrieBuilder; -Landroid/icu/util/CharsTrieBuilder;->build(Landroid/icu/util/StringTrieBuilder$Option;)Landroid/icu/util/CharsTrie; -Landroid/icu/util/CharsTrieBuilder;->buildChars(Landroid/icu/util/StringTrieBuilder$Option;)V -Landroid/icu/util/CharsTrieBuilder;->buildCharSequence(Landroid/icu/util/StringTrieBuilder$Option;)Ljava/lang/CharSequence; -Landroid/icu/util/CharsTrieBuilder;->chars:[C -Landroid/icu/util/CharsTrieBuilder;->charsLength:I -Landroid/icu/util/CharsTrieBuilder;->clear()Landroid/icu/util/CharsTrieBuilder; -Landroid/icu/util/CharsTrieBuilder;->ensureCapacity(I)V -Landroid/icu/util/CharsTrieBuilder;->getMaxBranchLinearSubNodeLength()I -Landroid/icu/util/CharsTrieBuilder;->getMaxLinearMatchLength()I -Landroid/icu/util/CharsTrieBuilder;->getMinLinearMatch()I -Landroid/icu/util/CharsTrieBuilder;->intUnits:[C -Landroid/icu/util/CharsTrieBuilder;->matchNodesCanHaveValues()Z -Landroid/icu/util/CharsTrieBuilder;->write(I)I -Landroid/icu/util/CharsTrieBuilder;->write(II)I -Landroid/icu/util/CharsTrieBuilder;->write([CI)I -Landroid/icu/util/CharsTrieBuilder;->writeDeltaTo(I)I -Landroid/icu/util/CharsTrieBuilder;->writeValueAndFinal(IZ)I -Landroid/icu/util/CharsTrieBuilder;->writeValueAndType(ZII)I -Landroid/icu/util/ChineseCalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;ILandroid/icu/util/TimeZone;)V -Landroid/icu/util/ChineseCalendar;->astro:Landroid/icu/impl/CalendarAstronomer; -Landroid/icu/util/ChineseCalendar;->CHINA_ZONE:Landroid/icu/util/TimeZone; -Landroid/icu/util/ChineseCalendar;->CHINESE_DATE_PRECEDENCE:[[[I -Landroid/icu/util/ChineseCalendar;->CHINESE_EPOCH_YEAR:I -Landroid/icu/util/ChineseCalendar;->computeChineseFields(IIIZ)V -Landroid/icu/util/ChineseCalendar;->daysToMillis(I)J -Landroid/icu/util/ChineseCalendar;->epochYear:I -Landroid/icu/util/ChineseCalendar;->hasNoMajorSolarTerm(I)Z -Landroid/icu/util/ChineseCalendar;->haveDefaultCentury()Z -Landroid/icu/util/ChineseCalendar;->isLeapMonthBetween(II)Z -Landroid/icu/util/ChineseCalendar;->isLeapYear:Z -Landroid/icu/util/ChineseCalendar;->LIMITS:[[I -Landroid/icu/util/ChineseCalendar;->majorSolarTerm(I)I -Landroid/icu/util/ChineseCalendar;->millisToDays(J)I -Landroid/icu/util/ChineseCalendar;->newMoonNear(IZ)I -Landroid/icu/util/ChineseCalendar;->newYear(I)I -Landroid/icu/util/ChineseCalendar;->newYearCache:Landroid/icu/impl/CalendarCache; -Landroid/icu/util/ChineseCalendar;->offsetMonth(III)V -Landroid/icu/util/ChineseCalendar;->synodicMonthsBetween(II)I -Landroid/icu/util/ChineseCalendar;->SYNODIC_GAP:I -Landroid/icu/util/ChineseCalendar;->winterSolstice(I)I -Landroid/icu/util/ChineseCalendar;->winterSolsticeCache:Landroid/icu/impl/CalendarCache; -Landroid/icu/util/ChineseCalendar;->zoneAstro:Landroid/icu/util/TimeZone; -Landroid/icu/util/CompactByteArray;-><init>()V -Landroid/icu/util/CompactByteArray;-><init>(B)V -Landroid/icu/util/CompactByteArray;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/util/CompactByteArray;-><init>([C[B)V -Landroid/icu/util/CompactByteArray;->arrayRegionMatches([BI[BII)Z -Landroid/icu/util/CompactByteArray;->BLOCKCOUNT:I -Landroid/icu/util/CompactByteArray;->BLOCKMASK:I -Landroid/icu/util/CompactByteArray;->BLOCKSHIFT:I -Landroid/icu/util/CompactByteArray;->blockTouched(I)Z -Landroid/icu/util/CompactByteArray;->compact()V -Landroid/icu/util/CompactByteArray;->compact(Z)V -Landroid/icu/util/CompactByteArray;->defaultValue:B -Landroid/icu/util/CompactByteArray;->elementAt(C)B -Landroid/icu/util/CompactByteArray;->expand()V -Landroid/icu/util/CompactByteArray;->getIndexArray()[C -Landroid/icu/util/CompactByteArray;->getValueArray()[B -Landroid/icu/util/CompactByteArray;->hashes:[I -Landroid/icu/util/CompactByteArray;->INDEXCOUNT:I -Landroid/icu/util/CompactByteArray;->INDEXSHIFT:I -Landroid/icu/util/CompactByteArray;->indices:[C -Landroid/icu/util/CompactByteArray;->isCompact:Z -Landroid/icu/util/CompactByteArray;->setElementAt(CB)V -Landroid/icu/util/CompactByteArray;->setElementAt(CCB)V -Landroid/icu/util/CompactByteArray;->touchBlock(II)V -Landroid/icu/util/CompactByteArray;->UNICODECOUNT:I -Landroid/icu/util/CompactByteArray;->values:[B -Landroid/icu/util/CompactCharArray;-><init>()V -Landroid/icu/util/CompactCharArray;-><init>(C)V -Landroid/icu/util/CompactCharArray;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/util/CompactCharArray;-><init>([C[C)V -Landroid/icu/util/CompactCharArray;->arrayRegionMatches([CI[CII)Z -Landroid/icu/util/CompactCharArray;->BLOCKCOUNT:I -Landroid/icu/util/CompactCharArray;->BLOCKMASK:I -Landroid/icu/util/CompactCharArray;->BLOCKSHIFT:I -Landroid/icu/util/CompactCharArray;->blockTouched(I)Z -Landroid/icu/util/CompactCharArray;->compact()V -Landroid/icu/util/CompactCharArray;->compact(Z)V -Landroid/icu/util/CompactCharArray;->defaultValue:C -Landroid/icu/util/CompactCharArray;->elementAt(C)C -Landroid/icu/util/CompactCharArray;->expand()V -Landroid/icu/util/CompactCharArray;->FindOverlappingPosition(I[CI)I -Landroid/icu/util/CompactCharArray;->getIndexArray()[C -Landroid/icu/util/CompactCharArray;->getValueArray()[C -Landroid/icu/util/CompactCharArray;->hashes:[I -Landroid/icu/util/CompactCharArray;->INDEXCOUNT:I -Landroid/icu/util/CompactCharArray;->INDEXSHIFT:I -Landroid/icu/util/CompactCharArray;->indices:[C -Landroid/icu/util/CompactCharArray;->isCompact:Z -Landroid/icu/util/CompactCharArray;->setElementAt(CC)V -Landroid/icu/util/CompactCharArray;->setElementAt(CCC)V -Landroid/icu/util/CompactCharArray;->touchBlock(II)V -Landroid/icu/util/CompactCharArray;->UNICODECOUNT:I -Landroid/icu/util/CompactCharArray;->values:[C -Landroid/icu/util/CopticCalendar;->BCE:I -Landroid/icu/util/CopticCalendar;->CE:I -Landroid/icu/util/CopticCalendar;->copticToJD(JII)I -Landroid/icu/util/CopticCalendar;->getJDEpochOffset()I -Landroid/icu/util/CopticCalendar;->JD_EPOCH_OFFSET:I -Landroid/icu/util/Currency$CurrencyNameResultHandler;-><init>()V -Landroid/icu/util/Currency$CurrencyNameResultHandler;->bestCurrencyISOCode:Ljava/lang/String; -Landroid/icu/util/Currency$CurrencyNameResultHandler;->bestMatchLength:I -Landroid/icu/util/Currency$CurrencyNameResultHandler;->getBestCurrencyISOCode()Ljava/lang/String; -Landroid/icu/util/Currency$CurrencyNameResultHandler;->getBestMatchLength()I -Landroid/icu/util/Currency$CurrencyNameResultHandler;->handlePrefixMatch(ILjava/util/Iterator;)Z -Landroid/icu/util/Currency$CurrencyStringInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/util/Currency$CurrencyStringInfo;->currencyString:Ljava/lang/String; -Landroid/icu/util/Currency$CurrencyStringInfo;->getCurrencyString()Ljava/lang/String; -Landroid/icu/util/Currency$CurrencyStringInfo;->getISOCode()Ljava/lang/String; -Landroid/icu/util/Currency$CurrencyStringInfo;->isoCode:Ljava/lang/String; -Landroid/icu/util/Currency$EquivalenceRelation;-><init>()V -Landroid/icu/util/Currency$EquivalenceRelation;->data:Ljava/util/Map; -Landroid/icu/util/Currency$EquivalenceRelation;->get(Ljava/lang/Object;)Ljava/util/Set; -Landroid/icu/util/Currency$ServiceShim;-><init>()V -Landroid/icu/util/Currency$ServiceShim;->createInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Currency; -Landroid/icu/util/Currency$ServiceShim;->getAvailableLocales()[Ljava/util/Locale; -Landroid/icu/util/Currency$ServiceShim;->getAvailableULocales()[Landroid/icu/util/ULocale; -Landroid/icu/util/Currency$ServiceShim;->registerInstance(Landroid/icu/util/Currency;Landroid/icu/util/ULocale;)Ljava/lang/Object; -Landroid/icu/util/Currency$ServiceShim;->unregister(Ljava/lang/Object;)Z -Landroid/icu/util/Currency;->ALL_CODES_AS_SET:Ljava/lang/ref/SoftReference; -Landroid/icu/util/Currency;->ALL_TENDER_CODES:Ljava/lang/ref/SoftReference; -Landroid/icu/util/Currency;->createCurrency(Landroid/icu/util/ULocale;)Landroid/icu/util/Currency; -Landroid/icu/util/Currency;->CURRENCY_NAME_CACHE:Landroid/icu/impl/ICUCache; -Landroid/icu/util/Currency;->DEBUG:Z -Landroid/icu/util/Currency;->EMPTY_STRING_ARRAY:[Ljava/lang/String; -Landroid/icu/util/Currency;->EQUIVALENT_CURRENCY_SYMBOLS:Landroid/icu/util/Currency$EquivalenceRelation; -Landroid/icu/util/Currency;->EUR_STR:Ljava/lang/String; -Landroid/icu/util/Currency;->fromJavaCurrency(Ljava/util/Currency;)Landroid/icu/util/Currency; -Landroid/icu/util/Currency;->getAllCurrenciesAsSet()Ljava/util/Set; -Landroid/icu/util/Currency;->getAllTenderCurrencies()Ljava/util/List; -Landroid/icu/util/Currency;->getCurrencyTrieVec(Landroid/icu/util/ULocale;)Ljava/util/List; -Landroid/icu/util/Currency;->getShim()Landroid/icu/util/Currency$ServiceShim; -Landroid/icu/util/Currency;->getTenderCurrencies(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List; -Landroid/icu/util/Currency;->isAlpha3Code(Ljava/lang/String;)Z -Landroid/icu/util/Currency;->isoCode:Ljava/lang/String; -Landroid/icu/util/Currency;->loadCurrency(Ljava/lang/String;)Landroid/icu/util/Currency; -Landroid/icu/util/Currency;->NARROW_SYMBOL_NAME:I -Landroid/icu/util/Currency;->openParseState(Landroid/icu/util/ULocale;II)Landroid/icu/impl/TextTrieMap$ParseState; -Landroid/icu/util/Currency;->parse(Landroid/icu/util/ULocale;Ljava/lang/String;ILjava/text/ParsePosition;)Ljava/lang/String; -Landroid/icu/util/Currency;->POW10:[I -Landroid/icu/util/Currency;->regionCurrencyCache:Landroid/icu/impl/CacheBase; -Landroid/icu/util/Currency;->registerInstance(Landroid/icu/util/Currency;Landroid/icu/util/ULocale;)Ljava/lang/Object; -Landroid/icu/util/Currency;->setupCurrencyTrieVec(Landroid/icu/util/ULocale;Ljava/util/List;)V -Landroid/icu/util/Currency;->shim:Landroid/icu/util/Currency$ServiceShim; -Landroid/icu/util/Currency;->toJavaCurrency()Ljava/util/Currency; -Landroid/icu/util/Currency;->UND:Landroid/icu/util/ULocale; -Landroid/icu/util/Currency;->unregister(Ljava/lang/Object;)Z -Landroid/icu/util/CurrencyAmount;-><init>(DLjava/util/Currency;)V -Landroid/icu/util/CurrencyAmount;-><init>(Ljava/lang/Number;Ljava/util/Currency;)V -Landroid/icu/util/DangiCalendar;-><init>()V -Landroid/icu/util/DangiCalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V -Landroid/icu/util/DangiCalendar;-><init>(Ljava/util/Date;)V -Landroid/icu/util/DangiCalendar;->DANGI_EPOCH_YEAR:I -Landroid/icu/util/DangiCalendar;->KOREA_ZONE:Landroid/icu/util/TimeZone; -Landroid/icu/util/DateInterval;->fromDate:J -Landroid/icu/util/DateInterval;->toDate:J -Landroid/icu/util/DateRule;->firstAfter(Ljava/util/Date;)Ljava/util/Date; -Landroid/icu/util/DateRule;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date; -Landroid/icu/util/DateRule;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z -Landroid/icu/util/DateRule;->isOn(Ljava/util/Date;)Z -Landroid/icu/util/DateTimeRule;-><init>(IIII)V -Landroid/icu/util/DateTimeRule;-><init>(IIIII)V -Landroid/icu/util/DateTimeRule;-><init>(IIIZII)V -Landroid/icu/util/DateTimeRule;->dateRuleType:I -Landroid/icu/util/DateTimeRule;->dayOfMonth:I -Landroid/icu/util/DateTimeRule;->dayOfWeek:I -Landroid/icu/util/DateTimeRule;->DOM:I -Landroid/icu/util/DateTimeRule;->DOW:I -Landroid/icu/util/DateTimeRule;->DOWSTR:[Ljava/lang/String; -Landroid/icu/util/DateTimeRule;->DOW_GEQ_DOM:I -Landroid/icu/util/DateTimeRule;->DOW_LEQ_DOM:I -Landroid/icu/util/DateTimeRule;->getDateRuleType()I -Landroid/icu/util/DateTimeRule;->getRuleDayOfMonth()I -Landroid/icu/util/DateTimeRule;->getRuleDayOfWeek()I -Landroid/icu/util/DateTimeRule;->getRuleMillisInDay()I -Landroid/icu/util/DateTimeRule;->getRuleMonth()I -Landroid/icu/util/DateTimeRule;->getRuleWeekInMonth()I -Landroid/icu/util/DateTimeRule;->getTimeRuleType()I -Landroid/icu/util/DateTimeRule;->millisInDay:I -Landroid/icu/util/DateTimeRule;->MONSTR:[Ljava/lang/String; -Landroid/icu/util/DateTimeRule;->month:I -Landroid/icu/util/DateTimeRule;->STANDARD_TIME:I -Landroid/icu/util/DateTimeRule;->timeRuleType:I -Landroid/icu/util/DateTimeRule;->UTC_TIME:I -Landroid/icu/util/DateTimeRule;->WALL_TIME:I -Landroid/icu/util/DateTimeRule;->weekInMonth:I -Landroid/icu/util/EasterHoliday;-><init>(ILjava/lang/String;)V -Landroid/icu/util/EasterHoliday;-><init>(IZLjava/lang/String;)V -Landroid/icu/util/EasterHoliday;-><init>(Ljava/lang/String;)V -Landroid/icu/util/EasterHoliday;->ASCENSION:Landroid/icu/util/EasterHoliday; -Landroid/icu/util/EasterHoliday;->ASH_WEDNESDAY:Landroid/icu/util/EasterHoliday; -Landroid/icu/util/EasterHoliday;->CORPUS_CHRISTI:Landroid/icu/util/EasterHoliday; -Landroid/icu/util/EasterHoliday;->EASTER_MONDAY:Landroid/icu/util/EasterHoliday; -Landroid/icu/util/EasterHoliday;->EASTER_SUNDAY:Landroid/icu/util/EasterHoliday; -Landroid/icu/util/EasterHoliday;->GOOD_FRIDAY:Landroid/icu/util/EasterHoliday; -Landroid/icu/util/EasterHoliday;->MAUNDY_THURSDAY:Landroid/icu/util/EasterHoliday; -Landroid/icu/util/EasterHoliday;->PALM_SUNDAY:Landroid/icu/util/EasterHoliday; -Landroid/icu/util/EasterHoliday;->PENTECOST:Landroid/icu/util/EasterHoliday; -Landroid/icu/util/EasterHoliday;->SHROVE_TUESDAY:Landroid/icu/util/EasterHoliday; -Landroid/icu/util/EasterHoliday;->WHIT_MONDAY:Landroid/icu/util/EasterHoliday; -Landroid/icu/util/EasterHoliday;->WHIT_SUNDAY:Landroid/icu/util/EasterHoliday; -Landroid/icu/util/EthiopicCalendar;->AMETE_ALEM:I -Landroid/icu/util/EthiopicCalendar;->AMETE_ALEM_ERA:I -Landroid/icu/util/EthiopicCalendar;->AMETE_MIHRET:I -Landroid/icu/util/EthiopicCalendar;->AMETE_MIHRET_DELTA:I -Landroid/icu/util/EthiopicCalendar;->AMETE_MIHRET_ERA:I -Landroid/icu/util/EthiopicCalendar;->eraType:I -Landroid/icu/util/EthiopicCalendar;->EthiopicToJD(JII)I -Landroid/icu/util/EthiopicCalendar;->getJDEpochOffset()I -Landroid/icu/util/EthiopicCalendar;->JD_EPOCH_OFFSET_AMETE_MIHRET:I -Landroid/icu/util/EthiopicCalendar;->setCalcTypeForLocale(Landroid/icu/util/ULocale;)V -Landroid/icu/util/GenderInfo$Cache;-><init>()V -Landroid/icu/util/GenderInfo$Cache;->cache:Landroid/icu/impl/ICUCache; -Landroid/icu/util/GenderInfo$Cache;->get(Landroid/icu/util/ULocale;)Landroid/icu/util/GenderInfo; -Landroid/icu/util/GenderInfo$Cache;->load(Landroid/icu/util/ULocale;)Landroid/icu/util/GenderInfo; -Landroid/icu/util/GenderInfo$Gender;->FEMALE:Landroid/icu/util/GenderInfo$Gender; -Landroid/icu/util/GenderInfo$Gender;->MALE:Landroid/icu/util/GenderInfo$Gender; -Landroid/icu/util/GenderInfo$Gender;->OTHER:Landroid/icu/util/GenderInfo$Gender; -Landroid/icu/util/GenderInfo$Gender;->valueOf(Ljava/lang/String;)Landroid/icu/util/GenderInfo$Gender; -Landroid/icu/util/GenderInfo$Gender;->values()[Landroid/icu/util/GenderInfo$Gender; -Landroid/icu/util/GenderInfo$ListGenderStyle;->fromName(Ljava/lang/String;)Landroid/icu/util/GenderInfo$ListGenderStyle; -Landroid/icu/util/GenderInfo$ListGenderStyle;->fromNameMap:Ljava/util/Map; -Landroid/icu/util/GenderInfo$ListGenderStyle;->MALE_TAINTS:Landroid/icu/util/GenderInfo$ListGenderStyle; -Landroid/icu/util/GenderInfo$ListGenderStyle;->MIXED_NEUTRAL:Landroid/icu/util/GenderInfo$ListGenderStyle; -Landroid/icu/util/GenderInfo$ListGenderStyle;->NEUTRAL:Landroid/icu/util/GenderInfo$ListGenderStyle; -Landroid/icu/util/GenderInfo$ListGenderStyle;->valueOf(Ljava/lang/String;)Landroid/icu/util/GenderInfo$ListGenderStyle; -Landroid/icu/util/GenderInfo$ListGenderStyle;->values()[Landroid/icu/util/GenderInfo$ListGenderStyle; -Landroid/icu/util/GenderInfo;-><init>(Landroid/icu/util/GenderInfo$ListGenderStyle;)V -Landroid/icu/util/GenderInfo;->genderInfoCache:Landroid/icu/util/GenderInfo$Cache; -Landroid/icu/util/GenderInfo;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/GenderInfo; -Landroid/icu/util/GenderInfo;->getInstance(Ljava/util/Locale;)Landroid/icu/util/GenderInfo; -Landroid/icu/util/GenderInfo;->getListGender(Ljava/util/List;)Landroid/icu/util/GenderInfo$Gender; -Landroid/icu/util/GenderInfo;->neutral:Landroid/icu/util/GenderInfo; -Landroid/icu/util/GenderInfo;->style:Landroid/icu/util/GenderInfo$ListGenderStyle; -Landroid/icu/util/GlobalizationPreferences;-><init>()V -Landroid/icu/util/GlobalizationPreferences;->available_locales:Ljava/util/HashMap; -Landroid/icu/util/GlobalizationPreferences;->BI_CHARACTER:I -Landroid/icu/util/GlobalizationPreferences;->BI_LIMIT:I -Landroid/icu/util/GlobalizationPreferences;->BI_LINE:I -Landroid/icu/util/GlobalizationPreferences;->BI_SENTENCE:I -Landroid/icu/util/GlobalizationPreferences;->BI_TITLE:I -Landroid/icu/util/GlobalizationPreferences;->BI_WORD:I -Landroid/icu/util/GlobalizationPreferences;->breakIterators:[Landroid/icu/text/BreakIterator; -Landroid/icu/util/GlobalizationPreferences;->calendar:Landroid/icu/util/Calendar; -Landroid/icu/util/GlobalizationPreferences;->collator:Landroid/icu/text/Collator; -Landroid/icu/util/GlobalizationPreferences;->currency:Landroid/icu/util/Currency; -Landroid/icu/util/GlobalizationPreferences;->dateFormats:[[Landroid/icu/text/DateFormat; -Landroid/icu/util/GlobalizationPreferences;->DF_FULL:I -Landroid/icu/util/GlobalizationPreferences;->DF_LIMIT:I -Landroid/icu/util/GlobalizationPreferences;->DF_LONG:I -Landroid/icu/util/GlobalizationPreferences;->DF_MEDIUM:I -Landroid/icu/util/GlobalizationPreferences;->DF_NONE:I -Landroid/icu/util/GlobalizationPreferences;->DF_SHORT:I -Landroid/icu/util/GlobalizationPreferences;->frozen:Z -Landroid/icu/util/GlobalizationPreferences;->getAvailableLocale(I)Landroid/icu/util/ULocale; -Landroid/icu/util/GlobalizationPreferences;->getBreakIterator(I)Landroid/icu/text/BreakIterator; -Landroid/icu/util/GlobalizationPreferences;->getCalendar()Landroid/icu/util/Calendar; -Landroid/icu/util/GlobalizationPreferences;->getCollator()Landroid/icu/text/Collator; -Landroid/icu/util/GlobalizationPreferences;->getCurrency()Landroid/icu/util/Currency; -Landroid/icu/util/GlobalizationPreferences;->getDateFormat(II)Landroid/icu/text/DateFormat; -Landroid/icu/util/GlobalizationPreferences;->getDisplayName(Ljava/lang/String;I)Ljava/lang/String; -Landroid/icu/util/GlobalizationPreferences;->getLocale(I)Landroid/icu/util/ULocale; -Landroid/icu/util/GlobalizationPreferences;->getLocales()Ljava/util/List; -Landroid/icu/util/GlobalizationPreferences;->getNumberFormat(I)Landroid/icu/text/NumberFormat; -Landroid/icu/util/GlobalizationPreferences;->getResourceBundle(Ljava/lang/String;)Ljava/util/ResourceBundle; -Landroid/icu/util/GlobalizationPreferences;->getResourceBundle(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/ResourceBundle; -Landroid/icu/util/GlobalizationPreferences;->getTerritory()Ljava/lang/String; -Landroid/icu/util/GlobalizationPreferences;->getTimeZone()Landroid/icu/util/TimeZone; -Landroid/icu/util/GlobalizationPreferences;->guessBreakIterator(I)Landroid/icu/text/BreakIterator; -Landroid/icu/util/GlobalizationPreferences;->guessCalendar()Landroid/icu/util/Calendar; -Landroid/icu/util/GlobalizationPreferences;->guessCollator()Landroid/icu/text/Collator; -Landroid/icu/util/GlobalizationPreferences;->guessCurrency()Landroid/icu/util/Currency; -Landroid/icu/util/GlobalizationPreferences;->guessDateFormat(II)Landroid/icu/text/DateFormat; -Landroid/icu/util/GlobalizationPreferences;->guessLocales()Ljava/util/List; -Landroid/icu/util/GlobalizationPreferences;->guessNumberFormat(I)Landroid/icu/text/NumberFormat; -Landroid/icu/util/GlobalizationPreferences;->guessTerritory()Ljava/lang/String; -Landroid/icu/util/GlobalizationPreferences;->guessTimeZone()Landroid/icu/util/TimeZone; -Landroid/icu/util/GlobalizationPreferences;->ID_CURRENCY:I -Landroid/icu/util/GlobalizationPreferences;->ID_CURRENCY_SYMBOL:I -Landroid/icu/util/GlobalizationPreferences;->ID_KEYWORD:I -Landroid/icu/util/GlobalizationPreferences;->ID_KEYWORD_VALUE:I -Landroid/icu/util/GlobalizationPreferences;->ID_LANGUAGE:I -Landroid/icu/util/GlobalizationPreferences;->ID_LOCALE:I -Landroid/icu/util/GlobalizationPreferences;->ID_SCRIPT:I -Landroid/icu/util/GlobalizationPreferences;->ID_TERRITORY:I -Landroid/icu/util/GlobalizationPreferences;->ID_TIMEZONE:I -Landroid/icu/util/GlobalizationPreferences;->ID_VARIANT:I -Landroid/icu/util/GlobalizationPreferences;->implicitLocales:Ljava/util/List; -Landroid/icu/util/GlobalizationPreferences;->isAvailableLocale(Landroid/icu/util/ULocale;I)Z -Landroid/icu/util/GlobalizationPreferences;->language_territory_hack:[[Ljava/lang/String; -Landroid/icu/util/GlobalizationPreferences;->language_territory_hack_map:Ljava/util/Map; -Landroid/icu/util/GlobalizationPreferences;->locales:Ljava/util/List; -Landroid/icu/util/GlobalizationPreferences;->NF_CURRENCY:I -Landroid/icu/util/GlobalizationPreferences;->NF_INTEGER:I -Landroid/icu/util/GlobalizationPreferences;->NF_LIMIT:I -Landroid/icu/util/GlobalizationPreferences;->NF_NUMBER:I -Landroid/icu/util/GlobalizationPreferences;->NF_PERCENT:I -Landroid/icu/util/GlobalizationPreferences;->NF_SCIENTIFIC:I -Landroid/icu/util/GlobalizationPreferences;->numberFormats:[Landroid/icu/text/NumberFormat; -Landroid/icu/util/GlobalizationPreferences;->processLocales(Ljava/util/List;)Ljava/util/List; -Landroid/icu/util/GlobalizationPreferences;->reset()Landroid/icu/util/GlobalizationPreferences; -Landroid/icu/util/GlobalizationPreferences;->setBreakIterator(ILandroid/icu/text/BreakIterator;)Landroid/icu/util/GlobalizationPreferences; -Landroid/icu/util/GlobalizationPreferences;->setCalendar(Landroid/icu/util/Calendar;)Landroid/icu/util/GlobalizationPreferences; -Landroid/icu/util/GlobalizationPreferences;->setCollator(Landroid/icu/text/Collator;)Landroid/icu/util/GlobalizationPreferences; -Landroid/icu/util/GlobalizationPreferences;->setCurrency(Landroid/icu/util/Currency;)Landroid/icu/util/GlobalizationPreferences; -Landroid/icu/util/GlobalizationPreferences;->setDateFormat(IILandroid/icu/text/DateFormat;)Landroid/icu/util/GlobalizationPreferences; -Landroid/icu/util/GlobalizationPreferences;->setLocale(Landroid/icu/util/ULocale;)Landroid/icu/util/GlobalizationPreferences; -Landroid/icu/util/GlobalizationPreferences;->setLocales(Ljava/lang/String;)Landroid/icu/util/GlobalizationPreferences; -Landroid/icu/util/GlobalizationPreferences;->setLocales(Ljava/util/List;)Landroid/icu/util/GlobalizationPreferences; -Landroid/icu/util/GlobalizationPreferences;->setLocales([Landroid/icu/util/ULocale;)Landroid/icu/util/GlobalizationPreferences; -Landroid/icu/util/GlobalizationPreferences;->setNumberFormat(ILandroid/icu/text/NumberFormat;)Landroid/icu/util/GlobalizationPreferences; -Landroid/icu/util/GlobalizationPreferences;->setTerritory(Ljava/lang/String;)Landroid/icu/util/GlobalizationPreferences; -Landroid/icu/util/GlobalizationPreferences;->setTimeZone(Landroid/icu/util/TimeZone;)Landroid/icu/util/GlobalizationPreferences; -Landroid/icu/util/GlobalizationPreferences;->territory:Ljava/lang/String; -Landroid/icu/util/GlobalizationPreferences;->territory_tzid_hack:[[Ljava/lang/String; -Landroid/icu/util/GlobalizationPreferences;->territory_tzid_hack_map:Ljava/util/Map; -Landroid/icu/util/GlobalizationPreferences;->timezone:Landroid/icu/util/TimeZone; -Landroid/icu/util/GlobalizationPreferences;->TYPE_BREAKITERATOR:I -Landroid/icu/util/GlobalizationPreferences;->TYPE_CALENDAR:I -Landroid/icu/util/GlobalizationPreferences;->TYPE_COLLATOR:I -Landroid/icu/util/GlobalizationPreferences;->TYPE_DATEFORMAT:I -Landroid/icu/util/GlobalizationPreferences;->TYPE_GENERIC:I -Landroid/icu/util/GlobalizationPreferences;->TYPE_LIMIT:I -Landroid/icu/util/GlobalizationPreferences;->TYPE_NUMBERFORMAT:I -Landroid/icu/util/GregorianCalendar;->cutoverJulianDay:I -Landroid/icu/util/GregorianCalendar;->EPOCH_YEAR:I -Landroid/icu/util/GregorianCalendar;->gregorianCutover:J -Landroid/icu/util/GregorianCalendar;->gregorianCutoverYear:I -Landroid/icu/util/GregorianCalendar;->inDaylightTime()Z -Landroid/icu/util/GregorianCalendar;->LIMITS:[[I -Landroid/icu/util/GregorianCalendar;->MONTH_COUNT:[[I -Landroid/icu/util/HebrewCalendar;->BAHARAD:J -Landroid/icu/util/HebrewCalendar;->cache:Landroid/icu/impl/CalendarCache; -Landroid/icu/util/HebrewCalendar;->DAY_PARTS:J -Landroid/icu/util/HebrewCalendar;->HOUR_PARTS:J -Landroid/icu/util/HebrewCalendar;->isLeapYear(I)Z -Landroid/icu/util/HebrewCalendar;->LEAP_MONTH_START:[[I -Landroid/icu/util/HebrewCalendar;->LIMITS:[[I -Landroid/icu/util/HebrewCalendar;->monthsInYear(I)I -Landroid/icu/util/HebrewCalendar;->MONTH_DAYS:I -Landroid/icu/util/HebrewCalendar;->MONTH_FRACT:J -Landroid/icu/util/HebrewCalendar;->MONTH_LENGTH:[[I -Landroid/icu/util/HebrewCalendar;->MONTH_PARTS:J -Landroid/icu/util/HebrewCalendar;->MONTH_START:[[I -Landroid/icu/util/HebrewCalendar;->startOfYear(I)J -Landroid/icu/util/HebrewCalendar;->yearType(I)I -Landroid/icu/util/HebrewHoliday;-><init>(IIILjava/lang/String;)V -Landroid/icu/util/HebrewHoliday;-><init>(IILjava/lang/String;)V -Landroid/icu/util/HebrewHoliday;->ESTHER:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->gCalendar:Landroid/icu/util/HebrewCalendar; -Landroid/icu/util/HebrewHoliday;->GEDALIAH:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->HANUKKAH:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->HOSHANAH_RABBAH:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->LAG_BOMER:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->PASSOVER:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->PESACH_SHEINI:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->PURIM:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->ROSH_HASHANAH:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->SELIHOT:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->SHAVUOT:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->SHEMINI_ATZERET:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->SHUSHAN_PURIM:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->SIMCHAT_TORAH:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->SUKKOT:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->TAMMUZ_17:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->TEVET_10:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->TISHA_BAV:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->TU_BSHEVAT:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->YOM_HAATZMAUT:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->YOM_HASHOAH:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->YOM_HAZIKARON:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->YOM_KIPPUR:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/HebrewHoliday;->YOM_YERUSHALAYIM:Landroid/icu/util/HebrewHoliday; -Landroid/icu/util/Holiday;-><init>(Ljava/lang/String;Landroid/icu/util/DateRule;)V -Landroid/icu/util/Holiday;->firstAfter(Ljava/util/Date;)Ljava/util/Date; -Landroid/icu/util/Holiday;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date; -Landroid/icu/util/Holiday;->getDisplayName()Ljava/lang/String; -Landroid/icu/util/Holiday;->getDisplayName(Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/util/Holiday;->getDisplayName(Ljava/util/Locale;)Ljava/lang/String; -Landroid/icu/util/Holiday;->getHolidays()[Landroid/icu/util/Holiday; -Landroid/icu/util/Holiday;->getHolidays(Landroid/icu/util/ULocale;)[Landroid/icu/util/Holiday; -Landroid/icu/util/Holiday;->getHolidays(Ljava/util/Locale;)[Landroid/icu/util/Holiday; -Landroid/icu/util/Holiday;->getRule()Landroid/icu/util/DateRule; -Landroid/icu/util/Holiday;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z -Landroid/icu/util/Holiday;->isOn(Ljava/util/Date;)Z -Landroid/icu/util/Holiday;->name:Ljava/lang/String; -Landroid/icu/util/Holiday;->noHolidays:[Landroid/icu/util/Holiday; -Landroid/icu/util/Holiday;->rule:Landroid/icu/util/DateRule; -Landroid/icu/util/Holiday;->setRule(Landroid/icu/util/DateRule;)V -Landroid/icu/util/ICUCloneNotSupportedException;-><init>()V -Landroid/icu/util/ICUCloneNotSupportedException;-><init>(Ljava/lang/String;)V -Landroid/icu/util/ICUCloneNotSupportedException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V -Landroid/icu/util/ICUCloneNotSupportedException;-><init>(Ljava/lang/Throwable;)V -Landroid/icu/util/ICUException;-><init>()V -Landroid/icu/util/ICUException;-><init>(Ljava/lang/String;)V -Landroid/icu/util/ICUException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V -Landroid/icu/util/ICUException;-><init>(Ljava/lang/Throwable;)V -Landroid/icu/util/IllformedLocaleException;->_errIdx:I -Landroid/icu/util/IndianCalendar;->gregorianToJD(III)D -Landroid/icu/util/IndianCalendar;->IndianToJD(III)D -Landroid/icu/util/IndianCalendar;->INDIAN_ERA_START:I -Landroid/icu/util/IndianCalendar;->INDIAN_YEAR_START:I -Landroid/icu/util/IndianCalendar;->isGregorianLeap(I)Z -Landroid/icu/util/IndianCalendar;->jdToGregorian(D)[I -Landroid/icu/util/IndianCalendar;->LIMITS:[[I -Landroid/icu/util/InitialTimeZoneRule;-><init>(Ljava/lang/String;II)V -Landroid/icu/util/InitialTimeZoneRule;->getFinalStart(II)Ljava/util/Date; -Landroid/icu/util/InitialTimeZoneRule;->getFirstStart(II)Ljava/util/Date; -Landroid/icu/util/InitialTimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date; -Landroid/icu/util/InitialTimeZoneRule;->getPreviousStart(JIIZ)Ljava/util/Date; -Landroid/icu/util/InitialTimeZoneRule;->isEquivalentTo(Landroid/icu/util/TimeZoneRule;)Z -Landroid/icu/util/InitialTimeZoneRule;->isTransitionRule()Z -Landroid/icu/util/IslamicCalendar$CalculationType;->bcpType()Ljava/lang/String; -Landroid/icu/util/IslamicCalendar$CalculationType;->bcpType:Ljava/lang/String; -Landroid/icu/util/IslamicCalendar;->astro:Landroid/icu/impl/CalendarAstronomer; -Landroid/icu/util/IslamicCalendar;->ASTRONOMICAL_EPOC:J -Landroid/icu/util/IslamicCalendar;->cache:Landroid/icu/impl/CalendarCache; -Landroid/icu/util/IslamicCalendar;->civil:Z -Landroid/icu/util/IslamicCalendar;->civilLeapYear(I)Z -Landroid/icu/util/IslamicCalendar;->CIVIL_EPOC:J -Landroid/icu/util/IslamicCalendar;->cType:Landroid/icu/util/IslamicCalendar$CalculationType; -Landroid/icu/util/IslamicCalendar;->HIJRA_MILLIS:J -Landroid/icu/util/IslamicCalendar;->isCivil()Z -Landroid/icu/util/IslamicCalendar;->LIMITS:[[I -Landroid/icu/util/IslamicCalendar;->monthStart(II)J -Landroid/icu/util/IslamicCalendar;->moonAge(J)D -Landroid/icu/util/IslamicCalendar;->setCalcTypeForLocale(Landroid/icu/util/ULocale;)V -Landroid/icu/util/IslamicCalendar;->setCivil(Z)V -Landroid/icu/util/IslamicCalendar;->trueMonthStart(J)J -Landroid/icu/util/IslamicCalendar;->UMALQURA_MONTHLENGTH:[I -Landroid/icu/util/IslamicCalendar;->UMALQURA_YEAR_END:I -Landroid/icu/util/IslamicCalendar;->UMALQURA_YEAR_START:I -Landroid/icu/util/IslamicCalendar;->UMALQURA_YEAR_START_ESTIMATE_FIX:[B -Landroid/icu/util/IslamicCalendar;->yearStart(I)J -Landroid/icu/util/JapaneseCalendar;->ERAS:[I -Landroid/icu/util/JapaneseCalendar;->getDefaultDayInMonth(II)I -Landroid/icu/util/JapaneseCalendar;->getDefaultMonthInYear(I)I -Landroid/icu/util/JapaneseCalendar;->GREGORIAN_EPOCH:I -Landroid/icu/util/JapaneseCalendar;->haveDefaultCentury()Z -Landroid/icu/util/LocaleData$MeasurementSystem;-><init>()V -Landroid/icu/util/LocaleData$PaperSize;-><init>(II)V -Landroid/icu/util/LocaleData$PaperSize;->height:I -Landroid/icu/util/LocaleData$PaperSize;->width:I -Landroid/icu/util/LocaleData;-><init>()V -Landroid/icu/util/LocaleData;->bundle:Landroid/icu/impl/ICUResourceBundle; -Landroid/icu/util/LocaleData;->DELIMITER_COUNT:I -Landroid/icu/util/LocaleData;->DELIMITER_TYPES:[Ljava/lang/String; -Landroid/icu/util/LocaleData;->ES_AUXILIARY:I -Landroid/icu/util/LocaleData;->ES_COUNT:I -Landroid/icu/util/LocaleData;->ES_CURRENCY:I -Landroid/icu/util/LocaleData;->ES_INDEX:I -Landroid/icu/util/LocaleData;->ES_PUNCTUATION:I -Landroid/icu/util/LocaleData;->ES_STANDARD:I -Landroid/icu/util/LocaleData;->gCLDRVersion:Landroid/icu/util/VersionInfo; -Landroid/icu/util/LocaleData;->getExemplarSet(II)Landroid/icu/text/UnicodeSet; -Landroid/icu/util/LocaleData;->getExemplarSet(Landroid/icu/util/ULocale;I)Landroid/icu/text/UnicodeSet; -Landroid/icu/util/LocaleData;->getExemplarSet(Landroid/icu/util/ULocale;II)Landroid/icu/text/UnicodeSet; -Landroid/icu/util/LocaleData;->getLocaleDisplayPattern()Ljava/lang/String; -Landroid/icu/util/LocaleData;->getLocaleSeparator()Ljava/lang/String; -Landroid/icu/util/LocaleData;->langBundle:Landroid/icu/impl/ICUResourceBundle; -Landroid/icu/util/LocaleData;->LOCALE_DISPLAY_PATTERN:Ljava/lang/String; -Landroid/icu/util/LocaleData;->measurementTypeBundleForLocale(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/LocaleData;->MEASUREMENT_SYSTEM:Ljava/lang/String; -Landroid/icu/util/LocaleData;->noSubstitute:Z -Landroid/icu/util/LocaleData;->PAPER_SIZE:Ljava/lang/String; -Landroid/icu/util/LocaleData;->PATTERN:Ljava/lang/String; -Landroid/icu/util/LocaleData;->SEPARATOR:Ljava/lang/String; -Landroid/icu/util/LocaleMatcher$LanguageMatcherData;-><init>()V -Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->addDistance(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/icu/util/LocaleMatcher$LanguageMatcherData; -Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->addDistance(Ljava/lang/String;Ljava/lang/String;IZ)Landroid/icu/util/LocaleMatcher$LanguageMatcherData; -Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->addDistance(Ljava/lang/String;Ljava/lang/String;IZLjava/lang/String;)Landroid/icu/util/LocaleMatcher$LanguageMatcherData; -Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->frozen:Z -Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->languageScores:Landroid/icu/util/LocaleMatcher$ScoreData; -Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->match(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)D -Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->matchingLanguages()Landroid/icu/impl/Relation; -Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->matchingLanguages:Landroid/icu/impl/Relation; -Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->regionScores:Landroid/icu/util/LocaleMatcher$ScoreData; -Landroid/icu/util/LocaleMatcher$LanguageMatcherData;->scriptScores:Landroid/icu/util/LocaleMatcher$ScoreData; -Landroid/icu/util/LocaleMatcher$Level;->language:Landroid/icu/util/LocaleMatcher$Level; -Landroid/icu/util/LocaleMatcher$Level;->region:Landroid/icu/util/LocaleMatcher$Level; -Landroid/icu/util/LocaleMatcher$Level;->script:Landroid/icu/util/LocaleMatcher$Level; -Landroid/icu/util/LocaleMatcher$Level;->valueOf(Ljava/lang/String;)Landroid/icu/util/LocaleMatcher$Level; -Landroid/icu/util/LocaleMatcher$Level;->values()[Landroid/icu/util/LocaleMatcher$Level; -Landroid/icu/util/LocaleMatcher$Level;->worst:D -Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;-><init>(Ljava/lang/String;)V -Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getLanguage()Ljava/lang/String; -Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getLevel()Landroid/icu/util/LocaleMatcher$Level; -Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getRegion()Ljava/lang/String; -Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->getScript()Ljava/lang/String; -Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->lang:Ljava/lang/String; -Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->level:Landroid/icu/util/LocaleMatcher$Level; -Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->matches(Landroid/icu/util/ULocale;)Z -Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->pattern:Ljava/util/regex/Pattern; -Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->region:Ljava/lang/String; -Landroid/icu/util/LocaleMatcher$LocalePatternMatcher;->script:Ljava/lang/String; -Landroid/icu/util/LocaleMatcher$OutputDouble;-><init>()V -Landroid/icu/util/LocaleMatcher$OutputDouble;->value:D -Landroid/icu/util/LocaleMatcher$ScoreData;-><init>(Landroid/icu/util/LocaleMatcher$Level;)V -Landroid/icu/util/LocaleMatcher$ScoreData;->addDataToScores(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/Row$R3;)V -Landroid/icu/util/LocaleMatcher$ScoreData;->frozen:Z -Landroid/icu/util/LocaleMatcher$ScoreData;->getMatchingLanguages()Landroid/icu/impl/Relation; -Landroid/icu/util/LocaleMatcher$ScoreData;->getRawScore(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)D -Landroid/icu/util/LocaleMatcher$ScoreData;->getScore(Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;)D -Landroid/icu/util/LocaleMatcher$ScoreData;->level:Landroid/icu/util/LocaleMatcher$Level; -Landroid/icu/util/LocaleMatcher$ScoreData;->maxUnequal_changeD_sameS:D -Landroid/icu/util/LocaleMatcher$ScoreData;->maxUnequal_changeEqual:D -Landroid/icu/util/LocaleMatcher$ScoreData;->scores:Ljava/util/LinkedHashSet; -Landroid/icu/util/LocaleMatcher;-><init>(Landroid/icu/util/LocalePriorityList;)V -Landroid/icu/util/LocaleMatcher;-><init>(Landroid/icu/util/LocalePriorityList;Landroid/icu/util/LocaleMatcher$LanguageMatcherData;)V -Landroid/icu/util/LocaleMatcher;-><init>(Landroid/icu/util/LocalePriorityList;Landroid/icu/util/LocaleMatcher$LanguageMatcherData;D)V -Landroid/icu/util/LocaleMatcher;-><init>(Ljava/lang/String;)V -Landroid/icu/util/LocaleMatcher;->add(Landroid/icu/util/ULocale;Ljava/lang/Double;)V -Landroid/icu/util/LocaleMatcher;->addFiltered(Ljava/lang/String;Landroid/icu/impl/Row$R3;)V -Landroid/icu/util/LocaleMatcher;->addLikelySubtags(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale; -Landroid/icu/util/LocaleMatcher;->canonicalize(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale; -Landroid/icu/util/LocaleMatcher;->canonicalMap:Ljava/util/HashMap; -Landroid/icu/util/LocaleMatcher;->DEBUG:Z -Landroid/icu/util/LocaleMatcher;->defaultLanguage:Landroid/icu/util/ULocale; -Landroid/icu/util/LocaleMatcher;->defaultWritten:Landroid/icu/util/LocaleMatcher$LanguageMatcherData; -Landroid/icu/util/LocaleMatcher;->DEFAULT_THRESHOLD:D -Landroid/icu/util/LocaleMatcher;->desiredLanguageToPossibleLocalesToMaxLocaleToData:Ljava/util/Map; -Landroid/icu/util/LocaleMatcher;->distance(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)I -Landroid/icu/util/LocaleMatcher;->getBestMatch(Landroid/icu/util/LocalePriorityList;)Landroid/icu/util/ULocale; -Landroid/icu/util/LocaleMatcher;->getBestMatch(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale; -Landroid/icu/util/LocaleMatcher;->getBestMatch(Ljava/lang/String;)Landroid/icu/util/ULocale; -Landroid/icu/util/LocaleMatcher;->getBestMatch(Ljava/util/LinkedHashSet;Landroid/icu/util/Output;)Landroid/icu/util/ULocale; -Landroid/icu/util/LocaleMatcher;->getBestMatchInternal(Landroid/icu/util/ULocale;Landroid/icu/util/LocaleMatcher$OutputDouble;)Landroid/icu/util/ULocale; -Landroid/icu/util/LocaleMatcher;->getICUSupplementalData()Landroid/icu/impl/ICUResourceBundle; -Landroid/icu/util/LocaleMatcher;->getLocaleMatcher()Landroid/icu/impl/locale/XLocaleMatcher; -Landroid/icu/util/LocaleMatcher;->languagePriorityList:Landroid/icu/util/LocalePriorityList; -Landroid/icu/util/LocaleMatcher;->localeToMaxLocaleAndWeight:Ljava/util/Set; -Landroid/icu/util/LocaleMatcher;->match(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)D -Landroid/icu/util/LocaleMatcher;->match(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)D -Landroid/icu/util/LocaleMatcher;->matcherData:Landroid/icu/util/LocaleMatcher$LanguageMatcherData; -Landroid/icu/util/LocaleMatcher;->processMapping()V -Landroid/icu/util/LocaleMatcher;->setDefaultLanguage(Landroid/icu/util/ULocale;)Landroid/icu/util/LocaleMatcher; -Landroid/icu/util/LocaleMatcher;->setFavorScript(Z)Landroid/icu/util/LocaleMatcher; -Landroid/icu/util/LocaleMatcher;->threshold:D -Landroid/icu/util/LocaleMatcher;->UNKNOWN_LOCALE:Landroid/icu/util/ULocale; -Landroid/icu/util/LocaleMatcher;->xDefaultLanguage:Landroid/icu/util/ULocale; -Landroid/icu/util/LocaleMatcher;->xFavorScript:Z -Landroid/icu/util/LocaleMatcher;->xLocaleMatcher:Landroid/icu/impl/locale/XLocaleMatcher; -Landroid/icu/util/LocalePriorityList$Builder;-><init>()V -Landroid/icu/util/LocalePriorityList$Builder;->add(Landroid/icu/util/LocalePriorityList;)Landroid/icu/util/LocalePriorityList$Builder; -Landroid/icu/util/LocalePriorityList$Builder;->add(Landroid/icu/util/ULocale;)Landroid/icu/util/LocalePriorityList$Builder; -Landroid/icu/util/LocalePriorityList$Builder;->add(Landroid/icu/util/ULocale;D)Landroid/icu/util/LocalePriorityList$Builder; -Landroid/icu/util/LocalePriorityList$Builder;->add(Ljava/lang/String;)Landroid/icu/util/LocalePriorityList$Builder; -Landroid/icu/util/LocalePriorityList$Builder;->build()Landroid/icu/util/LocalePriorityList; -Landroid/icu/util/LocalePriorityList$Builder;->build(Z)Landroid/icu/util/LocalePriorityList; -Landroid/icu/util/LocalePriorityList$Builder;->languageToWeight:Ljava/util/Map; -Landroid/icu/util/LocalePriorityList;-><init>(Ljava/util/Map;)V -Landroid/icu/util/LocalePriorityList;->add(Landroid/icu/util/LocalePriorityList;)Landroid/icu/util/LocalePriorityList$Builder; -Landroid/icu/util/LocalePriorityList;->add(Landroid/icu/util/ULocale;D)Landroid/icu/util/LocalePriorityList$Builder; -Landroid/icu/util/LocalePriorityList;->add(Ljava/lang/String;)Landroid/icu/util/LocalePriorityList$Builder; -Landroid/icu/util/LocalePriorityList;->D0:D -Landroid/icu/util/LocalePriorityList;->D1:Ljava/lang/Double; -Landroid/icu/util/LocalePriorityList;->getWeight(Landroid/icu/util/ULocale;)Ljava/lang/Double; -Landroid/icu/util/LocalePriorityList;->languagesAndWeights:Ljava/util/Map; -Landroid/icu/util/LocalePriorityList;->languageSplitter:Ljava/util/regex/Pattern; -Landroid/icu/util/LocalePriorityList;->myDescendingDouble:Ljava/util/Comparator; -Landroid/icu/util/LocalePriorityList;->weightSplitter:Ljava/util/regex/Pattern; -Landroid/icu/util/Measure;->number:Ljava/lang/Number; -Landroid/icu/util/Measure;->numbersEqual(Ljava/lang/Number;Ljava/lang/Number;)Z -Landroid/icu/util/Measure;->unit:Landroid/icu/util/MeasureUnit; -Landroid/icu/util/MeasureUnit$CurrencyNumericCodeSink;-><init>()V -Landroid/icu/util/MeasureUnit$Factory;->create(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit; -Landroid/icu/util/MeasureUnit$MeasureUnitProxy;-><init>()V -Landroid/icu/util/MeasureUnit$MeasureUnitProxy;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/util/MeasureUnit$MeasureUnitProxy;->subType:Ljava/lang/String; -Landroid/icu/util/MeasureUnit$MeasureUnitProxy;->type:Ljava/lang/String; -Landroid/icu/util/MeasureUnit$MeasureUnitSink;-><init>()V -Landroid/icu/util/MeasureUnit;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/util/MeasureUnit;->addUnit(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/MeasureUnit$Factory;)Landroid/icu/util/MeasureUnit; -Landroid/icu/util/MeasureUnit;->ASCII:Landroid/icu/text/UnicodeSet; -Landroid/icu/util/MeasureUnit;->ASCII_HYPHEN_DIGITS:Landroid/icu/text/UnicodeSet; -Landroid/icu/util/MeasureUnit;->cache:Ljava/util/Map; -Landroid/icu/util/MeasureUnit;->cacheIsPopulated:Z -Landroid/icu/util/MeasureUnit;->CURRENCY_FACTORY:Landroid/icu/util/MeasureUnit$Factory; -Landroid/icu/util/MeasureUnit;->internalGetInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit; -Landroid/icu/util/MeasureUnit;->NOUNIT_FACTORY:Landroid/icu/util/MeasureUnit$Factory; -Landroid/icu/util/MeasureUnit;->POINT:Landroid/icu/util/MeasureUnit; -Landroid/icu/util/MeasureUnit;->populateCache()V -Landroid/icu/util/MeasureUnit;->resolveUnitPerUnit(Landroid/icu/util/MeasureUnit;Landroid/icu/util/MeasureUnit;)Landroid/icu/util/MeasureUnit; -Landroid/icu/util/MeasureUnit;->subType:Ljava/lang/String; -Landroid/icu/util/MeasureUnit;->TIMEUNIT_FACTORY:Landroid/icu/util/MeasureUnit$Factory; -Landroid/icu/util/MeasureUnit;->type:Ljava/lang/String; -Landroid/icu/util/MeasureUnit;->unitPerUnitToSingleUnit:Ljava/util/HashMap; -Landroid/icu/util/MeasureUnit;->UNIT_FACTORY:Landroid/icu/util/MeasureUnit$Factory; -Landroid/icu/util/NoUnit;-><init>(Ljava/lang/String;)V -Landroid/icu/util/NoUnit;->BASE:Landroid/icu/util/NoUnit; -Landroid/icu/util/NoUnit;->PERCENT:Landroid/icu/util/NoUnit; -Landroid/icu/util/NoUnit;->PERMILLE:Landroid/icu/util/NoUnit; -Landroid/icu/util/OutputInt;-><init>()V -Landroid/icu/util/OutputInt;-><init>(I)V -Landroid/icu/util/OutputInt;->value:I -Landroid/icu/util/PersianCalendar;-><init>()V -Landroid/icu/util/PersianCalendar;-><init>(III)V -Landroid/icu/util/PersianCalendar;-><init>(IIIIII)V -Landroid/icu/util/PersianCalendar;-><init>(Landroid/icu/util/TimeZone;)V -Landroid/icu/util/PersianCalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V -Landroid/icu/util/PersianCalendar;-><init>(Landroid/icu/util/TimeZone;Ljava/util/Locale;)V -Landroid/icu/util/PersianCalendar;-><init>(Landroid/icu/util/ULocale;)V -Landroid/icu/util/PersianCalendar;-><init>(Ljava/util/Date;)V -Landroid/icu/util/PersianCalendar;->isLeapYear(I)Z -Landroid/icu/util/PersianCalendar;->LIMITS:[[I -Landroid/icu/util/PersianCalendar;->MONTH_COUNT:[[I -Landroid/icu/util/PersianCalendar;->PERSIAN_EPOCH:I -Landroid/icu/util/Range;-><init>(Ljava/util/Date;Landroid/icu/util/DateRule;)V -Landroid/icu/util/Range;->rule:Landroid/icu/util/DateRule; -Landroid/icu/util/Range;->start:Ljava/util/Date; -Landroid/icu/util/RangeDateRule;-><init>()V -Landroid/icu/util/RangeDateRule;->add(Landroid/icu/util/DateRule;)V -Landroid/icu/util/RangeDateRule;->add(Ljava/util/Date;Landroid/icu/util/DateRule;)V -Landroid/icu/util/RangeDateRule;->firstAfter(Ljava/util/Date;)Ljava/util/Date; -Landroid/icu/util/RangeDateRule;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date; -Landroid/icu/util/RangeDateRule;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z -Landroid/icu/util/RangeDateRule;->isOn(Ljava/util/Date;)Z -Landroid/icu/util/RangeDateRule;->rangeAt(I)Landroid/icu/util/Range; -Landroid/icu/util/RangeDateRule;->ranges:Ljava/util/List; -Landroid/icu/util/RangeDateRule;->startIndex(Ljava/util/Date;)I -Landroid/icu/util/Region$RegionType;->CONTINENT:Landroid/icu/util/Region$RegionType; -Landroid/icu/util/Region$RegionType;->DEPRECATED:Landroid/icu/util/Region$RegionType; -Landroid/icu/util/Region$RegionType;->GROUPING:Landroid/icu/util/Region$RegionType; -Landroid/icu/util/Region$RegionType;->SUBCONTINENT:Landroid/icu/util/Region$RegionType; -Landroid/icu/util/Region$RegionType;->TERRITORY:Landroid/icu/util/Region$RegionType; -Landroid/icu/util/Region$RegionType;->UNKNOWN:Landroid/icu/util/Region$RegionType; -Landroid/icu/util/Region$RegionType;->valueOf(Ljava/lang/String;)Landroid/icu/util/Region$RegionType; -Landroid/icu/util/Region$RegionType;->values()[Landroid/icu/util/Region$RegionType; -Landroid/icu/util/Region$RegionType;->WORLD:Landroid/icu/util/Region$RegionType; -Landroid/icu/util/Region;-><init>()V -Landroid/icu/util/Region;->availableRegions:Ljava/util/ArrayList; -Landroid/icu/util/Region;->code:I -Landroid/icu/util/Region;->compareTo(Landroid/icu/util/Region;)I -Landroid/icu/util/Region;->containedRegions:Ljava/util/Set; -Landroid/icu/util/Region;->containingRegion:Landroid/icu/util/Region; -Landroid/icu/util/Region;->contains(Landroid/icu/util/Region;)Z -Landroid/icu/util/Region;->getAvailable(Landroid/icu/util/Region$RegionType;)Ljava/util/Set; -Landroid/icu/util/Region;->getContainedRegions()Ljava/util/Set; -Landroid/icu/util/Region;->getContainedRegions(Landroid/icu/util/Region$RegionType;)Ljava/util/Set; -Landroid/icu/util/Region;->getContainingRegion()Landroid/icu/util/Region; -Landroid/icu/util/Region;->getContainingRegion(Landroid/icu/util/Region$RegionType;)Landroid/icu/util/Region; -Landroid/icu/util/Region;->getInstance(I)Landroid/icu/util/Region; -Landroid/icu/util/Region;->getInstance(Ljava/lang/String;)Landroid/icu/util/Region; -Landroid/icu/util/Region;->getNumericCode()I -Landroid/icu/util/Region;->getPreferredValues()Ljava/util/List; -Landroid/icu/util/Region;->getType()Landroid/icu/util/Region$RegionType; -Landroid/icu/util/Region;->id:Ljava/lang/String; -Landroid/icu/util/Region;->loadRegionData()V -Landroid/icu/util/Region;->numericCodeMap:Ljava/util/Map; -Landroid/icu/util/Region;->OUTLYING_OCEANIA_REGION_ID:Ljava/lang/String; -Landroid/icu/util/Region;->preferredValues:Ljava/util/List; -Landroid/icu/util/Region;->regionAliases:Ljava/util/Map; -Landroid/icu/util/Region;->regionDataIsLoaded:Z -Landroid/icu/util/Region;->regionIDMap:Ljava/util/Map; -Landroid/icu/util/Region;->regions:Ljava/util/ArrayList; -Landroid/icu/util/Region;->type:Landroid/icu/util/Region$RegionType; -Landroid/icu/util/Region;->UNKNOWN_REGION_ID:Ljava/lang/String; -Landroid/icu/util/Region;->WORLD_ID:Ljava/lang/String; -Landroid/icu/util/RuleBasedTimeZone;-><init>(Ljava/lang/String;Landroid/icu/util/InitialTimeZoneRule;)V -Landroid/icu/util/RuleBasedTimeZone;->addTransitionRule(Landroid/icu/util/TimeZoneRule;)V -Landroid/icu/util/RuleBasedTimeZone;->complete()V -Landroid/icu/util/RuleBasedTimeZone;->finalRules:[Landroid/icu/util/AnnualTimeZoneRule; -Landroid/icu/util/RuleBasedTimeZone;->findRuleInFinal(JZII)Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/RuleBasedTimeZone;->getLocalDelta(IIIIII)I -Landroid/icu/util/RuleBasedTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition; -Landroid/icu/util/RuleBasedTimeZone;->getOffset(JZII[I)V -Landroid/icu/util/RuleBasedTimeZone;->getOffsetFromLocal(JII[I)V -Landroid/icu/util/RuleBasedTimeZone;->getPreviousTransition(JZ)Landroid/icu/util/TimeZoneTransition; -Landroid/icu/util/RuleBasedTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/RuleBasedTimeZone;->getTransitionTime(Landroid/icu/util/TimeZoneTransition;ZII)J -Landroid/icu/util/RuleBasedTimeZone;->historicRules:Ljava/util/List; -Landroid/icu/util/RuleBasedTimeZone;->historicTransitions:Ljava/util/List; -Landroid/icu/util/RuleBasedTimeZone;->initialRule:Landroid/icu/util/InitialTimeZoneRule; -Landroid/icu/util/RuleBasedTimeZone;->isFrozen:Z -Landroid/icu/util/RuleBasedTimeZone;->upToDate:Z -Landroid/icu/util/SimpleDateRule;-><init>(II)V -Landroid/icu/util/SimpleDateRule;-><init>(IIIZ)V -Landroid/icu/util/SimpleDateRule;-><init>(IILandroid/icu/util/Calendar;)V -Landroid/icu/util/SimpleDateRule;->calendar:Landroid/icu/util/Calendar; -Landroid/icu/util/SimpleDateRule;->computeInYear(ILandroid/icu/util/Calendar;)Ljava/util/Date; -Landroid/icu/util/SimpleDateRule;->dayOfMonth:I -Landroid/icu/util/SimpleDateRule;->dayOfWeek:I -Landroid/icu/util/SimpleDateRule;->doFirstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date; -Landroid/icu/util/SimpleDateRule;->firstAfter(Ljava/util/Date;)Ljava/util/Date; -Landroid/icu/util/SimpleDateRule;->firstBetween(Ljava/util/Date;Ljava/util/Date;)Ljava/util/Date; -Landroid/icu/util/SimpleDateRule;->isBetween(Ljava/util/Date;Ljava/util/Date;)Z -Landroid/icu/util/SimpleDateRule;->isOn(Ljava/util/Date;)Z -Landroid/icu/util/SimpleDateRule;->month:I -Landroid/icu/util/SimpleHoliday;-><init>(IIILjava/lang/String;)V -Landroid/icu/util/SimpleHoliday;-><init>(IIILjava/lang/String;I)V -Landroid/icu/util/SimpleHoliday;-><init>(IIILjava/lang/String;II)V -Landroid/icu/util/SimpleHoliday;-><init>(IILjava/lang/String;)V -Landroid/icu/util/SimpleHoliday;-><init>(IILjava/lang/String;I)V -Landroid/icu/util/SimpleHoliday;-><init>(IILjava/lang/String;II)V -Landroid/icu/util/SimpleHoliday;->ALL_SAINTS_DAY:Landroid/icu/util/SimpleHoliday; -Landroid/icu/util/SimpleHoliday;->ALL_SOULS_DAY:Landroid/icu/util/SimpleHoliday; -Landroid/icu/util/SimpleHoliday;->ASSUMPTION:Landroid/icu/util/SimpleHoliday; -Landroid/icu/util/SimpleHoliday;->BOXING_DAY:Landroid/icu/util/SimpleHoliday; -Landroid/icu/util/SimpleHoliday;->CHRISTMAS:Landroid/icu/util/SimpleHoliday; -Landroid/icu/util/SimpleHoliday;->CHRISTMAS_EVE:Landroid/icu/util/SimpleHoliday; -Landroid/icu/util/SimpleHoliday;->EPIPHANY:Landroid/icu/util/SimpleHoliday; -Landroid/icu/util/SimpleHoliday;->IMMACULATE_CONCEPTION:Landroid/icu/util/SimpleHoliday; -Landroid/icu/util/SimpleHoliday;->MAY_DAY:Landroid/icu/util/SimpleHoliday; -Landroid/icu/util/SimpleHoliday;->NEW_YEARS_DAY:Landroid/icu/util/SimpleHoliday; -Landroid/icu/util/SimpleHoliday;->NEW_YEARS_EVE:Landroid/icu/util/SimpleHoliday; -Landroid/icu/util/SimpleHoliday;->rangeRule(IILandroid/icu/util/DateRule;)Landroid/icu/util/DateRule; -Landroid/icu/util/SimpleHoliday;->ST_STEPHENS_DAY:Landroid/icu/util/SimpleHoliday; -Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;)V -Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;IIIIIIII)V -Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;IIIIIIIII)V -Landroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;IIIIIIIIIII)V -Landroid/icu/util/SimpleTimeZone;->compareToRule(IIIIIIIIIIII)I -Landroid/icu/util/SimpleTimeZone;->construct(IIIIIIIIIIII)V -Landroid/icu/util/SimpleTimeZone;->decodeEndRule()V -Landroid/icu/util/SimpleTimeZone;->decodeRules()V -Landroid/icu/util/SimpleTimeZone;->decodeStartRule()V -Landroid/icu/util/SimpleTimeZone;->DOM_MODE:I -Landroid/icu/util/SimpleTimeZone;->DOW_GE_DOM_MODE:I -Landroid/icu/util/SimpleTimeZone;->DOW_IN_MONTH_MODE:I -Landroid/icu/util/SimpleTimeZone;->DOW_LE_DOM_MODE:I -Landroid/icu/util/SimpleTimeZone;->dst:I -Landroid/icu/util/SimpleTimeZone;->dstRule:Landroid/icu/util/AnnualTimeZoneRule; -Landroid/icu/util/SimpleTimeZone;->endDay:I -Landroid/icu/util/SimpleTimeZone;->endDayOfWeek:I -Landroid/icu/util/SimpleTimeZone;->endMode:I -Landroid/icu/util/SimpleTimeZone;->endMonth:I -Landroid/icu/util/SimpleTimeZone;->endTime:I -Landroid/icu/util/SimpleTimeZone;->endTimeMode:I -Landroid/icu/util/SimpleTimeZone;->firstTransition:Landroid/icu/util/TimeZoneTransition; -Landroid/icu/util/SimpleTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition; -Landroid/icu/util/SimpleTimeZone;->getOffset(IIIIIII)I -Landroid/icu/util/SimpleTimeZone;->getOffset(IIIIIIII)I -Landroid/icu/util/SimpleTimeZone;->getOffsetFromLocal(JII[I)V -Landroid/icu/util/SimpleTimeZone;->getPreviousTransition(JZ)Landroid/icu/util/TimeZoneTransition; -Landroid/icu/util/SimpleTimeZone;->getSTZInfo()Landroid/icu/util/STZInfo; -Landroid/icu/util/SimpleTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/SimpleTimeZone;->idEquals(Ljava/lang/String;Ljava/lang/String;)Z -Landroid/icu/util/SimpleTimeZone;->initialRule:Landroid/icu/util/InitialTimeZoneRule; -Landroid/icu/util/SimpleTimeZone;->initTransitionRules()V -Landroid/icu/util/SimpleTimeZone;->isFrozen:Z -Landroid/icu/util/SimpleTimeZone;->raw:I -Landroid/icu/util/SimpleTimeZone;->setDSTSavings(I)V -Landroid/icu/util/SimpleTimeZone;->setEndRule(III)V -Landroid/icu/util/SimpleTimeZone;->setEndRule(IIII)V -Landroid/icu/util/SimpleTimeZone;->setEndRule(IIIII)V -Landroid/icu/util/SimpleTimeZone;->setEndRule(IIIIIZ)V -Landroid/icu/util/SimpleTimeZone;->setEndRule(IIIIZ)V -Landroid/icu/util/SimpleTimeZone;->setStartRule(III)V -Landroid/icu/util/SimpleTimeZone;->setStartRule(IIII)V -Landroid/icu/util/SimpleTimeZone;->setStartRule(IIIII)V -Landroid/icu/util/SimpleTimeZone;->setStartRule(IIIIZ)V -Landroid/icu/util/SimpleTimeZone;->setStartYear(I)V -Landroid/icu/util/SimpleTimeZone;->STANDARD_TIME:I -Landroid/icu/util/SimpleTimeZone;->startDay:I -Landroid/icu/util/SimpleTimeZone;->startDayOfWeek:I -Landroid/icu/util/SimpleTimeZone;->startMode:I -Landroid/icu/util/SimpleTimeZone;->startMonth:I -Landroid/icu/util/SimpleTimeZone;->startTime:I -Landroid/icu/util/SimpleTimeZone;->startTimeMode:I -Landroid/icu/util/SimpleTimeZone;->startYear:I -Landroid/icu/util/SimpleTimeZone;->staticMonthLength:[B -Landroid/icu/util/SimpleTimeZone;->stdRule:Landroid/icu/util/AnnualTimeZoneRule; -Landroid/icu/util/SimpleTimeZone;->transitionRulesInitialized:Z -Landroid/icu/util/SimpleTimeZone;->useDaylight:Z -Landroid/icu/util/SimpleTimeZone;->UTC_TIME:I -Landroid/icu/util/SimpleTimeZone;->WALL_TIME:I -Landroid/icu/util/SimpleTimeZone;->xinfo:Landroid/icu/util/STZInfo; -Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;)V -Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeSet;)V -Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeSet;Z)V -Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeSet;ZZ)V -Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V -Landroid/icu/util/StringTokenizer;-><init>(Ljava/lang/String;Ljava/lang/String;ZZ)V -Landroid/icu/util/StringTokenizer;->checkDelimiters()V -Landroid/icu/util/StringTokenizer;->countTokens()I -Landroid/icu/util/StringTokenizer;->DEFAULT_DELIMITERS_:Landroid/icu/text/UnicodeSet; -Landroid/icu/util/StringTokenizer;->delims:[Z -Landroid/icu/util/StringTokenizer;->EMPTY_DELIMITER_:Landroid/icu/text/UnicodeSet; -Landroid/icu/util/StringTokenizer;->getNextDelimiter(I)I -Landroid/icu/util/StringTokenizer;->getNextNonDelimiter(I)I -Landroid/icu/util/StringTokenizer;->hasMoreTokens()Z -Landroid/icu/util/StringTokenizer;->m_coalesceDelimiters_:Z -Landroid/icu/util/StringTokenizer;->m_delimiters_:Landroid/icu/text/UnicodeSet; -Landroid/icu/util/StringTokenizer;->m_length_:I -Landroid/icu/util/StringTokenizer;->m_nextOffset_:I -Landroid/icu/util/StringTokenizer;->m_returnDelimiters_:Z -Landroid/icu/util/StringTokenizer;->m_source_:Ljava/lang/String; -Landroid/icu/util/StringTokenizer;->m_tokenLimit_:[I -Landroid/icu/util/StringTokenizer;->m_tokenOffset_:I -Landroid/icu/util/StringTokenizer;->m_tokenSize_:I -Landroid/icu/util/StringTokenizer;->m_tokenStart_:[I -Landroid/icu/util/StringTokenizer;->nextToken()Ljava/lang/String; -Landroid/icu/util/StringTokenizer;->nextToken(Landroid/icu/text/UnicodeSet;)Ljava/lang/String; -Landroid/icu/util/StringTokenizer;->nextToken(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/util/StringTokenizer;->TOKEN_SIZE_:I -Landroid/icu/util/StringTrieBuilder$BranchHeadNode;-><init>(ILandroid/icu/util/StringTrieBuilder$Node;)V -Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->length:I -Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->markRightEdgesFirst(I)I -Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->next:Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$BranchHeadNode;->write(Landroid/icu/util/StringTrieBuilder;)V -Landroid/icu/util/StringTrieBuilder$BranchNode;-><init>()V -Landroid/icu/util/StringTrieBuilder$BranchNode;->firstEdgeNumber:I -Landroid/icu/util/StringTrieBuilder$BranchNode;->hash:I -Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;-><init>()V -Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->add(CLandroid/icu/util/StringTrieBuilder$Node;)V -Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->chars:Ljava/lang/StringBuilder; -Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->equal:Ljava/util/ArrayList; -Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->find(C)I -Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->register(Landroid/icu/util/StringTrieBuilder;)Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$DynamicBranchNode;->register(Landroid/icu/util/StringTrieBuilder;II)Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;-><init>(ILandroid/icu/util/StringTrieBuilder$Node;)V -Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;->markRightEdgesFirst(I)I -Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;->next:Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$IntermediateValueNode;->write(Landroid/icu/util/StringTrieBuilder;)V -Landroid/icu/util/StringTrieBuilder$LinearMatchNode;-><init>(Ljava/lang/CharSequence;IILandroid/icu/util/StringTrieBuilder$Node;)V -Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->hash:I -Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->length:I -Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->markRightEdgesFirst(I)I -Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->next:Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->register(Landroid/icu/util/StringTrieBuilder;)Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->setHashCode()V -Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->stringOffset:I -Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->strings:Ljava/lang/CharSequence; -Landroid/icu/util/StringTrieBuilder$LinearMatchNode;->write(Landroid/icu/util/StringTrieBuilder;)V -Landroid/icu/util/StringTrieBuilder$ListBranchNode;-><init>(I)V -Landroid/icu/util/StringTrieBuilder$ListBranchNode;->add(II)V -Landroid/icu/util/StringTrieBuilder$ListBranchNode;->add(ILandroid/icu/util/StringTrieBuilder$Node;)V -Landroid/icu/util/StringTrieBuilder$ListBranchNode;->equal:[Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$ListBranchNode;->length:I -Landroid/icu/util/StringTrieBuilder$ListBranchNode;->markRightEdgesFirst(I)I -Landroid/icu/util/StringTrieBuilder$ListBranchNode;->units:[C -Landroid/icu/util/StringTrieBuilder$ListBranchNode;->values:[I -Landroid/icu/util/StringTrieBuilder$ListBranchNode;->write(Landroid/icu/util/StringTrieBuilder;)V -Landroid/icu/util/StringTrieBuilder$Node;-><init>()V -Landroid/icu/util/StringTrieBuilder$Node;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$Node;->getOffset()I -Landroid/icu/util/StringTrieBuilder$Node;->markRightEdgesFirst(I)I -Landroid/icu/util/StringTrieBuilder$Node;->offset:I -Landroid/icu/util/StringTrieBuilder$Node;->register(Landroid/icu/util/StringTrieBuilder;)Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$Node;->write(Landroid/icu/util/StringTrieBuilder;)V -Landroid/icu/util/StringTrieBuilder$Node;->writeUnlessInsideRightEdge(IILandroid/icu/util/StringTrieBuilder;)V -Landroid/icu/util/StringTrieBuilder$Option;->FAST:Landroid/icu/util/StringTrieBuilder$Option; -Landroid/icu/util/StringTrieBuilder$Option;->SMALL:Landroid/icu/util/StringTrieBuilder$Option; -Landroid/icu/util/StringTrieBuilder$Option;->valueOf(Ljava/lang/String;)Landroid/icu/util/StringTrieBuilder$Option; -Landroid/icu/util/StringTrieBuilder$Option;->values()[Landroid/icu/util/StringTrieBuilder$Option; -Landroid/icu/util/StringTrieBuilder$SplitBranchNode;-><init>(CLandroid/icu/util/StringTrieBuilder$Node;Landroid/icu/util/StringTrieBuilder$Node;)V -Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->greaterOrEqual:Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->lessThan:Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->markRightEdgesFirst(I)I -Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->unit:C -Landroid/icu/util/StringTrieBuilder$SplitBranchNode;->write(Landroid/icu/util/StringTrieBuilder;)V -Landroid/icu/util/StringTrieBuilder$State;->ADDING:Landroid/icu/util/StringTrieBuilder$State; -Landroid/icu/util/StringTrieBuilder$State;->BUILDING_FAST:Landroid/icu/util/StringTrieBuilder$State; -Landroid/icu/util/StringTrieBuilder$State;->BUILDING_SMALL:Landroid/icu/util/StringTrieBuilder$State; -Landroid/icu/util/StringTrieBuilder$State;->BUILT:Landroid/icu/util/StringTrieBuilder$State; -Landroid/icu/util/StringTrieBuilder$State;->valueOf(Ljava/lang/String;)Landroid/icu/util/StringTrieBuilder$State; -Landroid/icu/util/StringTrieBuilder$State;->values()[Landroid/icu/util/StringTrieBuilder$State; -Landroid/icu/util/StringTrieBuilder$ValueNode;-><init>()V -Landroid/icu/util/StringTrieBuilder$ValueNode;-><init>(I)V -Landroid/icu/util/StringTrieBuilder$ValueNode;->add(Landroid/icu/util/StringTrieBuilder;Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder$ValueNode;->hasValue:Z -Landroid/icu/util/StringTrieBuilder$ValueNode;->setFinalValue(I)V -Landroid/icu/util/StringTrieBuilder$ValueNode;->setValue(I)V -Landroid/icu/util/StringTrieBuilder$ValueNode;->value:I -Landroid/icu/util/StringTrieBuilder$ValueNode;->write(Landroid/icu/util/StringTrieBuilder;)V -Landroid/icu/util/StringTrieBuilder;-><init>()V -Landroid/icu/util/StringTrieBuilder;->addImpl(Ljava/lang/CharSequence;I)V -Landroid/icu/util/StringTrieBuilder;->buildImpl(Landroid/icu/util/StringTrieBuilder$Option;)V -Landroid/icu/util/StringTrieBuilder;->clearImpl()V -Landroid/icu/util/StringTrieBuilder;->createSuffixNode(Ljava/lang/CharSequence;II)Landroid/icu/util/StringTrieBuilder$ValueNode; -Landroid/icu/util/StringTrieBuilder;->getMaxBranchLinearSubNodeLength()I -Landroid/icu/util/StringTrieBuilder;->getMaxLinearMatchLength()I -Landroid/icu/util/StringTrieBuilder;->getMinLinearMatch()I -Landroid/icu/util/StringTrieBuilder;->lookupFinalValueNode:Landroid/icu/util/StringTrieBuilder$ValueNode; -Landroid/icu/util/StringTrieBuilder;->matchNodesCanHaveValues()Z -Landroid/icu/util/StringTrieBuilder;->nodes:Ljava/util/HashMap; -Landroid/icu/util/StringTrieBuilder;->registerFinalValue(I)Landroid/icu/util/StringTrieBuilder$ValueNode; -Landroid/icu/util/StringTrieBuilder;->registerNode(Landroid/icu/util/StringTrieBuilder$Node;)Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder;->root:Landroid/icu/util/StringTrieBuilder$Node; -Landroid/icu/util/StringTrieBuilder;->state:Landroid/icu/util/StringTrieBuilder$State; -Landroid/icu/util/StringTrieBuilder;->strings:Ljava/lang/StringBuilder; -Landroid/icu/util/StringTrieBuilder;->write(I)I -Landroid/icu/util/StringTrieBuilder;->write(II)I -Landroid/icu/util/StringTrieBuilder;->writeDeltaTo(I)I -Landroid/icu/util/StringTrieBuilder;->writeValueAndFinal(IZ)I -Landroid/icu/util/StringTrieBuilder;->writeValueAndType(ZII)I -Landroid/icu/util/STZInfo;-><init>()V -Landroid/icu/util/STZInfo;->applyTo(Landroid/icu/util/SimpleTimeZone;)V -Landroid/icu/util/STZInfo;->ea:Z -Landroid/icu/util/STZInfo;->edm:I -Landroid/icu/util/STZInfo;->edw:I -Landroid/icu/util/STZInfo;->edwm:I -Landroid/icu/util/STZInfo;->em:I -Landroid/icu/util/STZInfo;->et:I -Landroid/icu/util/STZInfo;->sa:Z -Landroid/icu/util/STZInfo;->sdm:I -Landroid/icu/util/STZInfo;->sdw:I -Landroid/icu/util/STZInfo;->sdwm:I -Landroid/icu/util/STZInfo;->setEnd(IIIIIZ)V -Landroid/icu/util/STZInfo;->setStart(IIIIIZ)V -Landroid/icu/util/STZInfo;->sm:I -Landroid/icu/util/STZInfo;->st:I -Landroid/icu/util/STZInfo;->sy:I -Landroid/icu/util/TaiwanCalendar;->GREGORIAN_EPOCH:I -Landroid/icu/util/TaiwanCalendar;->Taiwan_ERA_START:I -Landroid/icu/util/TimeArrayTimeZoneRule;-><init>(Ljava/lang/String;II[JI)V -Landroid/icu/util/TimeArrayTimeZoneRule;->getFinalStart(II)Ljava/util/Date; -Landroid/icu/util/TimeArrayTimeZoneRule;->getFirstStart(II)Ljava/util/Date; -Landroid/icu/util/TimeArrayTimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date; -Landroid/icu/util/TimeArrayTimeZoneRule;->getPreviousStart(JIIZ)Ljava/util/Date; -Landroid/icu/util/TimeArrayTimeZoneRule;->getStartTimes()[J -Landroid/icu/util/TimeArrayTimeZoneRule;->getTimeType()I -Landroid/icu/util/TimeArrayTimeZoneRule;->getUTC(JII)J -Landroid/icu/util/TimeArrayTimeZoneRule;->isEquivalentTo(Landroid/icu/util/TimeZoneRule;)Z -Landroid/icu/util/TimeArrayTimeZoneRule;->isTransitionRule()Z -Landroid/icu/util/TimeArrayTimeZoneRule;->startTimes:[J -Landroid/icu/util/TimeArrayTimeZoneRule;->timeType:I -Landroid/icu/util/TimeUnit;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Landroid/icu/util/TimeUnit;->index:I -Landroid/icu/util/TimeUnitAmount;-><init>(DLandroid/icu/util/TimeUnit;)V -Landroid/icu/util/TimeUnitAmount;-><init>(Ljava/lang/Number;Landroid/icu/util/TimeUnit;)V -Landroid/icu/util/TimeUnitAmount;->getTimeUnit()Landroid/icu/util/TimeUnit; -Landroid/icu/util/TimeZone$ConstantZone;-><init>(ILjava/lang/String;)V -Landroid/icu/util/TimeZone$ConstantZone;->isFrozen:Z -Landroid/icu/util/TimeZone$ConstantZone;->rawOffset:I -Landroid/icu/util/TimeZone;-><init>(Ljava/lang/String;)V -Landroid/icu/util/TimeZone;->defaultZone:Landroid/icu/util/TimeZone; -Landroid/icu/util/TimeZone;->getDefaultTimeZoneType()I -Landroid/icu/util/TimeZone;->getFrozenICUTimeZone(Ljava/lang/String;Z)Landroid/icu/util/BasicTimeZone; -Landroid/icu/util/TimeZone;->getTimeZone(Ljava/lang/String;IZ)Landroid/icu/util/TimeZone; -Landroid/icu/util/TimeZone;->GMT_ZONE_ID:Ljava/lang/String; -Landroid/icu/util/TimeZone;->ID:Ljava/lang/String; -Landroid/icu/util/TimeZone;->LOGGER:Ljava/util/logging/Logger; -Landroid/icu/util/TimeZone;->setDefault(Landroid/icu/util/TimeZone;)V -Landroid/icu/util/TimeZone;->setDefaultTimeZoneType(I)V -Landroid/icu/util/TimeZone;->setICUDefault(Landroid/icu/util/TimeZone;)V -Landroid/icu/util/TimeZone;->TZIMPL_CONFIG_ICU:Ljava/lang/String; -Landroid/icu/util/TimeZone;->TZIMPL_CONFIG_JDK:Ljava/lang/String; -Landroid/icu/util/TimeZone;->TZIMPL_CONFIG_KEY:Ljava/lang/String; -Landroid/icu/util/TimeZone;->TZ_IMPL:I -Landroid/icu/util/TimeZone;->_getDisplayName(IZLandroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/util/TimeZoneRule;-><init>(Ljava/lang/String;II)V -Landroid/icu/util/TimeZoneRule;->dstSavings:I -Landroid/icu/util/TimeZoneRule;->getDSTSavings()I -Landroid/icu/util/TimeZoneRule;->getFinalStart(II)Ljava/util/Date; -Landroid/icu/util/TimeZoneRule;->getFirstStart(II)Ljava/util/Date; -Landroid/icu/util/TimeZoneRule;->getName()Ljava/lang/String; -Landroid/icu/util/TimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date; -Landroid/icu/util/TimeZoneRule;->getPreviousStart(JIIZ)Ljava/util/Date; -Landroid/icu/util/TimeZoneRule;->getRawOffset()I -Landroid/icu/util/TimeZoneRule;->isEquivalentTo(Landroid/icu/util/TimeZoneRule;)Z -Landroid/icu/util/TimeZoneRule;->isTransitionRule()Z -Landroid/icu/util/TimeZoneRule;->name:Ljava/lang/String; -Landroid/icu/util/TimeZoneRule;->rawOffset:I -Landroid/icu/util/TimeZoneTransition;-><init>(JLandroid/icu/util/TimeZoneRule;Landroid/icu/util/TimeZoneRule;)V -Landroid/icu/util/TimeZoneTransition;->from:Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/TimeZoneTransition;->getFrom()Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/TimeZoneTransition;->getTime()J -Landroid/icu/util/TimeZoneTransition;->getTo()Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/TimeZoneTransition;->time:J -Landroid/icu/util/TimeZoneTransition;->to:Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/ULocale$Builder;->_locbld:Landroid/icu/impl/locale/InternalLocaleBuilder; -Landroid/icu/util/ULocale$JDKLocaleHelper;-><init>()V -Landroid/icu/util/ULocale$JDKLocaleHelper;->eDISPLAY:Ljava/lang/Object; -Landroid/icu/util/ULocale$JDKLocaleHelper;->eFORMAT:Ljava/lang/Object; -Landroid/icu/util/ULocale$JDKLocaleHelper;->getDefault(Landroid/icu/util/ULocale$Category;)Ljava/util/Locale; -Landroid/icu/util/ULocale$JDKLocaleHelper;->getSystemProperty(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/util/ULocale$JDKLocaleHelper;->hasLocaleCategories()Z -Landroid/icu/util/ULocale$JDKLocaleHelper;->hasLocaleCategories:Z -Landroid/icu/util/ULocale$JDKLocaleHelper;->hasScriptsAndUnicodeExtensions:Z -Landroid/icu/util/ULocale$JDKLocaleHelper;->isOriginalDefaultLocale(Ljava/util/Locale;)Z -Landroid/icu/util/ULocale$JDKLocaleHelper;->JAVA6_MAPDATA:[[Ljava/lang/String; -Landroid/icu/util/ULocale$JDKLocaleHelper;->mForLanguageTag:Ljava/lang/reflect/Method; -Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetDefault:Ljava/lang/reflect/Method; -Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetExtension:Ljava/lang/reflect/Method; -Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetExtensionKeys:Ljava/lang/reflect/Method; -Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetScript:Ljava/lang/reflect/Method; -Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetUnicodeLocaleAttributes:Ljava/lang/reflect/Method; -Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetUnicodeLocaleKeys:Ljava/lang/reflect/Method; -Landroid/icu/util/ULocale$JDKLocaleHelper;->mGetUnicodeLocaleType:Ljava/lang/reflect/Method; -Landroid/icu/util/ULocale$JDKLocaleHelper;->mSetDefault:Ljava/lang/reflect/Method; -Landroid/icu/util/ULocale$JDKLocaleHelper;->setDefault(Landroid/icu/util/ULocale$Category;Ljava/util/Locale;)V -Landroid/icu/util/ULocale$JDKLocaleHelper;->toLocale(Landroid/icu/util/ULocale;)Ljava/util/Locale; -Landroid/icu/util/ULocale$JDKLocaleHelper;->toLocale6(Landroid/icu/util/ULocale;)Ljava/util/Locale; -Landroid/icu/util/ULocale$JDKLocaleHelper;->toLocale7(Landroid/icu/util/ULocale;)Ljava/util/Locale; -Landroid/icu/util/ULocale$JDKLocaleHelper;->toULocale(Ljava/util/Locale;)Landroid/icu/util/ULocale; -Landroid/icu/util/ULocale$JDKLocaleHelper;->toULocale6(Ljava/util/Locale;)Landroid/icu/util/ULocale; -Landroid/icu/util/ULocale$JDKLocaleHelper;->toULocale7(Ljava/util/Locale;)Landroid/icu/util/ULocale; -Landroid/icu/util/ULocale$Minimize;->FAVOR_REGION:Landroid/icu/util/ULocale$Minimize; -Landroid/icu/util/ULocale$Minimize;->FAVOR_SCRIPT:Landroid/icu/util/ULocale$Minimize; -Landroid/icu/util/ULocale$Minimize;->valueOf(Ljava/lang/String;)Landroid/icu/util/ULocale$Minimize; -Landroid/icu/util/ULocale$Minimize;->values()[Landroid/icu/util/ULocale$Minimize; -Landroid/icu/util/ULocale$Type;-><init>()V -Landroid/icu/util/ULocale;-><init>(Ljava/lang/String;Ljava/util/Locale;)V -Landroid/icu/util/ULocale;-><init>(Ljava/util/Locale;)V -Landroid/icu/util/ULocale;->ACTUAL_LOCALE:Landroid/icu/util/ULocale$Type; -Landroid/icu/util/ULocale;->appendTag(Ljava/lang/String;Ljava/lang/StringBuilder;)V -Landroid/icu/util/ULocale;->base()Landroid/icu/impl/locale/BaseLocale; -Landroid/icu/util/ULocale;->baseLocale:Landroid/icu/impl/locale/BaseLocale; -Landroid/icu/util/ULocale;->CACHE:Landroid/icu/impl/SoftCache; -Landroid/icu/util/ULocale;->CANONICALIZE_MAP:[[Ljava/lang/String; -Landroid/icu/util/ULocale;->createLikelySubtagsString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/util/ULocale;->defaultCategoryLocales:[Ljava/util/Locale; -Landroid/icu/util/ULocale;->defaultCategoryULocales:[Landroid/icu/util/ULocale; -Landroid/icu/util/ULocale;->defaultLocale:Ljava/util/Locale; -Landroid/icu/util/ULocale;->defaultULocale:Landroid/icu/util/ULocale; -Landroid/icu/util/ULocale;->EMPTY_LOCALE:Ljava/util/Locale; -Landroid/icu/util/ULocale;->EMPTY_STRING:Ljava/lang/String; -Landroid/icu/util/ULocale;->extensions()Landroid/icu/impl/locale/LocaleExtensions; -Landroid/icu/util/ULocale;->extensions:Landroid/icu/impl/locale/LocaleExtensions; -Landroid/icu/util/ULocale;->getDisplayCountryInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/util/ULocale;->getDisplayKeywordInternal(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/util/ULocale;->getDisplayKeywordValueInternal(Landroid/icu/util/ULocale;Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/util/ULocale;->getDisplayLanguageInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;Z)Ljava/lang/String; -Landroid/icu/util/ULocale;->getDisplayNameInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/util/ULocale;->getDisplayNameWithDialectInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/util/ULocale;->getDisplayScriptInContext()Ljava/lang/String; -Landroid/icu/util/ULocale;->getDisplayScriptInContext(Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/util/ULocale;->getDisplayScriptInContext(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/util/ULocale;->getDisplayScriptInContext(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/util/ULocale;->getDisplayScriptInContextInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/util/ULocale;->getDisplayScriptInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/util/ULocale;->getDisplayVariantInternal(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)Ljava/lang/String; -Landroid/icu/util/ULocale;->getFallbackString(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/util/ULocale;->getInstance(Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/LocaleExtensions;)Landroid/icu/util/ULocale; -Landroid/icu/util/ULocale;->getRegionForSupplementalData(Landroid/icu/util/ULocale;Z)Ljava/lang/String; -Landroid/icu/util/ULocale;->getShortestSubtagLength(Ljava/lang/String;)I -Landroid/icu/util/ULocale;->isEmptyString(Ljava/lang/String;)Z -Landroid/icu/util/ULocale;->LANG_DIR_STRING:Ljava/lang/String; -Landroid/icu/util/ULocale;->locale:Ljava/util/Locale; -Landroid/icu/util/ULocale;->localeID:Ljava/lang/String; -Landroid/icu/util/ULocale;->LOCALE_ATTRIBUTE_KEY:Ljava/lang/String; -Landroid/icu/util/ULocale;->lookupLikelySubtags(Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/util/ULocale;->lscvToID(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Landroid/icu/util/ULocale;->minimizeSubtags(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale$Minimize;)Landroid/icu/util/ULocale; -Landroid/icu/util/ULocale;->nameCache:Landroid/icu/impl/CacheBase; -Landroid/icu/util/ULocale;->parseAcceptLanguage(Ljava/lang/String;Z)[Landroid/icu/util/ULocale; -Landroid/icu/util/ULocale;->parseTagString(Ljava/lang/String;[Ljava/lang/String;)I -Landroid/icu/util/ULocale;->setDefault(Landroid/icu/util/ULocale$Category;Landroid/icu/util/ULocale;)V -Landroid/icu/util/ULocale;->setDefault(Landroid/icu/util/ULocale;)V -Landroid/icu/util/ULocale;->UNDEFINED_LANGUAGE:Ljava/lang/String; -Landroid/icu/util/ULocale;->UNDEFINED_REGION:Ljava/lang/String; -Landroid/icu/util/ULocale;->UNDEFINED_SCRIPT:Ljava/lang/String; -Landroid/icu/util/ULocale;->UNDERSCORE:C -Landroid/icu/util/ULocale;->VALID_LOCALE:Landroid/icu/util/ULocale$Type; -Landroid/icu/util/ULocale;->variantsToKeywords:[[Ljava/lang/String; -Landroid/icu/util/UniversalTimeScale$TimeScaleData;-><init>(JJJJJJ)V -Landroid/icu/util/UniversalTimeScale$TimeScaleData;->epochOffset:J -Landroid/icu/util/UniversalTimeScale$TimeScaleData;->epochOffsetM1:J -Landroid/icu/util/UniversalTimeScale$TimeScaleData;->epochOffsetP1:J -Landroid/icu/util/UniversalTimeScale$TimeScaleData;->fromMax:J -Landroid/icu/util/UniversalTimeScale$TimeScaleData;->fromMin:J -Landroid/icu/util/UniversalTimeScale$TimeScaleData;->maxRound:J -Landroid/icu/util/UniversalTimeScale$TimeScaleData;->minRound:J -Landroid/icu/util/UniversalTimeScale$TimeScaleData;->toMax:J -Landroid/icu/util/UniversalTimeScale$TimeScaleData;->toMin:J -Landroid/icu/util/UniversalTimeScale$TimeScaleData;->units:J -Landroid/icu/util/UniversalTimeScale$TimeScaleData;->unitsRound:J -Landroid/icu/util/UniversalTimeScale;-><init>()V -Landroid/icu/util/UniversalTimeScale;->days:J -Landroid/icu/util/UniversalTimeScale;->EPOCH_OFFSET_MINUS_1_VALUE:I -Landroid/icu/util/UniversalTimeScale;->fromRangeCheck(JI)Landroid/icu/util/UniversalTimeScale$TimeScaleData; -Landroid/icu/util/UniversalTimeScale;->getTimeScaleData(I)Landroid/icu/util/UniversalTimeScale$TimeScaleData; -Landroid/icu/util/UniversalTimeScale;->hours:J -Landroid/icu/util/UniversalTimeScale;->MAX_ROUND_VALUE:I -Landroid/icu/util/UniversalTimeScale;->MAX_SCALE_VALUE:I -Landroid/icu/util/UniversalTimeScale;->microseconds:J -Landroid/icu/util/UniversalTimeScale;->milliseconds:J -Landroid/icu/util/UniversalTimeScale;->minutes:J -Landroid/icu/util/UniversalTimeScale;->MIN_ROUND_VALUE:I -Landroid/icu/util/UniversalTimeScale;->seconds:J -Landroid/icu/util/UniversalTimeScale;->ticks:J -Landroid/icu/util/UniversalTimeScale;->timeScaleTable:[Landroid/icu/util/UniversalTimeScale$TimeScaleData; -Landroid/icu/util/UniversalTimeScale;->toBigDecimalTrunc(Landroid/icu/math/BigDecimal;I)Landroid/icu/math/BigDecimal; -Landroid/icu/util/UniversalTimeScale;->toRangeCheck(JI)Landroid/icu/util/UniversalTimeScale$TimeScaleData; -Landroid/icu/util/UniversalTimeScale;->UNITS_ROUND_VALUE:I -Landroid/icu/util/UResourceBundle$RootType;->ICU:Landroid/icu/util/UResourceBundle$RootType; -Landroid/icu/util/UResourceBundle$RootType;->JAVA:Landroid/icu/util/UResourceBundle$RootType; -Landroid/icu/util/UResourceBundle$RootType;->MISSING:Landroid/icu/util/UResourceBundle$RootType; -Landroid/icu/util/UResourceBundle$RootType;->valueOf(Ljava/lang/String;)Landroid/icu/util/UResourceBundle$RootType; -Landroid/icu/util/UResourceBundle$RootType;->values()[Landroid/icu/util/UResourceBundle$RootType; -Landroid/icu/util/UResourceBundle;-><init>()V -Landroid/icu/util/UResourceBundle;->ARRAY:I -Landroid/icu/util/UResourceBundle;->BINARY:I -Landroid/icu/util/UResourceBundle;->findTopLevel(I)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->findTopLevel(Ljava/lang/String;)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->get(I)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->get(Ljava/lang/String;)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->getBaseName()Ljava/lang/String; -Landroid/icu/util/UResourceBundle;->getBinary()Ljava/nio/ByteBuffer; -Landroid/icu/util/UResourceBundle;->getBinary([B)[B -Landroid/icu/util/UResourceBundle;->getBundleInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Landroid/icu/util/ULocale;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->getInt()I -Landroid/icu/util/UResourceBundle;->getIntVector()[I -Landroid/icu/util/UResourceBundle;->getIterator()Landroid/icu/util/UResourceBundleIterator; -Landroid/icu/util/UResourceBundle;->getLocaleID()Ljava/lang/String; -Landroid/icu/util/UResourceBundle;->getParent()Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->getRootType(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle$RootType; -Landroid/icu/util/UResourceBundle;->getSize()I -Landroid/icu/util/UResourceBundle;->getString(I)Ljava/lang/String; -Landroid/icu/util/UResourceBundle;->getStringArray()[Ljava/lang/String; -Landroid/icu/util/UResourceBundle;->getUInt()I -Landroid/icu/util/UResourceBundle;->getULocale()Landroid/icu/util/ULocale; -Landroid/icu/util/UResourceBundle;->getVersion()Landroid/icu/util/VersionInfo; -Landroid/icu/util/UResourceBundle;->handleGet(ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->handleGet(Ljava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->handleGetKeys()Ljava/util/Enumeration; -Landroid/icu/util/UResourceBundle;->handleGetObjectImpl(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object; -Landroid/icu/util/UResourceBundle;->handleGetStringArray()[Ljava/lang/String; -Landroid/icu/util/UResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundle;->INT:I -Landroid/icu/util/UResourceBundle;->INT_VECTOR:I -Landroid/icu/util/UResourceBundle;->isTopLevelResource()Z -Landroid/icu/util/UResourceBundle;->NONE:I -Landroid/icu/util/UResourceBundle;->resolveObject(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object; -Landroid/icu/util/UResourceBundle;->ROOT_CACHE:Ljava/util/Map; -Landroid/icu/util/UResourceBundle;->setRootType(Ljava/lang/String;Landroid/icu/util/UResourceBundle$RootType;)V -Landroid/icu/util/UResourceBundle;->STRING:I -Landroid/icu/util/UResourceBundle;->TABLE:I -Landroid/icu/util/UResourceBundleIterator;-><init>(Landroid/icu/util/UResourceBundle;)V -Landroid/icu/util/UResourceBundleIterator;->bundle:Landroid/icu/util/UResourceBundle; -Landroid/icu/util/UResourceBundleIterator;->index:I -Landroid/icu/util/UResourceBundleIterator;->nextString()Ljava/lang/String; -Landroid/icu/util/UResourceBundleIterator;->reset()V -Landroid/icu/util/UResourceBundleIterator;->size:I -Landroid/icu/util/UResourceTypeMismatchException;-><init>(Ljava/lang/String;)V -Landroid/icu/util/VersionInfo;-><init>(I)V -Landroid/icu/util/VersionInfo;->getInt(IIII)I -Landroid/icu/util/VersionInfo;->getTZDataVersion()Ljava/lang/String; -Landroid/icu/util/VersionInfo;->getVersionString(II)Ljava/lang/String; -Landroid/icu/util/VersionInfo;->ICU_DATA_VERSION:Landroid/icu/util/VersionInfo; -Landroid/icu/util/VersionInfo;->ICU_DATA_VERSION_PATH:Ljava/lang/String; -Landroid/icu/util/VersionInfo;->INVALID_VERSION_NUMBER_:Ljava/lang/String; -Landroid/icu/util/VersionInfo;->javaVersion()Landroid/icu/util/VersionInfo; -Landroid/icu/util/VersionInfo;->javaVersion:Landroid/icu/util/VersionInfo; -Landroid/icu/util/VersionInfo;->LAST_BYTE_MASK_:I -Landroid/icu/util/VersionInfo;->main([Ljava/lang/String;)V -Landroid/icu/util/VersionInfo;->MAP_:Ljava/util/concurrent/ConcurrentHashMap; -Landroid/icu/util/VersionInfo;->m_version_:I -Landroid/icu/util/VersionInfo;->TZDATA_VERSION:Ljava/lang/String; -Landroid/icu/util/VersionInfo;->UCOL_TAILORINGS_VERSION:Landroid/icu/util/VersionInfo; -Landroid/icu/util/VersionInfo;->UNICODE_VERSION:Landroid/icu/util/VersionInfo; -Landroid/icu/util/VTimeZone;-><init>()V -Landroid/icu/util/VTimeZone;-><init>(Ljava/lang/String;)V -Landroid/icu/util/VTimeZone;->appendUNTIL(Ljava/io/Writer;Ljava/lang/String;)V -Landroid/icu/util/VTimeZone;->beginRRULE(Ljava/io/Writer;I)V -Landroid/icu/util/VTimeZone;->beginZoneProps(Ljava/io/Writer;ZLjava/lang/String;IIJ)V -Landroid/icu/util/VTimeZone;->COLON:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->COMMA:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->create(Ljava/io/Reader;)Landroid/icu/util/VTimeZone; -Landroid/icu/util/VTimeZone;->create(Ljava/lang/String;)Landroid/icu/util/VTimeZone; -Landroid/icu/util/VTimeZone;->createRuleByRDATE(Ljava/lang/String;IIJLjava/util/List;I)Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/VTimeZone;->createRuleByRRULE(Ljava/lang/String;IIJLjava/util/List;I)Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/VTimeZone;->DEF_DSTSAVINGS:I -Landroid/icu/util/VTimeZone;->DEF_TZSTARTTIME:J -Landroid/icu/util/VTimeZone;->endZoneProps(Ljava/io/Writer;Z)V -Landroid/icu/util/VTimeZone;->EQUALS_SIGN:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ERR:I -Landroid/icu/util/VTimeZone;->getDateTimeString(J)Ljava/lang/String; -Landroid/icu/util/VTimeZone;->getDefaultTZName(Ljava/lang/String;Z)Ljava/lang/String; -Landroid/icu/util/VTimeZone;->getLastModified()Ljava/util/Date; -Landroid/icu/util/VTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition; -Landroid/icu/util/VTimeZone;->getOffsetFromLocal(JII[I)V -Landroid/icu/util/VTimeZone;->getPreviousTransition(JZ)Landroid/icu/util/TimeZoneTransition; -Landroid/icu/util/VTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/VTimeZone;->getTimeZoneRules(J)[Landroid/icu/util/TimeZoneRule; -Landroid/icu/util/VTimeZone;->getTZURL()Ljava/lang/String; -Landroid/icu/util/VTimeZone;->getUTCDateTimeString(J)Ljava/lang/String; -Landroid/icu/util/VTimeZone;->hasEquivalentTransitions(Landroid/icu/util/TimeZone;JJ)Z -Landroid/icu/util/VTimeZone;->ICAL_BEGIN:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_BEGIN_VTIMEZONE:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_BYDAY:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_BYMONTH:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_BYMONTHDAY:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_DAYLIGHT:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_DOW_NAMES:[Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_DTSTART:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_END:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_END_VTIMEZONE:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_FREQ:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_LASTMOD:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_RDATE:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_RRULE:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_STANDARD:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_TZID:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_TZNAME:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_TZOFFSETFROM:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_TZOFFSETTO:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_TZURL:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_UNTIL:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_VTIMEZONE:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICAL_YEARLY:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICU_TZINFO_PROP:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->ICU_TZVERSION:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->INI:I -Landroid/icu/util/VTimeZone;->isEquivalentDateRule(IIILandroid/icu/util/DateTimeRule;)Z -Landroid/icu/util/VTimeZone;->isFrozen:Z -Landroid/icu/util/VTimeZone;->lastmod:Ljava/util/Date; -Landroid/icu/util/VTimeZone;->load(Ljava/io/Reader;)Z -Landroid/icu/util/VTimeZone;->MAX_TIME:J -Landroid/icu/util/VTimeZone;->millisToOffset(I)Ljava/lang/String; -Landroid/icu/util/VTimeZone;->MIN_TIME:J -Landroid/icu/util/VTimeZone;->MONTHLENGTH:[I -Landroid/icu/util/VTimeZone;->NEWLINE:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->numToString(II)Ljava/lang/String; -Landroid/icu/util/VTimeZone;->offsetStrToMillis(Ljava/lang/String;)I -Landroid/icu/util/VTimeZone;->olsonzid:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->parse()Z -Landroid/icu/util/VTimeZone;->parseDateTimeString(Ljava/lang/String;I)J -Landroid/icu/util/VTimeZone;->parseRRULE(Ljava/lang/String;[J)[I -Landroid/icu/util/VTimeZone;->SEMICOLON:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->setLastModified(Ljava/util/Date;)V -Landroid/icu/util/VTimeZone;->setTZURL(Ljava/lang/String;)V -Landroid/icu/util/VTimeZone;->toWallTimeRule(Landroid/icu/util/DateTimeRule;II)Landroid/icu/util/DateTimeRule; -Landroid/icu/util/VTimeZone;->tz:Landroid/icu/util/BasicTimeZone; -Landroid/icu/util/VTimeZone;->TZI:I -Landroid/icu/util/VTimeZone;->tzurl:Ljava/lang/String; -Landroid/icu/util/VTimeZone;->VTZ:I -Landroid/icu/util/VTimeZone;->vtzlines:Ljava/util/List; -Landroid/icu/util/VTimeZone;->write(Ljava/io/Writer;)V -Landroid/icu/util/VTimeZone;->write(Ljava/io/Writer;J)V -Landroid/icu/util/VTimeZone;->writeFinalRule(Ljava/io/Writer;ZLandroid/icu/util/AnnualTimeZoneRule;IIJ)V -Landroid/icu/util/VTimeZone;->writeFooter(Ljava/io/Writer;)V -Landroid/icu/util/VTimeZone;->writeHeader(Ljava/io/Writer;)V -Landroid/icu/util/VTimeZone;->writeSimple(Ljava/io/Writer;J)V -Landroid/icu/util/VTimeZone;->writeZone(Ljava/io/Writer;Landroid/icu/util/BasicTimeZone;[Ljava/lang/String;)V -Landroid/icu/util/VTimeZone;->writeZonePropsByDOM(Ljava/io/Writer;ZLjava/lang/String;IIIIJJ)V -Landroid/icu/util/VTimeZone;->writeZonePropsByDOW(Ljava/io/Writer;ZLjava/lang/String;IIIIIJJ)V -Landroid/icu/util/VTimeZone;->writeZonePropsByDOW_GEQ_DOM(Ljava/io/Writer;ZLjava/lang/String;IIIIIJJ)V -Landroid/icu/util/VTimeZone;->writeZonePropsByDOW_GEQ_DOM_sub(Ljava/io/Writer;IIIIJI)V -Landroid/icu/util/VTimeZone;->writeZonePropsByDOW_LEQ_DOM(Ljava/io/Writer;ZLjava/lang/String;IIIIIJJ)V -Landroid/icu/util/VTimeZone;->writeZonePropsByTime(Ljava/io/Writer;ZLjava/lang/String;IIJZ)V Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;->mEnabled:Z Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;->mRevoked:Z Landroid/inputmethodservice/AbstractInputMethodService;->exposeContent(Landroid/view/inputmethod/InputContentInfo;Landroid/view/inputmethod/InputConnection;)V @@ -65381,117 +58139,6 @@ Landroid/speech/tts/Voice;->mLocale:Ljava/util/Locale; Landroid/speech/tts/Voice;->mName:Ljava/lang/String; Landroid/speech/tts/Voice;->mQuality:I Landroid/speech/tts/Voice;->mRequiresNetworkConnection:Z -Landroid/system/ErrnoException;->functionName:Ljava/lang/String; -Landroid/system/ErrnoException;->rethrowAsIOException()Ljava/io/IOException; -Landroid/system/ErrnoException;->rethrowAsSocketException()Ljava/net/SocketException; -Landroid/system/GaiException;-><init>(Ljava/lang/String;I)V -Landroid/system/GaiException;-><init>(Ljava/lang/String;ILjava/lang/Throwable;)V -Landroid/system/GaiException;->error:I -Landroid/system/GaiException;->functionName:Ljava/lang/String; -Landroid/system/GaiException;->rethrowAsUnknownHostException()Ljava/net/UnknownHostException; -Landroid/system/GaiException;->rethrowAsUnknownHostException(Ljava/lang/String;)Ljava/net/UnknownHostException; -Landroid/system/Int32Ref;-><init>(I)V -Landroid/system/NetlinkSocketAddress;-><init>()V -Landroid/system/NetlinkSocketAddress;-><init>(I)V -Landroid/system/NetlinkSocketAddress;->getGroupsMask()I -Landroid/system/NetlinkSocketAddress;->getPortId()I -Landroid/system/NetlinkSocketAddress;->nlGroupsMask:I -Landroid/system/NetlinkSocketAddress;->nlPortId:I -Landroid/system/Os;-><init>()V -Landroid/system/Os;->accept(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)Ljava/io/FileDescriptor; -Landroid/system/Os;->android_getaddrinfo(Ljava/lang/String;Landroid/system/StructAddrinfo;I)[Ljava/net/InetAddress; -Landroid/system/Os;->capget(Landroid/system/StructCapUserHeader;)[Landroid/system/StructCapUserData; -Landroid/system/Os;->capset(Landroid/system/StructCapUserHeader;[Landroid/system/StructCapUserData;)V -Landroid/system/Os;->fcntlFlock(Ljava/io/FileDescriptor;ILandroid/system/StructFlock;)I -Landroid/system/Os;->fcntlInt(Ljava/io/FileDescriptor;II)I -Landroid/system/Os;->fcntlVoid(Ljava/io/FileDescriptor;I)I -Landroid/system/Os;->getifaddrs()[Landroid/system/StructIfaddrs; -Landroid/system/Os;->getnameinfo(Ljava/net/InetAddress;I)Ljava/lang/String; -Landroid/system/Os;->getpgid(I)I -Landroid/system/Os;->getpwnam(Ljava/lang/String;)Landroid/system/StructPasswd; -Landroid/system/Os;->getpwuid(I)Landroid/system/StructPasswd; -Landroid/system/Os;->getrlimit(I)Landroid/system/StructRlimit; -Landroid/system/Os;->getsockoptByte(Ljava/io/FileDescriptor;II)I -Landroid/system/Os;->getsockoptInAddr(Ljava/io/FileDescriptor;II)Ljava/net/InetAddress; -Landroid/system/Os;->getsockoptInt(Ljava/io/FileDescriptor;II)I -Landroid/system/Os;->getsockoptLinger(Ljava/io/FileDescriptor;II)Landroid/system/StructLinger; -Landroid/system/Os;->getsockoptTimeval(Ljava/io/FileDescriptor;II)Landroid/system/StructTimeval; -Landroid/system/Os;->getsockoptUcred(Ljava/io/FileDescriptor;II)Landroid/system/StructUcred; -Landroid/system/Os;->ioctlInetAddress(Ljava/io/FileDescriptor;ILjava/lang/String;)Ljava/net/InetAddress; -Landroid/system/Os;->ioctlInt(Ljava/io/FileDescriptor;ILandroid/system/Int32Ref;)I -Landroid/system/Os;->pipe2(I)[Ljava/io/FileDescriptor; -Landroid/system/Os;->realpath(Ljava/lang/String;)Ljava/lang/String; -Landroid/system/Os;->setpgid(II)V -Landroid/system/Os;->setregid(II)V -Landroid/system/Os;->setreuid(II)V -Landroid/system/Os;->setsockoptByte(Ljava/io/FileDescriptor;III)V -Landroid/system/Os;->setsockoptGroupReq(Ljava/io/FileDescriptor;IILandroid/system/StructGroupReq;)V -Landroid/system/Os;->setsockoptIpMreqn(Ljava/io/FileDescriptor;III)V -Landroid/system/Os;->setsockoptLinger(Ljava/io/FileDescriptor;IILandroid/system/StructLinger;)V -Landroid/system/Os;->splice(Ljava/io/FileDescriptor;Landroid/system/Int64Ref;Ljava/io/FileDescriptor;Landroid/system/Int64Ref;JI)J -Landroid/system/Os;->unlink(Ljava/lang/String;)V -Landroid/system/Os;->waitpid(ILandroid/system/Int32Ref;I)I -Landroid/system/PacketSocketAddress;-><init>(SISB[B)V -Landroid/system/PacketSocketAddress;->sll_addr:[B -Landroid/system/PacketSocketAddress;->sll_hatype:S -Landroid/system/PacketSocketAddress;->sll_ifindex:I -Landroid/system/PacketSocketAddress;->sll_pkttype:B -Landroid/system/PacketSocketAddress;->sll_protocol:S -Landroid/system/StructAddrinfo;-><init>()V -Landroid/system/StructAddrinfo;->ai_addr:Ljava/net/InetAddress; -Landroid/system/StructAddrinfo;->ai_family:I -Landroid/system/StructAddrinfo;->ai_flags:I -Landroid/system/StructAddrinfo;->ai_next:Landroid/system/StructAddrinfo; -Landroid/system/StructAddrinfo;->ai_protocol:I -Landroid/system/StructAddrinfo;->ai_socktype:I -Landroid/system/StructCapUserData;-><init>(III)V -Landroid/system/StructCapUserData;->effective:I -Landroid/system/StructCapUserData;->inheritable:I -Landroid/system/StructCapUserData;->permitted:I -Landroid/system/StructCapUserHeader;-><init>(II)V -Landroid/system/StructCapUserHeader;->pid:I -Landroid/system/StructCapUserHeader;->version:I -Landroid/system/StructFlock;-><init>()V -Landroid/system/StructFlock;->l_len:J -Landroid/system/StructFlock;->l_pid:I -Landroid/system/StructFlock;->l_start:J -Landroid/system/StructFlock;->l_type:S -Landroid/system/StructFlock;->l_whence:S -Landroid/system/StructGroupReq;-><init>(ILjava/net/InetAddress;)V -Landroid/system/StructGroupReq;->gr_group:Ljava/net/InetAddress; -Landroid/system/StructGroupReq;->gr_interface:I -Landroid/system/StructIcmpHdr;-><init>()V -Landroid/system/StructIcmpHdr;->getBytes()[B -Landroid/system/StructIcmpHdr;->IcmpEchoHdr(ZI)Landroid/system/StructIcmpHdr; -Landroid/system/StructIcmpHdr;->packet:[B -Landroid/system/StructIfaddrs;-><init>(Ljava/lang/String;ILjava/net/InetAddress;Ljava/net/InetAddress;Ljava/net/InetAddress;[B)V -Landroid/system/StructIfaddrs;->hwaddr:[B -Landroid/system/StructIfaddrs;->ifa_addr:Ljava/net/InetAddress; -Landroid/system/StructIfaddrs;->ifa_broadaddr:Ljava/net/InetAddress; -Landroid/system/StructIfaddrs;->ifa_flags:I -Landroid/system/StructIfaddrs;->ifa_name:Ljava/lang/String; -Landroid/system/StructIfaddrs;->ifa_netmask:Ljava/net/InetAddress; -Landroid/system/StructLinger;-><init>(II)V -Landroid/system/StructLinger;->isOn()Z -Landroid/system/StructLinger;->l_linger:I -Landroid/system/StructLinger;->l_onoff:I -Landroid/system/StructPasswd;-><init>(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)V -Landroid/system/StructPasswd;->pw_dir:Ljava/lang/String; -Landroid/system/StructPasswd;->pw_gid:I -Landroid/system/StructPasswd;->pw_name:Ljava/lang/String; -Landroid/system/StructPasswd;->pw_shell:Ljava/lang/String; -Landroid/system/StructPasswd;->pw_uid:I -Landroid/system/StructRlimit;-><init>(JJ)V -Landroid/system/StructRlimit;->rlim_cur:J -Landroid/system/StructRlimit;->rlim_max:J -Landroid/system/StructTimeval;-><init>(JJ)V -Landroid/system/StructTimeval;->toMillis()J -Landroid/system/StructTimeval;->tv_sec:J -Landroid/system/StructTimeval;->tv_usec:J -Landroid/system/StructUcred;-><init>(III)V -Landroid/system/StructUcred;->gid:I -Landroid/system/StructUcred;->pid:I -Landroid/system/StructUcred;->uid:I Landroid/telecom/AudioState;->listAppend(Ljava/lang/StringBuffer;Ljava/lang/String;)V Landroid/telecom/AudioState;->ROUTE_ALL:I Landroid/telecom/AuthenticatorService;-><init>()V @@ -101216,1154 +93863,6 @@ Lcom/android/internal/widget/VerifyCredentialResponse;->setPayload([B)V Lcom/android/internal/widget/VerifyCredentialResponse;->setTimeout(I)V Lcom/android/internal/widget/VerifyCredentialResponse;->stripPayload()Lcom/android/internal/widget/VerifyCredentialResponse; Lcom/android/internal/widget/VerifyCredentialResponse;->TAG:Ljava/lang/String; -Lcom/android/okhttp/Address;-><init>(Ljava/lang/String;ILcom/android/okhttp/Dns;Ljavax/net/SocketFactory;Ljavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/HostnameVerifier;Lcom/android/okhttp/CertificatePinner;Lcom/android/okhttp/Authenticator;Ljava/net/Proxy;Ljava/util/List;Ljava/util/List;Ljava/net/ProxySelector;)V -Lcom/android/okhttp/Address;->authenticator:Lcom/android/okhttp/Authenticator; -Lcom/android/okhttp/Address;->certificatePinner:Lcom/android/okhttp/CertificatePinner; -Lcom/android/okhttp/Address;->connectionSpecs:Ljava/util/List; -Lcom/android/okhttp/Address;->dns:Lcom/android/okhttp/Dns; -Lcom/android/okhttp/Address;->getAuthenticator()Lcom/android/okhttp/Authenticator; -Lcom/android/okhttp/Address;->getCertificatePinner()Lcom/android/okhttp/CertificatePinner; -Lcom/android/okhttp/Address;->getConnectionSpecs()Ljava/util/List; -Lcom/android/okhttp/Address;->getDns()Lcom/android/okhttp/Dns; -Lcom/android/okhttp/Address;->getHostnameVerifier()Ljavax/net/ssl/HostnameVerifier; -Lcom/android/okhttp/Address;->getProtocols()Ljava/util/List; -Lcom/android/okhttp/Address;->getProxy()Ljava/net/Proxy; -Lcom/android/okhttp/Address;->getProxySelector()Ljava/net/ProxySelector; -Lcom/android/okhttp/Address;->getSocketFactory()Ljavax/net/SocketFactory; -Lcom/android/okhttp/Address;->getSslSocketFactory()Ljavax/net/ssl/SSLSocketFactory; -Lcom/android/okhttp/Address;->getUriHost()Ljava/lang/String; -Lcom/android/okhttp/Address;->getUriPort()I -Lcom/android/okhttp/Address;->hostnameVerifier:Ljavax/net/ssl/HostnameVerifier; -Lcom/android/okhttp/Address;->protocols:Ljava/util/List; -Lcom/android/okhttp/Address;->proxy:Ljava/net/Proxy; -Lcom/android/okhttp/Address;->proxySelector:Ljava/net/ProxySelector; -Lcom/android/okhttp/Address;->socketFactory:Ljavax/net/SocketFactory; -Lcom/android/okhttp/Address;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory; -Lcom/android/okhttp/Address;->url()Lcom/android/okhttp/HttpUrl; -Lcom/android/okhttp/Address;->url:Lcom/android/okhttp/HttpUrl; -Lcom/android/okhttp/AndroidShimResponseCache;-><init>(Lcom/android/okhttp/Cache;)V -Lcom/android/okhttp/AndroidShimResponseCache;->close()V -Lcom/android/okhttp/AndroidShimResponseCache;->create(Ljava/io/File;J)Lcom/android/okhttp/AndroidShimResponseCache; -Lcom/android/okhttp/AndroidShimResponseCache;->delegate:Lcom/android/okhttp/Cache; -Lcom/android/okhttp/AndroidShimResponseCache;->delete()V -Lcom/android/okhttp/AndroidShimResponseCache;->flush()V -Lcom/android/okhttp/AndroidShimResponseCache;->getCache()Lcom/android/okhttp/Cache; -Lcom/android/okhttp/AndroidShimResponseCache;->getHitCount()I -Lcom/android/okhttp/AndroidShimResponseCache;->getNetworkCount()I -Lcom/android/okhttp/AndroidShimResponseCache;->getRequestCount()I -Lcom/android/okhttp/AndroidShimResponseCache;->isEquivalent(Ljava/io/File;J)Z -Lcom/android/okhttp/AndroidShimResponseCache;->maxSize()J -Lcom/android/okhttp/AndroidShimResponseCache;->size()J -Lcom/android/okhttp/Authenticator;->authenticate(Ljava/net/Proxy;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Request; -Lcom/android/okhttp/Authenticator;->authenticateProxy(Ljava/net/Proxy;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Request; -Lcom/android/okhttp/Cache$CacheRequestImpl;->abort()V -Lcom/android/okhttp/Cache$CacheRequestImpl;->body()Lcom/android/okhttp/okio/Sink; -Lcom/android/okhttp/Cache$CacheRequestImpl;->body:Lcom/android/okhttp/okio/Sink; -Lcom/android/okhttp/Cache$CacheRequestImpl;->cacheOut:Lcom/android/okhttp/okio/Sink; -Lcom/android/okhttp/Cache$CacheRequestImpl;->done:Z -Lcom/android/okhttp/Cache$CacheRequestImpl;->editor:Lcom/android/okhttp/internal/DiskLruCache$Editor; -Lcom/android/okhttp/Cache$CacheResponseBody;-><init>(Lcom/android/okhttp/internal/DiskLruCache$Snapshot;Ljava/lang/String;Ljava/lang/String;)V -Lcom/android/okhttp/Cache$CacheResponseBody;->bodySource:Lcom/android/okhttp/okio/BufferedSource; -Lcom/android/okhttp/Cache$CacheResponseBody;->contentLength()J -Lcom/android/okhttp/Cache$CacheResponseBody;->contentLength:Ljava/lang/String; -Lcom/android/okhttp/Cache$CacheResponseBody;->contentType()Lcom/android/okhttp/MediaType; -Lcom/android/okhttp/Cache$CacheResponseBody;->contentType:Ljava/lang/String; -Lcom/android/okhttp/Cache$CacheResponseBody;->snapshot:Lcom/android/okhttp/internal/DiskLruCache$Snapshot; -Lcom/android/okhttp/Cache$CacheResponseBody;->source()Lcom/android/okhttp/okio/BufferedSource; -Lcom/android/okhttp/Cache$Entry;-><init>(Lcom/android/okhttp/okio/Source;)V -Lcom/android/okhttp/Cache$Entry;-><init>(Lcom/android/okhttp/Response;)V -Lcom/android/okhttp/Cache$Entry;->code:I -Lcom/android/okhttp/Cache$Entry;->handshake:Lcom/android/okhttp/Handshake; -Lcom/android/okhttp/Cache$Entry;->isHttps()Z -Lcom/android/okhttp/Cache$Entry;->matches(Lcom/android/okhttp/Request;Lcom/android/okhttp/Response;)Z -Lcom/android/okhttp/Cache$Entry;->message:Ljava/lang/String; -Lcom/android/okhttp/Cache$Entry;->protocol:Lcom/android/okhttp/Protocol; -Lcom/android/okhttp/Cache$Entry;->readCertificateList(Lcom/android/okhttp/okio/BufferedSource;)Ljava/util/List; -Lcom/android/okhttp/Cache$Entry;->requestMethod:Ljava/lang/String; -Lcom/android/okhttp/Cache$Entry;->response(Lcom/android/okhttp/Request;Lcom/android/okhttp/internal/DiskLruCache$Snapshot;)Lcom/android/okhttp/Response; -Lcom/android/okhttp/Cache$Entry;->responseHeaders:Lcom/android/okhttp/Headers; -Lcom/android/okhttp/Cache$Entry;->url:Ljava/lang/String; -Lcom/android/okhttp/Cache$Entry;->varyHeaders:Lcom/android/okhttp/Headers; -Lcom/android/okhttp/Cache$Entry;->writeCertList(Lcom/android/okhttp/okio/BufferedSink;Ljava/util/List;)V -Lcom/android/okhttp/Cache$Entry;->writeTo(Lcom/android/okhttp/internal/DiskLruCache$Editor;)V -Lcom/android/okhttp/Cache;-><init>(Ljava/io/File;J)V -Lcom/android/okhttp/Cache;-><init>(Ljava/io/File;JLcom/android/okhttp/internal/io/FileSystem;)V -Lcom/android/okhttp/Cache;->abortQuietly(Lcom/android/okhttp/internal/DiskLruCache$Editor;)V -Lcom/android/okhttp/Cache;->cache:Lcom/android/okhttp/internal/DiskLruCache; -Lcom/android/okhttp/Cache;->close()V -Lcom/android/okhttp/Cache;->delete()V -Lcom/android/okhttp/Cache;->ENTRY_BODY:I -Lcom/android/okhttp/Cache;->ENTRY_COUNT:I -Lcom/android/okhttp/Cache;->ENTRY_METADATA:I -Lcom/android/okhttp/Cache;->evictAll()V -Lcom/android/okhttp/Cache;->flush()V -Lcom/android/okhttp/Cache;->get(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response; -Lcom/android/okhttp/Cache;->getDirectory()Ljava/io/File; -Lcom/android/okhttp/Cache;->getHitCount()I -Lcom/android/okhttp/Cache;->getMaxSize()J -Lcom/android/okhttp/Cache;->getNetworkCount()I -Lcom/android/okhttp/Cache;->getRequestCount()I -Lcom/android/okhttp/Cache;->getSize()J -Lcom/android/okhttp/Cache;->getWriteAbortCount()I -Lcom/android/okhttp/Cache;->getWriteSuccessCount()I -Lcom/android/okhttp/Cache;->hitCount:I -Lcom/android/okhttp/Cache;->initialize()V -Lcom/android/okhttp/Cache;->internalCache:Lcom/android/okhttp/internal/InternalCache; -Lcom/android/okhttp/Cache;->isClosed()Z -Lcom/android/okhttp/Cache;->networkCount:I -Lcom/android/okhttp/Cache;->put(Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/CacheRequest; -Lcom/android/okhttp/Cache;->readInt(Lcom/android/okhttp/okio/BufferedSource;)I -Lcom/android/okhttp/Cache;->remove(Lcom/android/okhttp/Request;)V -Lcom/android/okhttp/Cache;->requestCount:I -Lcom/android/okhttp/Cache;->trackConditionalCacheHit()V -Lcom/android/okhttp/Cache;->trackResponse(Lcom/android/okhttp/internal/http/CacheStrategy;)V -Lcom/android/okhttp/Cache;->update(Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;)V -Lcom/android/okhttp/Cache;->urls()Ljava/util/Iterator; -Lcom/android/okhttp/Cache;->urlToKey(Lcom/android/okhttp/Request;)Ljava/lang/String; -Lcom/android/okhttp/Cache;->VERSION:I -Lcom/android/okhttp/Cache;->writeAbortCount:I -Lcom/android/okhttp/Cache;->writeSuccessCount:I -Lcom/android/okhttp/CacheControl$Builder;-><init>()V -Lcom/android/okhttp/CacheControl$Builder;->build()Lcom/android/okhttp/CacheControl; -Lcom/android/okhttp/CacheControl$Builder;->maxAge(ILjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/CacheControl$Builder; -Lcom/android/okhttp/CacheControl$Builder;->maxAgeSeconds:I -Lcom/android/okhttp/CacheControl$Builder;->maxStale(ILjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/CacheControl$Builder; -Lcom/android/okhttp/CacheControl$Builder;->maxStaleSeconds:I -Lcom/android/okhttp/CacheControl$Builder;->minFresh(ILjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/CacheControl$Builder; -Lcom/android/okhttp/CacheControl$Builder;->minFreshSeconds:I -Lcom/android/okhttp/CacheControl$Builder;->noCache()Lcom/android/okhttp/CacheControl$Builder; -Lcom/android/okhttp/CacheControl$Builder;->noCache:Z -Lcom/android/okhttp/CacheControl$Builder;->noStore()Lcom/android/okhttp/CacheControl$Builder; -Lcom/android/okhttp/CacheControl$Builder;->noStore:Z -Lcom/android/okhttp/CacheControl$Builder;->noTransform()Lcom/android/okhttp/CacheControl$Builder; -Lcom/android/okhttp/CacheControl$Builder;->noTransform:Z -Lcom/android/okhttp/CacheControl$Builder;->onlyIfCached()Lcom/android/okhttp/CacheControl$Builder; -Lcom/android/okhttp/CacheControl$Builder;->onlyIfCached:Z -Lcom/android/okhttp/CacheControl;-><init>(Lcom/android/okhttp/CacheControl$Builder;)V -Lcom/android/okhttp/CacheControl;-><init>(ZZIIZZZIIZZLjava/lang/String;)V -Lcom/android/okhttp/CacheControl;->FORCE_CACHE:Lcom/android/okhttp/CacheControl; -Lcom/android/okhttp/CacheControl;->FORCE_NETWORK:Lcom/android/okhttp/CacheControl; -Lcom/android/okhttp/CacheControl;->headerValue()Ljava/lang/String; -Lcom/android/okhttp/CacheControl;->headerValue:Ljava/lang/String; -Lcom/android/okhttp/CacheControl;->isPrivate()Z -Lcom/android/okhttp/CacheControl;->isPrivate:Z -Lcom/android/okhttp/CacheControl;->isPublic()Z -Lcom/android/okhttp/CacheControl;->isPublic:Z -Lcom/android/okhttp/CacheControl;->maxAgeSeconds()I -Lcom/android/okhttp/CacheControl;->maxAgeSeconds:I -Lcom/android/okhttp/CacheControl;->maxStaleSeconds()I -Lcom/android/okhttp/CacheControl;->maxStaleSeconds:I -Lcom/android/okhttp/CacheControl;->minFreshSeconds()I -Lcom/android/okhttp/CacheControl;->minFreshSeconds:I -Lcom/android/okhttp/CacheControl;->mustRevalidate()Z -Lcom/android/okhttp/CacheControl;->mustRevalidate:Z -Lcom/android/okhttp/CacheControl;->noCache()Z -Lcom/android/okhttp/CacheControl;->noCache:Z -Lcom/android/okhttp/CacheControl;->noStore()Z -Lcom/android/okhttp/CacheControl;->noStore:Z -Lcom/android/okhttp/CacheControl;->noTransform()Z -Lcom/android/okhttp/CacheControl;->noTransform:Z -Lcom/android/okhttp/CacheControl;->onlyIfCached()Z -Lcom/android/okhttp/CacheControl;->onlyIfCached:Z -Lcom/android/okhttp/CacheControl;->parse(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/CacheControl; -Lcom/android/okhttp/CacheControl;->sMaxAgeSeconds()I -Lcom/android/okhttp/CacheControl;->sMaxAgeSeconds:I -Lcom/android/okhttp/Call$ApplicationInterceptorChain;->connection()Lcom/android/okhttp/Connection; -Lcom/android/okhttp/Call$ApplicationInterceptorChain;->forWebSocket:Z -Lcom/android/okhttp/Call$ApplicationInterceptorChain;->index:I -Lcom/android/okhttp/Call$ApplicationInterceptorChain;->proceed(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response; -Lcom/android/okhttp/Call$ApplicationInterceptorChain;->request()Lcom/android/okhttp/Request; -Lcom/android/okhttp/Call$ApplicationInterceptorChain;->request:Lcom/android/okhttp/Request; -Lcom/android/okhttp/Call$AsyncCall;->cancel()V -Lcom/android/okhttp/Call$AsyncCall;->execute()V -Lcom/android/okhttp/Call$AsyncCall;->forWebSocket:Z -Lcom/android/okhttp/Call$AsyncCall;->get()Lcom/android/okhttp/Call; -Lcom/android/okhttp/Call$AsyncCall;->host()Ljava/lang/String; -Lcom/android/okhttp/Call$AsyncCall;->request()Lcom/android/okhttp/Request; -Lcom/android/okhttp/Call$AsyncCall;->responseCallback:Lcom/android/okhttp/Callback; -Lcom/android/okhttp/Call$AsyncCall;->tag()Ljava/lang/Object; -Lcom/android/okhttp/Call;-><init>(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;)V -Lcom/android/okhttp/Call;->cancel()V -Lcom/android/okhttp/Call;->canceled:Z -Lcom/android/okhttp/Call;->client:Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/Call;->engine:Lcom/android/okhttp/internal/http/HttpEngine; -Lcom/android/okhttp/Call;->enqueue(Lcom/android/okhttp/Callback;)V -Lcom/android/okhttp/Call;->enqueue(Lcom/android/okhttp/Callback;Z)V -Lcom/android/okhttp/Call;->execute()Lcom/android/okhttp/Response; -Lcom/android/okhttp/Call;->executed:Z -Lcom/android/okhttp/Call;->getResponse(Lcom/android/okhttp/Request;Z)Lcom/android/okhttp/Response; -Lcom/android/okhttp/Call;->getResponseWithInterceptorChain(Z)Lcom/android/okhttp/Response; -Lcom/android/okhttp/Call;->isCanceled()Z -Lcom/android/okhttp/Call;->isExecuted()Z -Lcom/android/okhttp/Call;->originalRequest:Lcom/android/okhttp/Request; -Lcom/android/okhttp/Call;->tag()Ljava/lang/Object; -Lcom/android/okhttp/Call;->toLoggableString()Ljava/lang/String; -Lcom/android/okhttp/Callback;->onFailure(Lcom/android/okhttp/Request;Ljava/io/IOException;)V -Lcom/android/okhttp/Callback;->onResponse(Lcom/android/okhttp/Response;)V -Lcom/android/okhttp/CertificatePinner$Builder;-><init>()V -Lcom/android/okhttp/CertificatePinner$Builder;->build()Lcom/android/okhttp/CertificatePinner; -Lcom/android/okhttp/CertificatePinner$Builder;->hostnameToPins:Ljava/util/Map; -Lcom/android/okhttp/CertificatePinner;-><init>(Lcom/android/okhttp/CertificatePinner$Builder;)V -Lcom/android/okhttp/CertificatePinner;->check(Ljava/lang/String;Ljava/util/List;)V -Lcom/android/okhttp/CertificatePinner;->DEFAULT:Lcom/android/okhttp/CertificatePinner; -Lcom/android/okhttp/CertificatePinner;->findMatchingPins(Ljava/lang/String;)Ljava/util/Set; -Lcom/android/okhttp/CertificatePinner;->hostnameToPins:Ljava/util/Map; -Lcom/android/okhttp/CertificatePinner;->pin(Ljava/security/cert/Certificate;)Ljava/lang/String; -Lcom/android/okhttp/CertificatePinner;->sha1(Ljava/security/cert/X509Certificate;)Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/Challenge;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Lcom/android/okhttp/Challenge;->getRealm()Ljava/lang/String; -Lcom/android/okhttp/Challenge;->getScheme()Ljava/lang/String; -Lcom/android/okhttp/Challenge;->realm:Ljava/lang/String; -Lcom/android/okhttp/Challenge;->scheme:Ljava/lang/String; -Lcom/android/okhttp/CipherSuite;->forJavaName(Ljava/lang/String;)Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->javaName:Ljava/lang/String; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_256_CBC_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_DSS_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_256_CBC_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DHE_RSA_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_EXPORT_WITH_RC4_40_MD5:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_256_CBC_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_DH_anon_WITH_RC4_128_MD5:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_ECDSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDHE_RSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_anon_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_ECDSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_ECDH_RSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_EMPTY_RENEGOTIATION_INFO_SCSV:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_KRB5_EXPORT_WITH_DES_CBC_40_MD5:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_KRB5_EXPORT_WITH_DES_CBC_40_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_KRB5_EXPORT_WITH_RC4_40_MD5:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_KRB5_EXPORT_WITH_RC4_40_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_3DES_EDE_CBC_MD5:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_DES_CBC_MD5:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_RC4_128_MD5:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_KRB5_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_EXPORT_WITH_DES40_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_EXPORT_WITH_RC4_40_MD5:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_3DES_EDE_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_128_CBC_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_128_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_128_GCM_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_256_CBC_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_256_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_AES_256_GCM_SHA384:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_DES_CBC_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_NULL_MD5:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_NULL_SHA256:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_NULL_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_RC4_128_MD5:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->TLS_RSA_WITH_RC4_128_SHA:Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/CipherSuite;->values()[Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/Connection;->getHandshake()Lcom/android/okhttp/Handshake; -Lcom/android/okhttp/Connection;->getProtocol()Lcom/android/okhttp/Protocol; -Lcom/android/okhttp/Connection;->getRoute()Lcom/android/okhttp/Route; -Lcom/android/okhttp/ConnectionPool;-><init>(IJ)V -Lcom/android/okhttp/ConnectionPool;-><init>(IJLjava/util/concurrent/TimeUnit;)V -Lcom/android/okhttp/ConnectionPool;->cleanup(J)J -Lcom/android/okhttp/ConnectionPool;->cleanupRunnable:Ljava/lang/Runnable; -Lcom/android/okhttp/ConnectionPool;->connectionBecameIdle(Lcom/android/okhttp/internal/io/RealConnection;)Z -Lcom/android/okhttp/ConnectionPool;->DEFAULT_KEEP_ALIVE_DURATION_MS:J -Lcom/android/okhttp/ConnectionPool;->evictAll()V -Lcom/android/okhttp/ConnectionPool;->executor:Ljava/util/concurrent/Executor; -Lcom/android/okhttp/ConnectionPool;->get(Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/http/StreamAllocation;)Lcom/android/okhttp/internal/io/RealConnection; -Lcom/android/okhttp/ConnectionPool;->getConnectionCount()I -Lcom/android/okhttp/ConnectionPool;->getDefault()Lcom/android/okhttp/ConnectionPool; -Lcom/android/okhttp/ConnectionPool;->getHttpConnectionCount()I -Lcom/android/okhttp/ConnectionPool;->getIdleConnectionCount()I -Lcom/android/okhttp/ConnectionPool;->getMultiplexedConnectionCount()I -Lcom/android/okhttp/ConnectionPool;->getSpdyConnectionCount()I -Lcom/android/okhttp/ConnectionPool;->pruneAndGetAllocationCount(Lcom/android/okhttp/internal/io/RealConnection;J)I -Lcom/android/okhttp/ConnectionPool;->put(Lcom/android/okhttp/internal/io/RealConnection;)V -Lcom/android/okhttp/ConnectionPool;->routeDatabase:Lcom/android/okhttp/internal/RouteDatabase; -Lcom/android/okhttp/ConnectionPool;->setCleanupRunnableForTest(Ljava/lang/Runnable;)V -Lcom/android/okhttp/ConnectionSpec$Builder;-><init>(Lcom/android/okhttp/ConnectionSpec;)V -Lcom/android/okhttp/ConnectionSpec$Builder;-><init>(Z)V -Lcom/android/okhttp/ConnectionSpec$Builder;->allEnabledCipherSuites()Lcom/android/okhttp/ConnectionSpec$Builder; -Lcom/android/okhttp/ConnectionSpec$Builder;->allEnabledTlsVersions()Lcom/android/okhttp/ConnectionSpec$Builder; -Lcom/android/okhttp/ConnectionSpec$Builder;->build()Lcom/android/okhttp/ConnectionSpec; -Lcom/android/okhttp/ConnectionSpec$Builder;->cipherSuites:[Ljava/lang/String; -Lcom/android/okhttp/ConnectionSpec$Builder;->supportsTlsExtensions(Z)Lcom/android/okhttp/ConnectionSpec$Builder; -Lcom/android/okhttp/ConnectionSpec$Builder;->supportsTlsExtensions:Z -Lcom/android/okhttp/ConnectionSpec$Builder;->tls:Z -Lcom/android/okhttp/ConnectionSpec$Builder;->tlsVersions:[Ljava/lang/String; -Lcom/android/okhttp/ConnectionSpec;-><init>(Lcom/android/okhttp/ConnectionSpec$Builder;)V -Lcom/android/okhttp/ConnectionSpec;->apply(Ljavax/net/ssl/SSLSocket;Z)V -Lcom/android/okhttp/ConnectionSpec;->APPROVED_CIPHER_SUITES:[Lcom/android/okhttp/CipherSuite; -Lcom/android/okhttp/ConnectionSpec;->cipherSuites()Ljava/util/List; -Lcom/android/okhttp/ConnectionSpec;->cipherSuites:[Ljava/lang/String; -Lcom/android/okhttp/ConnectionSpec;->CLEARTEXT:Lcom/android/okhttp/ConnectionSpec; -Lcom/android/okhttp/ConnectionSpec;->COMPATIBLE_TLS:Lcom/android/okhttp/ConnectionSpec; -Lcom/android/okhttp/ConnectionSpec;->isCompatible(Ljavax/net/ssl/SSLSocket;)Z -Lcom/android/okhttp/ConnectionSpec;->isTls()Z -Lcom/android/okhttp/ConnectionSpec;->MODERN_TLS:Lcom/android/okhttp/ConnectionSpec; -Lcom/android/okhttp/ConnectionSpec;->nonEmptyIntersection([Ljava/lang/String;[Ljava/lang/String;)Z -Lcom/android/okhttp/ConnectionSpec;->supportedSpec(Ljavax/net/ssl/SSLSocket;Z)Lcom/android/okhttp/ConnectionSpec; -Lcom/android/okhttp/ConnectionSpec;->supportsTlsExtensions()Z -Lcom/android/okhttp/ConnectionSpec;->supportsTlsExtensions:Z -Lcom/android/okhttp/ConnectionSpec;->tls:Z -Lcom/android/okhttp/ConnectionSpec;->tlsVersions()Ljava/util/List; -Lcom/android/okhttp/ConnectionSpec;->tlsVersions:[Ljava/lang/String; -Lcom/android/okhttp/Dispatcher;-><init>()V -Lcom/android/okhttp/Dispatcher;-><init>(Ljava/util/concurrent/ExecutorService;)V -Lcom/android/okhttp/Dispatcher;->cancel(Ljava/lang/Object;)V -Lcom/android/okhttp/Dispatcher;->enqueue(Lcom/android/okhttp/Call$AsyncCall;)V -Lcom/android/okhttp/Dispatcher;->executed(Lcom/android/okhttp/Call;)V -Lcom/android/okhttp/Dispatcher;->executedCalls:Ljava/util/Deque; -Lcom/android/okhttp/Dispatcher;->executorService:Ljava/util/concurrent/ExecutorService; -Lcom/android/okhttp/Dispatcher;->finished(Lcom/android/okhttp/Call$AsyncCall;)V -Lcom/android/okhttp/Dispatcher;->finished(Lcom/android/okhttp/Call;)V -Lcom/android/okhttp/Dispatcher;->getExecutorService()Ljava/util/concurrent/ExecutorService; -Lcom/android/okhttp/Dispatcher;->getMaxRequests()I -Lcom/android/okhttp/Dispatcher;->getMaxRequestsPerHost()I -Lcom/android/okhttp/Dispatcher;->getQueuedCallCount()I -Lcom/android/okhttp/Dispatcher;->getRunningCallCount()I -Lcom/android/okhttp/Dispatcher;->maxRequests:I -Lcom/android/okhttp/Dispatcher;->maxRequestsPerHost:I -Lcom/android/okhttp/Dispatcher;->promoteCalls()V -Lcom/android/okhttp/Dispatcher;->readyCalls:Ljava/util/Deque; -Lcom/android/okhttp/Dispatcher;->runningCalls:Ljava/util/Deque; -Lcom/android/okhttp/Dispatcher;->runningCallsForHost(Lcom/android/okhttp/Call$AsyncCall;)I -Lcom/android/okhttp/Dispatcher;->setMaxRequests(I)V -Lcom/android/okhttp/Dispatcher;->setMaxRequestsPerHost(I)V -Lcom/android/okhttp/Dns;->lookup(Ljava/lang/String;)Ljava/util/List; -Lcom/android/okhttp/Dns;->SYSTEM:Lcom/android/okhttp/Dns; -Lcom/android/okhttp/Handshake;-><init>(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V -Lcom/android/okhttp/Handshake;->cipherSuite()Ljava/lang/String; -Lcom/android/okhttp/Handshake;->cipherSuite:Ljava/lang/String; -Lcom/android/okhttp/Handshake;->get(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)Lcom/android/okhttp/Handshake; -Lcom/android/okhttp/Handshake;->get(Ljavax/net/ssl/SSLSession;)Lcom/android/okhttp/Handshake; -Lcom/android/okhttp/Handshake;->localCertificates()Ljava/util/List; -Lcom/android/okhttp/Handshake;->localCertificates:Ljava/util/List; -Lcom/android/okhttp/Handshake;->localPrincipal()Ljava/security/Principal; -Lcom/android/okhttp/Handshake;->peerCertificates()Ljava/util/List; -Lcom/android/okhttp/Handshake;->peerCertificates:Ljava/util/List; -Lcom/android/okhttp/Handshake;->peerPrincipal()Ljava/security/Principal; -Lcom/android/okhttp/Headers$Builder;-><init>()V -Lcom/android/okhttp/Headers$Builder;->add(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder; -Lcom/android/okhttp/Headers$Builder;->add(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder; -Lcom/android/okhttp/Headers$Builder;->addLenient(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder; -Lcom/android/okhttp/Headers$Builder;->addLenient(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder; -Lcom/android/okhttp/Headers$Builder;->build()Lcom/android/okhttp/Headers; -Lcom/android/okhttp/Headers$Builder;->checkNameAndValue(Ljava/lang/String;Ljava/lang/String;)V -Lcom/android/okhttp/Headers$Builder;->get(Ljava/lang/String;)Ljava/lang/String; -Lcom/android/okhttp/Headers$Builder;->namesAndValues:Ljava/util/List; -Lcom/android/okhttp/Headers$Builder;->removeAll(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder; -Lcom/android/okhttp/Headers$Builder;->set(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder; -Lcom/android/okhttp/Headers;-><init>(Lcom/android/okhttp/Headers$Builder;)V -Lcom/android/okhttp/Headers;-><init>([Ljava/lang/String;)V -Lcom/android/okhttp/Headers;->get(Ljava/lang/String;)Ljava/lang/String; -Lcom/android/okhttp/Headers;->get([Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Lcom/android/okhttp/Headers;->getDate(Ljava/lang/String;)Ljava/util/Date; -Lcom/android/okhttp/Headers;->name(I)Ljava/lang/String; -Lcom/android/okhttp/Headers;->names()Ljava/util/Set; -Lcom/android/okhttp/Headers;->namesAndValues:[Ljava/lang/String; -Lcom/android/okhttp/Headers;->newBuilder()Lcom/android/okhttp/Headers$Builder; -Lcom/android/okhttp/Headers;->of(Ljava/util/Map;)Lcom/android/okhttp/Headers; -Lcom/android/okhttp/Headers;->size()I -Lcom/android/okhttp/Headers;->toMultimap()Ljava/util/Map; -Lcom/android/okhttp/Headers;->value(I)Ljava/lang/String; -Lcom/android/okhttp/Headers;->values(Ljava/lang/String;)Ljava/util/List; -Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->INVALID_HOST:Lcom/android/okhttp/HttpUrl$Builder$ParseResult; -Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->INVALID_PORT:Lcom/android/okhttp/HttpUrl$Builder$ParseResult; -Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->MISSING_SCHEME:Lcom/android/okhttp/HttpUrl$Builder$ParseResult; -Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->SUCCESS:Lcom/android/okhttp/HttpUrl$Builder$ParseResult; -Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->UNSUPPORTED_SCHEME:Lcom/android/okhttp/HttpUrl$Builder$ParseResult; -Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder$ParseResult; -Lcom/android/okhttp/HttpUrl$Builder$ParseResult;->values()[Lcom/android/okhttp/HttpUrl$Builder$ParseResult; -Lcom/android/okhttp/HttpUrl$Builder;-><init>()V -Lcom/android/okhttp/HttpUrl$Builder;->addEncodedPathSegment(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->addEncodedQueryParameter(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->addPathSegment(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->addQueryParameter(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->canonicalizeHost(Ljava/lang/String;II)Ljava/lang/String; -Lcom/android/okhttp/HttpUrl$Builder;->containsInvalidHostnameAsciiCodes(Ljava/lang/String;)Z -Lcom/android/okhttp/HttpUrl$Builder;->decodeIpv4Suffix(Ljava/lang/String;II[BI)Z -Lcom/android/okhttp/HttpUrl$Builder;->decodeIpv6(Ljava/lang/String;II)Ljava/net/InetAddress; -Lcom/android/okhttp/HttpUrl$Builder;->domainToAscii(Ljava/lang/String;)Ljava/lang/String; -Lcom/android/okhttp/HttpUrl$Builder;->effectivePort()I -Lcom/android/okhttp/HttpUrl$Builder;->encodedFragment(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->encodedFragment:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl$Builder;->encodedPassword(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->encodedPassword:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl$Builder;->encodedPath(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->encodedPathSegments:Ljava/util/List; -Lcom/android/okhttp/HttpUrl$Builder;->encodedQuery(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->encodedQueryNamesAndValues:Ljava/util/List; -Lcom/android/okhttp/HttpUrl$Builder;->encodedUsername(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->encodedUsername:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl$Builder;->fragment(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->host(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->host:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl$Builder;->inet6AddressToAscii([B)Ljava/lang/String; -Lcom/android/okhttp/HttpUrl$Builder;->isDot(Ljava/lang/String;)Z -Lcom/android/okhttp/HttpUrl$Builder;->isDotDot(Ljava/lang/String;)Z -Lcom/android/okhttp/HttpUrl$Builder;->parse(Lcom/android/okhttp/HttpUrl;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder$ParseResult; -Lcom/android/okhttp/HttpUrl$Builder;->parsePort(Ljava/lang/String;II)I -Lcom/android/okhttp/HttpUrl$Builder;->password(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->pop()V -Lcom/android/okhttp/HttpUrl$Builder;->port(I)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->port:I -Lcom/android/okhttp/HttpUrl$Builder;->portColonOffset(Ljava/lang/String;II)I -Lcom/android/okhttp/HttpUrl$Builder;->push(Ljava/lang/String;IIZZ)V -Lcom/android/okhttp/HttpUrl$Builder;->query(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->reencodeForUri()Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->removeAllCanonicalQueryParameters(Ljava/lang/String;)V -Lcom/android/okhttp/HttpUrl$Builder;->removeAllEncodedQueryParameters(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->removeAllQueryParameters(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->removePathSegment(I)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->resolvePath(Ljava/lang/String;II)V -Lcom/android/okhttp/HttpUrl$Builder;->scheme(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->scheme:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl$Builder;->schemeDelimiterOffset(Ljava/lang/String;II)I -Lcom/android/okhttp/HttpUrl$Builder;->setEncodedPathSegment(ILjava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->setEncodedQueryParameter(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->setPathSegment(ILjava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->setQueryParameter(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl$Builder;->skipLeadingAsciiWhitespace(Ljava/lang/String;II)I -Lcom/android/okhttp/HttpUrl$Builder;->skipTrailingAsciiWhitespace(Ljava/lang/String;II)I -Lcom/android/okhttp/HttpUrl$Builder;->slashCount(Ljava/lang/String;II)I -Lcom/android/okhttp/HttpUrl$Builder;->username(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder; -Lcom/android/okhttp/HttpUrl;-><init>(Lcom/android/okhttp/HttpUrl$Builder;)V -Lcom/android/okhttp/HttpUrl;->canonicalize(Lcom/android/okhttp/okio/Buffer;Ljava/lang/String;IILjava/lang/String;ZZZZ)V -Lcom/android/okhttp/HttpUrl;->canonicalize(Ljava/lang/String;IILjava/lang/String;ZZZZ)Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->canonicalize(Ljava/lang/String;Ljava/lang/String;ZZZZ)Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->decodeHexDigit(C)I -Lcom/android/okhttp/HttpUrl;->defaultPort(Ljava/lang/String;)I -Lcom/android/okhttp/HttpUrl;->delimiterOffset(Ljava/lang/String;IILjava/lang/String;)I -Lcom/android/okhttp/HttpUrl;->encodedFragment()Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->encodedPassword()Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->encodedPathSegments()Ljava/util/List; -Lcom/android/okhttp/HttpUrl;->encodedQuery()Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->encodedUsername()Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->FORM_ENCODE_SET:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->fragment()Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->fragment:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->FRAGMENT_ENCODE_SET:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->FRAGMENT_ENCODE_SET_URI:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->get(Ljava/net/URI;)Lcom/android/okhttp/HttpUrl; -Lcom/android/okhttp/HttpUrl;->get(Ljava/net/URL;)Lcom/android/okhttp/HttpUrl; -Lcom/android/okhttp/HttpUrl;->getChecked(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl; -Lcom/android/okhttp/HttpUrl;->HEX_DIGITS:[C -Lcom/android/okhttp/HttpUrl;->host()Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->host:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->isHttps()Z -Lcom/android/okhttp/HttpUrl;->namesAndValuesToQueryString(Ljava/lang/StringBuilder;Ljava/util/List;)V -Lcom/android/okhttp/HttpUrl;->password()Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->password:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->PASSWORD_ENCODE_SET:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->pathSegments()Ljava/util/List; -Lcom/android/okhttp/HttpUrl;->pathSegments:Ljava/util/List; -Lcom/android/okhttp/HttpUrl;->pathSegmentsToString(Ljava/lang/StringBuilder;Ljava/util/List;)V -Lcom/android/okhttp/HttpUrl;->pathSize()I -Lcom/android/okhttp/HttpUrl;->PATH_SEGMENT_ENCODE_SET:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->PATH_SEGMENT_ENCODE_SET_URI:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->percentDecode(Lcom/android/okhttp/okio/Buffer;Ljava/lang/String;IIZ)V -Lcom/android/okhttp/HttpUrl;->percentDecode(Ljava/lang/String;IIZ)Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->percentDecode(Ljava/lang/String;Z)Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->percentDecode(Ljava/util/List;Z)Ljava/util/List; -Lcom/android/okhttp/HttpUrl;->percentEncoded(Ljava/lang/String;II)Z -Lcom/android/okhttp/HttpUrl;->port()I -Lcom/android/okhttp/HttpUrl;->port:I -Lcom/android/okhttp/HttpUrl;->queryNamesAndValues:Ljava/util/List; -Lcom/android/okhttp/HttpUrl;->queryParameter(Ljava/lang/String;)Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->queryParameterName(I)Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->queryParameterNames()Ljava/util/Set; -Lcom/android/okhttp/HttpUrl;->queryParameterValue(I)Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->queryParameterValues(Ljava/lang/String;)Ljava/util/List; -Lcom/android/okhttp/HttpUrl;->querySize()I -Lcom/android/okhttp/HttpUrl;->queryStringToNamesAndValues(Ljava/lang/String;)Ljava/util/List; -Lcom/android/okhttp/HttpUrl;->QUERY_COMPONENT_ENCODE_SET:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->QUERY_COMPONENT_ENCODE_SET_URI:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->QUERY_ENCODE_SET:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->resolve(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl; -Lcom/android/okhttp/HttpUrl;->scheme()Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->scheme:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->uri()Ljava/net/URI; -Lcom/android/okhttp/HttpUrl;->url()Ljava/net/URL; -Lcom/android/okhttp/HttpUrl;->url:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->username()Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->username:Ljava/lang/String; -Lcom/android/okhttp/HttpUrl;->USERNAME_ENCODE_SET:Ljava/lang/String; -Lcom/android/okhttp/Interceptor$Chain;->connection()Lcom/android/okhttp/Connection; -Lcom/android/okhttp/Interceptor$Chain;->proceed(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response; -Lcom/android/okhttp/Interceptor$Chain;->request()Lcom/android/okhttp/Request; -Lcom/android/okhttp/Interceptor;->intercept(Lcom/android/okhttp/Interceptor$Chain;)Lcom/android/okhttp/Response; -Lcom/android/okhttp/internal/http/CacheRequest;->abort()V -Lcom/android/okhttp/internal/http/CacheRequest;->body()Lcom/android/okhttp/okio/Sink; -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;-><init>(JLcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->ageSeconds:I -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->cacheResponse:Lcom/android/okhttp/Response; -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->cacheResponseAge()J -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->computeFreshnessLifetime()J -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->etag:Ljava/lang/String; -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->expires:Ljava/util/Date; -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->get()Lcom/android/okhttp/internal/http/CacheStrategy; -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->getCandidate()Lcom/android/okhttp/internal/http/CacheStrategy; -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->hasConditions(Lcom/android/okhttp/Request;)Z -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->isFreshnessLifetimeHeuristic()Z -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->lastModified:Ljava/util/Date; -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->lastModifiedString:Ljava/lang/String; -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->nowMillis:J -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->receivedResponseMillis:J -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->request:Lcom/android/okhttp/Request; -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->sentRequestMillis:J -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->servedDate:Ljava/util/Date; -Lcom/android/okhttp/internal/http/CacheStrategy$Factory;->servedDateString:Ljava/lang/String; -Lcom/android/okhttp/internal/http/CacheStrategy;-><init>(Lcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V -Lcom/android/okhttp/internal/http/CacheStrategy;->cacheResponse:Lcom/android/okhttp/Response; -Lcom/android/okhttp/internal/http/CacheStrategy;->isCacheable(Lcom/android/okhttp/Response;Lcom/android/okhttp/Request;)Z -Lcom/android/okhttp/internal/http/CacheStrategy;->networkRequest:Lcom/android/okhttp/Request; -Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->calls:I -Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->connection()Lcom/android/okhttp/Connection; -Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->index:I -Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->proceed(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response; -Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->request()Lcom/android/okhttp/Request; -Lcom/android/okhttp/internal/http/HttpEngine$NetworkInterceptorChain;->request:Lcom/android/okhttp/Request; -Lcom/android/okhttp/internal/http/HttpEngine;-><init>(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;ZZZLcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/RetryableSink;Lcom/android/okhttp/Response;)V -Lcom/android/okhttp/internal/http/HttpEngine;->bufferedRequestBody:Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/internal/http/HttpEngine;->bufferRequestBody:Z -Lcom/android/okhttp/internal/http/HttpEngine;->cacheResponse:Lcom/android/okhttp/Response; -Lcom/android/okhttp/internal/http/HttpEngine;->cacheStrategy:Lcom/android/okhttp/internal/http/CacheStrategy; -Lcom/android/okhttp/internal/http/HttpEngine;->cacheWritingResponse(Lcom/android/okhttp/internal/http/CacheRequest;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response; -Lcom/android/okhttp/internal/http/HttpEngine;->callerWritesRequestBody:Z -Lcom/android/okhttp/internal/http/HttpEngine;->cancel()V -Lcom/android/okhttp/internal/http/HttpEngine;->client:Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/internal/http/HttpEngine;->close()Lcom/android/okhttp/internal/http/StreamAllocation; -Lcom/android/okhttp/internal/http/HttpEngine;->combine(Lcom/android/okhttp/Headers;Lcom/android/okhttp/Headers;)Lcom/android/okhttp/Headers; -Lcom/android/okhttp/internal/http/HttpEngine;->connect()Lcom/android/okhttp/internal/http/HttpStream; -Lcom/android/okhttp/internal/http/HttpEngine;->createAddress(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;)Lcom/android/okhttp/Address; -Lcom/android/okhttp/internal/http/HttpEngine;->EMPTY_BODY:Lcom/android/okhttp/ResponseBody; -Lcom/android/okhttp/internal/http/HttpEngine;->followUpRequest()Lcom/android/okhttp/Request; -Lcom/android/okhttp/internal/http/HttpEngine;->forWebSocket:Z -Lcom/android/okhttp/internal/http/HttpEngine;->getBufferedRequestBody()Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/internal/http/HttpEngine;->getRequest()Lcom/android/okhttp/Request; -Lcom/android/okhttp/internal/http/HttpEngine;->getRequestBody()Lcom/android/okhttp/okio/Sink; -Lcom/android/okhttp/internal/http/HttpEngine;->getResponse()Lcom/android/okhttp/Response; -Lcom/android/okhttp/internal/http/HttpEngine;->hasBody(Lcom/android/okhttp/Response;)Z -Lcom/android/okhttp/internal/http/HttpEngine;->MAX_FOLLOW_UPS:I -Lcom/android/okhttp/internal/http/HttpEngine;->maybeCache()V -Lcom/android/okhttp/internal/http/HttpEngine;->permitsRequestBody(Lcom/android/okhttp/Request;)Z -Lcom/android/okhttp/internal/http/HttpEngine;->readNetworkResponse()Lcom/android/okhttp/Response; -Lcom/android/okhttp/internal/http/HttpEngine;->receiveHeaders(Lcom/android/okhttp/Headers;)V -Lcom/android/okhttp/internal/http/HttpEngine;->recover(Lcom/android/okhttp/internal/http/RouteException;)Lcom/android/okhttp/internal/http/HttpEngine; -Lcom/android/okhttp/internal/http/HttpEngine;->recover(Ljava/io/IOException;)Lcom/android/okhttp/internal/http/HttpEngine; -Lcom/android/okhttp/internal/http/HttpEngine;->recover(Ljava/io/IOException;Lcom/android/okhttp/okio/Sink;)Lcom/android/okhttp/internal/http/HttpEngine; -Lcom/android/okhttp/internal/http/HttpEngine;->releaseStreamAllocation()V -Lcom/android/okhttp/internal/http/HttpEngine;->requestBodyOut:Lcom/android/okhttp/okio/Sink; -Lcom/android/okhttp/internal/http/HttpEngine;->sameConnection(Lcom/android/okhttp/HttpUrl;)Z -Lcom/android/okhttp/internal/http/HttpEngine;->storeRequest:Lcom/android/okhttp/internal/http/CacheRequest; -Lcom/android/okhttp/internal/http/HttpEngine;->streamAllocation:Lcom/android/okhttp/internal/http/StreamAllocation; -Lcom/android/okhttp/internal/http/HttpEngine;->stripBody(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response; -Lcom/android/okhttp/internal/http/HttpEngine;->transparentGzip:Z -Lcom/android/okhttp/internal/http/HttpEngine;->unzip(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response; -Lcom/android/okhttp/internal/http/HttpEngine;->userRequest:Lcom/android/okhttp/Request; -Lcom/android/okhttp/internal/http/HttpEngine;->validate(Lcom/android/okhttp/Response;Lcom/android/okhttp/Response;)Z -Lcom/android/okhttp/internal/http/HttpStream;->cancel()V -Lcom/android/okhttp/internal/http/HttpStream;->createRequestBody(Lcom/android/okhttp/Request;J)Lcom/android/okhttp/okio/Sink; -Lcom/android/okhttp/internal/http/HttpStream;->DISCARD_STREAM_TIMEOUT_MILLIS:I -Lcom/android/okhttp/internal/http/HttpStream;->finishRequest()V -Lcom/android/okhttp/internal/http/HttpStream;->openResponseBody(Lcom/android/okhttp/Response;)Lcom/android/okhttp/ResponseBody; -Lcom/android/okhttp/internal/http/HttpStream;->readResponseHeaders()Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/internal/http/HttpStream;->setHttpEngine(Lcom/android/okhttp/internal/http/HttpEngine;)V -Lcom/android/okhttp/internal/http/HttpStream;->writeRequestBody(Lcom/android/okhttp/internal/http/RetryableSink;)V -Lcom/android/okhttp/internal/http/HttpStream;->writeRequestHeaders(Lcom/android/okhttp/Request;)V -Lcom/android/okhttp/internal/http/RequestException;-><init>(Ljava/io/IOException;)V -Lcom/android/okhttp/internal/http/RetryableSink;-><init>()V -Lcom/android/okhttp/internal/http/RetryableSink;-><init>(I)V -Lcom/android/okhttp/internal/http/RetryableSink;->closed:Z -Lcom/android/okhttp/internal/http/RetryableSink;->content:Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/internal/http/RetryableSink;->contentLength()J -Lcom/android/okhttp/internal/http/RetryableSink;->limit:I -Lcom/android/okhttp/internal/http/RetryableSink;->timeout()Lcom/android/okhttp/okio/Timeout; -Lcom/android/okhttp/internal/http/RetryableSink;->write(Lcom/android/okhttp/okio/Buffer;J)V -Lcom/android/okhttp/internal/http/RetryableSink;->writeToSocket(Lcom/android/okhttp/okio/Sink;)V -Lcom/android/okhttp/internal/http/RouteException;-><init>(Ljava/io/IOException;)V -Lcom/android/okhttp/internal/http/RouteException;->addConnectException(Ljava/io/IOException;)V -Lcom/android/okhttp/internal/http/RouteException;->addSuppressedExceptionMethod:Ljava/lang/reflect/Method; -Lcom/android/okhttp/internal/http/RouteException;->addSuppressedIfPossible(Ljava/io/IOException;Ljava/io/IOException;)V -Lcom/android/okhttp/internal/http/RouteException;->getLastConnectException()Ljava/io/IOException; -Lcom/android/okhttp/internal/http/RouteException;->lastException:Ljava/io/IOException; -Lcom/android/okhttp/internal/http/RouteSelector;-><init>(Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/RouteDatabase;)V -Lcom/android/okhttp/internal/http/RouteSelector;->address:Lcom/android/okhttp/Address; -Lcom/android/okhttp/internal/http/RouteSelector;->connectFailed(Lcom/android/okhttp/Route;Ljava/io/IOException;)V -Lcom/android/okhttp/internal/http/RouteSelector;->getHostString(Ljava/net/InetSocketAddress;)Ljava/lang/String; -Lcom/android/okhttp/internal/http/RouteSelector;->hasNextInetSocketAddress()Z -Lcom/android/okhttp/internal/http/RouteSelector;->hasNextPostponed()Z -Lcom/android/okhttp/internal/http/RouteSelector;->hasNextProxy()Z -Lcom/android/okhttp/internal/http/RouteSelector;->inetSocketAddresses:Ljava/util/List; -Lcom/android/okhttp/internal/http/RouteSelector;->lastInetSocketAddress:Ljava/net/InetSocketAddress; -Lcom/android/okhttp/internal/http/RouteSelector;->lastProxy:Ljava/net/Proxy; -Lcom/android/okhttp/internal/http/RouteSelector;->next()Lcom/android/okhttp/Route; -Lcom/android/okhttp/internal/http/RouteSelector;->nextInetSocketAddress()Ljava/net/InetSocketAddress; -Lcom/android/okhttp/internal/http/RouteSelector;->nextInetSocketAddressIndex:I -Lcom/android/okhttp/internal/http/RouteSelector;->nextPostponed()Lcom/android/okhttp/Route; -Lcom/android/okhttp/internal/http/RouteSelector;->nextProxy()Ljava/net/Proxy; -Lcom/android/okhttp/internal/http/RouteSelector;->nextProxyIndex:I -Lcom/android/okhttp/internal/http/RouteSelector;->postponedRoutes:Ljava/util/List; -Lcom/android/okhttp/internal/http/RouteSelector;->proxies:Ljava/util/List; -Lcom/android/okhttp/internal/http/RouteSelector;->resetNextInetSocketAddress(Ljava/net/Proxy;)V -Lcom/android/okhttp/internal/http/RouteSelector;->resetNextProxy(Lcom/android/okhttp/HttpUrl;Ljava/net/Proxy;)V -Lcom/android/okhttp/internal/http/RouteSelector;->routeDatabase:Lcom/android/okhttp/internal/RouteDatabase; -Lcom/android/okhttp/internal/http/StreamAllocation;-><init>(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/Address;)V -Lcom/android/okhttp/internal/http/StreamAllocation;->acquire(Lcom/android/okhttp/internal/io/RealConnection;)V -Lcom/android/okhttp/internal/http/StreamAllocation;->address:Lcom/android/okhttp/Address; -Lcom/android/okhttp/internal/http/StreamAllocation;->cancel()V -Lcom/android/okhttp/internal/http/StreamAllocation;->canceled:Z -Lcom/android/okhttp/internal/http/StreamAllocation;->connection()Lcom/android/okhttp/internal/io/RealConnection; -Lcom/android/okhttp/internal/http/StreamAllocation;->connection:Lcom/android/okhttp/internal/io/RealConnection; -Lcom/android/okhttp/internal/http/StreamAllocation;->connectionFailed()V -Lcom/android/okhttp/internal/http/StreamAllocation;->connectionFailed(Ljava/io/IOException;)V -Lcom/android/okhttp/internal/http/StreamAllocation;->connectionPool:Lcom/android/okhttp/ConnectionPool; -Lcom/android/okhttp/internal/http/StreamAllocation;->deallocate(ZZZ)V -Lcom/android/okhttp/internal/http/StreamAllocation;->findConnection(IIIZ)Lcom/android/okhttp/internal/io/RealConnection; -Lcom/android/okhttp/internal/http/StreamAllocation;->findHealthyConnection(IIIZZ)Lcom/android/okhttp/internal/io/RealConnection; -Lcom/android/okhttp/internal/http/StreamAllocation;->isRecoverable(Lcom/android/okhttp/internal/http/RouteException;)Z -Lcom/android/okhttp/internal/http/StreamAllocation;->isRecoverable(Ljava/io/IOException;)Z -Lcom/android/okhttp/internal/http/StreamAllocation;->newStream(IIIZZ)Lcom/android/okhttp/internal/http/HttpStream; -Lcom/android/okhttp/internal/http/StreamAllocation;->noNewStreams()V -Lcom/android/okhttp/internal/http/StreamAllocation;->recover(Lcom/android/okhttp/internal/http/RouteException;)Z -Lcom/android/okhttp/internal/http/StreamAllocation;->recover(Ljava/io/IOException;Lcom/android/okhttp/okio/Sink;)Z -Lcom/android/okhttp/internal/http/StreamAllocation;->release()V -Lcom/android/okhttp/internal/http/StreamAllocation;->release(Lcom/android/okhttp/internal/io/RealConnection;)V -Lcom/android/okhttp/internal/http/StreamAllocation;->released:Z -Lcom/android/okhttp/internal/http/StreamAllocation;->routeDatabase()Lcom/android/okhttp/internal/RouteDatabase; -Lcom/android/okhttp/internal/http/StreamAllocation;->routeSelector:Lcom/android/okhttp/internal/http/RouteSelector; -Lcom/android/okhttp/internal/http/StreamAllocation;->stream()Lcom/android/okhttp/internal/http/HttpStream; -Lcom/android/okhttp/internal/http/StreamAllocation;->stream:Lcom/android/okhttp/internal/http/HttpStream; -Lcom/android/okhttp/internal/http/StreamAllocation;->streamFinished(Lcom/android/okhttp/internal/http/HttpStream;)V -Lcom/android/okhttp/MediaType;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -Lcom/android/okhttp/MediaType;->charset()Ljava/nio/charset/Charset; -Lcom/android/okhttp/MediaType;->charset(Ljava/nio/charset/Charset;)Ljava/nio/charset/Charset; -Lcom/android/okhttp/MediaType;->charset:Ljava/lang/String; -Lcom/android/okhttp/MediaType;->mediaType:Ljava/lang/String; -Lcom/android/okhttp/MediaType;->PARAMETER:Ljava/util/regex/Pattern; -Lcom/android/okhttp/MediaType;->parse(Ljava/lang/String;)Lcom/android/okhttp/MediaType; -Lcom/android/okhttp/MediaType;->QUOTED:Ljava/lang/String; -Lcom/android/okhttp/MediaType;->subtype()Ljava/lang/String; -Lcom/android/okhttp/MediaType;->subtype:Ljava/lang/String; -Lcom/android/okhttp/MediaType;->TOKEN:Ljava/lang/String; -Lcom/android/okhttp/MediaType;->type()Ljava/lang/String; -Lcom/android/okhttp/MediaType;->type:Ljava/lang/String; -Lcom/android/okhttp/MediaType;->TYPE_SUBTYPE:Ljava/util/regex/Pattern; -Lcom/android/okhttp/OkCacheContainer;->getCache()Lcom/android/okhttp/Cache; -Lcom/android/okhttp/OkHttpClient;-><init>(Lcom/android/okhttp/OkHttpClient;)V -Lcom/android/okhttp/OkHttpClient;->authenticator:Lcom/android/okhttp/Authenticator; -Lcom/android/okhttp/OkHttpClient;->cache:Lcom/android/okhttp/Cache; -Lcom/android/okhttp/OkHttpClient;->cancel(Ljava/lang/Object;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->certificatePinner:Lcom/android/okhttp/CertificatePinner; -Lcom/android/okhttp/OkHttpClient;->connectionSpecs:Ljava/util/List; -Lcom/android/okhttp/OkHttpClient;->connectTimeout:I -Lcom/android/okhttp/OkHttpClient;->cookieHandler:Ljava/net/CookieHandler; -Lcom/android/okhttp/OkHttpClient;->copyWithDefaults()Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->defaultSslSocketFactory:Ljavax/net/ssl/SSLSocketFactory; -Lcom/android/okhttp/OkHttpClient;->DEFAULT_CONNECTION_SPECS:Ljava/util/List; -Lcom/android/okhttp/OkHttpClient;->dispatcher:Lcom/android/okhttp/Dispatcher; -Lcom/android/okhttp/OkHttpClient;->followRedirects:Z -Lcom/android/okhttp/OkHttpClient;->followSslRedirects:Z -Lcom/android/okhttp/OkHttpClient;->getAuthenticator()Lcom/android/okhttp/Authenticator; -Lcom/android/okhttp/OkHttpClient;->getCache()Lcom/android/okhttp/Cache; -Lcom/android/okhttp/OkHttpClient;->getCertificatePinner()Lcom/android/okhttp/CertificatePinner; -Lcom/android/okhttp/OkHttpClient;->getConnectionSpecs()Ljava/util/List; -Lcom/android/okhttp/OkHttpClient;->getConnectTimeout()I -Lcom/android/okhttp/OkHttpClient;->getDefaultSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory; -Lcom/android/okhttp/OkHttpClient;->getDispatcher()Lcom/android/okhttp/Dispatcher; -Lcom/android/okhttp/OkHttpClient;->getDns()Lcom/android/okhttp/Dns; -Lcom/android/okhttp/OkHttpClient;->getFollowRedirects()Z -Lcom/android/okhttp/OkHttpClient;->getFollowSslRedirects()Z -Lcom/android/okhttp/OkHttpClient;->getProtocols()Ljava/util/List; -Lcom/android/okhttp/OkHttpClient;->getReadTimeout()I -Lcom/android/okhttp/OkHttpClient;->getRetryOnConnectionFailure()Z -Lcom/android/okhttp/OkHttpClient;->getSocketFactory()Ljavax/net/SocketFactory; -Lcom/android/okhttp/OkHttpClient;->getWriteTimeout()I -Lcom/android/okhttp/OkHttpClient;->hostnameVerifier:Ljavax/net/ssl/HostnameVerifier; -Lcom/android/okhttp/OkHttpClient;->interceptors()Ljava/util/List; -Lcom/android/okhttp/OkHttpClient;->interceptors:Ljava/util/List; -Lcom/android/okhttp/OkHttpClient;->internalCache()Lcom/android/okhttp/internal/InternalCache; -Lcom/android/okhttp/OkHttpClient;->internalCache:Lcom/android/okhttp/internal/InternalCache; -Lcom/android/okhttp/OkHttpClient;->networkInterceptors()Ljava/util/List; -Lcom/android/okhttp/OkHttpClient;->networkInterceptors:Ljava/util/List; -Lcom/android/okhttp/OkHttpClient;->newCall(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Call; -Lcom/android/okhttp/OkHttpClient;->protocols:Ljava/util/List; -Lcom/android/okhttp/OkHttpClient;->proxy:Ljava/net/Proxy; -Lcom/android/okhttp/OkHttpClient;->proxySelector:Ljava/net/ProxySelector; -Lcom/android/okhttp/OkHttpClient;->readTimeout:I -Lcom/android/okhttp/OkHttpClient;->retryOnConnectionFailure:Z -Lcom/android/okhttp/OkHttpClient;->routeDatabase()Lcom/android/okhttp/internal/RouteDatabase; -Lcom/android/okhttp/OkHttpClient;->routeDatabase:Lcom/android/okhttp/internal/RouteDatabase; -Lcom/android/okhttp/OkHttpClient;->setAuthenticator(Lcom/android/okhttp/Authenticator;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setCache(Lcom/android/okhttp/Cache;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setCertificatePinner(Lcom/android/okhttp/CertificatePinner;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setConnectionPool(Lcom/android/okhttp/ConnectionPool;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setConnectionSpecs(Ljava/util/List;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setConnectTimeout(JLjava/util/concurrent/TimeUnit;)V -Lcom/android/okhttp/OkHttpClient;->setCookieHandler(Ljava/net/CookieHandler;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setDispatcher(Lcom/android/okhttp/Dispatcher;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setDns(Lcom/android/okhttp/Dns;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setFollowRedirects(Z)V -Lcom/android/okhttp/OkHttpClient;->setFollowSslRedirects(Z)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setInternalCache(Lcom/android/okhttp/internal/InternalCache;)V -Lcom/android/okhttp/OkHttpClient;->setProxy(Ljava/net/Proxy;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setProxySelector(Ljava/net/ProxySelector;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setReadTimeout(JLjava/util/concurrent/TimeUnit;)V -Lcom/android/okhttp/OkHttpClient;->setSocketFactory(Ljavax/net/SocketFactory;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setSslSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)Lcom/android/okhttp/OkHttpClient; -Lcom/android/okhttp/OkHttpClient;->setWriteTimeout(JLjava/util/concurrent/TimeUnit;)V -Lcom/android/okhttp/OkHttpClient;->socketFactory:Ljavax/net/SocketFactory; -Lcom/android/okhttp/OkHttpClient;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory; -Lcom/android/okhttp/OkHttpClient;->writeTimeout:I -Lcom/android/okhttp/okio/AsyncTimeout$Watchdog;-><init>()V -Lcom/android/okhttp/okio/AsyncTimeout;-><init>()V -Lcom/android/okhttp/okio/AsyncTimeout;->awaitTimeout()Lcom/android/okhttp/okio/AsyncTimeout; -Lcom/android/okhttp/okio/AsyncTimeout;->cancelScheduledTimeout(Lcom/android/okhttp/okio/AsyncTimeout;)Z -Lcom/android/okhttp/okio/AsyncTimeout;->enter()V -Lcom/android/okhttp/okio/AsyncTimeout;->exit()Z -Lcom/android/okhttp/okio/AsyncTimeout;->exit(Ljava/io/IOException;)Ljava/io/IOException; -Lcom/android/okhttp/okio/AsyncTimeout;->exit(Z)V -Lcom/android/okhttp/okio/AsyncTimeout;->head:Lcom/android/okhttp/okio/AsyncTimeout; -Lcom/android/okhttp/okio/AsyncTimeout;->inQueue:Z -Lcom/android/okhttp/okio/AsyncTimeout;->newTimeoutException(Ljava/io/IOException;)Ljava/io/IOException; -Lcom/android/okhttp/okio/AsyncTimeout;->next:Lcom/android/okhttp/okio/AsyncTimeout; -Lcom/android/okhttp/okio/AsyncTimeout;->remainingNanos(J)J -Lcom/android/okhttp/okio/AsyncTimeout;->scheduleTimeout(Lcom/android/okhttp/okio/AsyncTimeout;JZ)V -Lcom/android/okhttp/okio/AsyncTimeout;->sink(Lcom/android/okhttp/okio/Sink;)Lcom/android/okhttp/okio/Sink; -Lcom/android/okhttp/okio/AsyncTimeout;->source(Lcom/android/okhttp/okio/Source;)Lcom/android/okhttp/okio/Source; -Lcom/android/okhttp/okio/AsyncTimeout;->timedOut()V -Lcom/android/okhttp/okio/AsyncTimeout;->timeoutAt:J -Lcom/android/okhttp/okio/Buffer;-><init>()V -Lcom/android/okhttp/okio/Buffer;->buffer()Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->clear()V -Lcom/android/okhttp/okio/Buffer;->completeSegmentByteCount()J -Lcom/android/okhttp/okio/Buffer;->copyTo(Lcom/android/okhttp/okio/Buffer;JJ)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->copyTo(Ljava/io/OutputStream;)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->copyTo(Ljava/io/OutputStream;JJ)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->DIGITS:[B -Lcom/android/okhttp/okio/Buffer;->emit()Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->emitCompleteSegments()Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->emitCompleteSegments()Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->exhausted()Z -Lcom/android/okhttp/okio/Buffer;->getByte(J)B -Lcom/android/okhttp/okio/Buffer;->head:Lcom/android/okhttp/okio/Segment; -Lcom/android/okhttp/okio/Buffer;->indexOf(B)J -Lcom/android/okhttp/okio/Buffer;->indexOf(BJ)J -Lcom/android/okhttp/okio/Buffer;->indexOf(Lcom/android/okhttp/okio/ByteString;)J -Lcom/android/okhttp/okio/Buffer;->indexOf(Lcom/android/okhttp/okio/ByteString;J)J -Lcom/android/okhttp/okio/Buffer;->indexOfElement(Lcom/android/okhttp/okio/ByteString;)J -Lcom/android/okhttp/okio/Buffer;->indexOfElement(Lcom/android/okhttp/okio/ByteString;J)J -Lcom/android/okhttp/okio/Buffer;->inputStream()Ljava/io/InputStream; -Lcom/android/okhttp/okio/Buffer;->outputStream()Ljava/io/OutputStream; -Lcom/android/okhttp/okio/Buffer;->rangeEquals(JLcom/android/okhttp/okio/ByteString;)Z -Lcom/android/okhttp/okio/Buffer;->read(Lcom/android/okhttp/okio/Buffer;J)J -Lcom/android/okhttp/okio/Buffer;->read([B)I -Lcom/android/okhttp/okio/Buffer;->read([BII)I -Lcom/android/okhttp/okio/Buffer;->readAll(Lcom/android/okhttp/okio/Sink;)J -Lcom/android/okhttp/okio/Buffer;->readByte()B -Lcom/android/okhttp/okio/Buffer;->readByteArray()[B -Lcom/android/okhttp/okio/Buffer;->readByteArray(J)[B -Lcom/android/okhttp/okio/Buffer;->readByteString()Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/Buffer;->readByteString(J)Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/Buffer;->readDecimalLong()J -Lcom/android/okhttp/okio/Buffer;->readFrom(Ljava/io/InputStream;)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->readFrom(Ljava/io/InputStream;J)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->readFrom(Ljava/io/InputStream;JZ)V -Lcom/android/okhttp/okio/Buffer;->readFully(Lcom/android/okhttp/okio/Buffer;J)V -Lcom/android/okhttp/okio/Buffer;->readFully([B)V -Lcom/android/okhttp/okio/Buffer;->readHexadecimalUnsignedLong()J -Lcom/android/okhttp/okio/Buffer;->readInt()I -Lcom/android/okhttp/okio/Buffer;->readIntLe()I -Lcom/android/okhttp/okio/Buffer;->readLong()J -Lcom/android/okhttp/okio/Buffer;->readLongLe()J -Lcom/android/okhttp/okio/Buffer;->readShort()S -Lcom/android/okhttp/okio/Buffer;->readShortLe()S -Lcom/android/okhttp/okio/Buffer;->readString(JLjava/nio/charset/Charset;)Ljava/lang/String; -Lcom/android/okhttp/okio/Buffer;->readString(Ljava/nio/charset/Charset;)Ljava/lang/String; -Lcom/android/okhttp/okio/Buffer;->readUtf8()Ljava/lang/String; -Lcom/android/okhttp/okio/Buffer;->readUtf8(J)Ljava/lang/String; -Lcom/android/okhttp/okio/Buffer;->readUtf8CodePoint()I -Lcom/android/okhttp/okio/Buffer;->readUtf8Line()Ljava/lang/String; -Lcom/android/okhttp/okio/Buffer;->readUtf8Line(J)Ljava/lang/String; -Lcom/android/okhttp/okio/Buffer;->readUtf8LineStrict()Ljava/lang/String; -Lcom/android/okhttp/okio/Buffer;->REPLACEMENT_CHARACTER:I -Lcom/android/okhttp/okio/Buffer;->request(J)Z -Lcom/android/okhttp/okio/Buffer;->require(J)V -Lcom/android/okhttp/okio/Buffer;->segmentSizes()Ljava/util/List; -Lcom/android/okhttp/okio/Buffer;->size()J -Lcom/android/okhttp/okio/Buffer;->size:J -Lcom/android/okhttp/okio/Buffer;->skip(J)V -Lcom/android/okhttp/okio/Buffer;->snapshot()Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/Buffer;->snapshot(I)Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/Buffer;->timeout()Lcom/android/okhttp/okio/Timeout; -Lcom/android/okhttp/okio/Buffer;->writableSegment(I)Lcom/android/okhttp/okio/Segment; -Lcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/Buffer;J)V -Lcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/ByteString;)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/ByteString;)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/Source;J)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->write([B)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->write([B)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->write([BII)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->write([BII)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeAll(Lcom/android/okhttp/okio/Source;)J -Lcom/android/okhttp/okio/Buffer;->writeByte(I)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeByte(I)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeDecimalLong(J)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeDecimalLong(J)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeInt(I)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeInt(I)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeIntLe(I)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeIntLe(I)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeLong(J)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeLong(J)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeLongLe(J)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeLongLe(J)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeShort(I)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeShort(I)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeShortLe(I)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeShortLe(I)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeString(Ljava/lang/String;IILjava/nio/charset/Charset;)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeString(Ljava/lang/String;IILjava/nio/charset/Charset;)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeString(Ljava/lang/String;Ljava/nio/charset/Charset;)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeString(Ljava/lang/String;Ljava/nio/charset/Charset;)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeTo(Ljava/io/OutputStream;)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeTo(Ljava/io/OutputStream;J)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/Buffer;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/Buffer;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->buffer()Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/BufferedSink;->emit()Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->emitCompleteSegments()Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->outputStream()Ljava/io/OutputStream; -Lcom/android/okhttp/okio/BufferedSink;->write(Lcom/android/okhttp/okio/ByteString;)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->write(Lcom/android/okhttp/okio/Source;J)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->write([B)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->write([BII)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeAll(Lcom/android/okhttp/okio/Source;)J -Lcom/android/okhttp/okio/BufferedSink;->writeByte(I)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeDecimalLong(J)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeInt(I)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeIntLe(I)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeLong(J)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeLongLe(J)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeShort(I)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeShortLe(I)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeString(Ljava/lang/String;IILjava/nio/charset/Charset;)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeString(Ljava/lang/String;Ljava/nio/charset/Charset;)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSink;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/BufferedSink; -Lcom/android/okhttp/okio/BufferedSource;->buffer()Lcom/android/okhttp/okio/Buffer; -Lcom/android/okhttp/okio/BufferedSource;->exhausted()Z -Lcom/android/okhttp/okio/BufferedSource;->indexOf(B)J -Lcom/android/okhttp/okio/BufferedSource;->indexOf(BJ)J -Lcom/android/okhttp/okio/BufferedSource;->indexOf(Lcom/android/okhttp/okio/ByteString;)J -Lcom/android/okhttp/okio/BufferedSource;->indexOf(Lcom/android/okhttp/okio/ByteString;J)J -Lcom/android/okhttp/okio/BufferedSource;->indexOfElement(Lcom/android/okhttp/okio/ByteString;)J -Lcom/android/okhttp/okio/BufferedSource;->indexOfElement(Lcom/android/okhttp/okio/ByteString;J)J -Lcom/android/okhttp/okio/BufferedSource;->inputStream()Ljava/io/InputStream; -Lcom/android/okhttp/okio/BufferedSource;->read([B)I -Lcom/android/okhttp/okio/BufferedSource;->read([BII)I -Lcom/android/okhttp/okio/BufferedSource;->readAll(Lcom/android/okhttp/okio/Sink;)J -Lcom/android/okhttp/okio/BufferedSource;->readByte()B -Lcom/android/okhttp/okio/BufferedSource;->readByteArray()[B -Lcom/android/okhttp/okio/BufferedSource;->readByteArray(J)[B -Lcom/android/okhttp/okio/BufferedSource;->readByteString()Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/BufferedSource;->readByteString(J)Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/BufferedSource;->readDecimalLong()J -Lcom/android/okhttp/okio/BufferedSource;->readFully(Lcom/android/okhttp/okio/Buffer;J)V -Lcom/android/okhttp/okio/BufferedSource;->readFully([B)V -Lcom/android/okhttp/okio/BufferedSource;->readHexadecimalUnsignedLong()J -Lcom/android/okhttp/okio/BufferedSource;->readInt()I -Lcom/android/okhttp/okio/BufferedSource;->readIntLe()I -Lcom/android/okhttp/okio/BufferedSource;->readLong()J -Lcom/android/okhttp/okio/BufferedSource;->readLongLe()J -Lcom/android/okhttp/okio/BufferedSource;->readShort()S -Lcom/android/okhttp/okio/BufferedSource;->readShortLe()S -Lcom/android/okhttp/okio/BufferedSource;->readString(JLjava/nio/charset/Charset;)Ljava/lang/String; -Lcom/android/okhttp/okio/BufferedSource;->readString(Ljava/nio/charset/Charset;)Ljava/lang/String; -Lcom/android/okhttp/okio/BufferedSource;->readUtf8()Ljava/lang/String; -Lcom/android/okhttp/okio/BufferedSource;->readUtf8(J)Ljava/lang/String; -Lcom/android/okhttp/okio/BufferedSource;->readUtf8CodePoint()I -Lcom/android/okhttp/okio/BufferedSource;->readUtf8Line()Ljava/lang/String; -Lcom/android/okhttp/okio/BufferedSource;->readUtf8LineStrict()Ljava/lang/String; -Lcom/android/okhttp/okio/BufferedSource;->request(J)Z -Lcom/android/okhttp/okio/BufferedSource;->require(J)V -Lcom/android/okhttp/okio/BufferedSource;->skip(J)V -Lcom/android/okhttp/okio/ByteString;-><init>([B)V -Lcom/android/okhttp/okio/ByteString;->base64()Ljava/lang/String; -Lcom/android/okhttp/okio/ByteString;->base64Url()Ljava/lang/String; -Lcom/android/okhttp/okio/ByteString;->compareTo(Lcom/android/okhttp/okio/ByteString;)I -Lcom/android/okhttp/okio/ByteString;->compareTo(Ljava/lang/Object;)I -Lcom/android/okhttp/okio/ByteString;->data:[B -Lcom/android/okhttp/okio/ByteString;->decodeBase64(Ljava/lang/String;)Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/ByteString;->decodeHex(Ljava/lang/String;)Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/ByteString;->decodeHexDigit(C)I -Lcom/android/okhttp/okio/ByteString;->digest(Ljava/lang/String;)Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/ByteString;->EMPTY:Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/ByteString;->encodeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/ByteString;->getByte(I)B -Lcom/android/okhttp/okio/ByteString;->hashCode:I -Lcom/android/okhttp/okio/ByteString;->hex()Ljava/lang/String; -Lcom/android/okhttp/okio/ByteString;->HEX_DIGITS:[C -Lcom/android/okhttp/okio/ByteString;->md5()Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/ByteString;->of([BII)Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/ByteString;->rangeEquals(ILcom/android/okhttp/okio/ByteString;II)Z -Lcom/android/okhttp/okio/ByteString;->rangeEquals(I[BII)Z -Lcom/android/okhttp/okio/ByteString;->read(Ljava/io/InputStream;I)Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/ByteString;->sha256()Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/ByteString;->size()I -Lcom/android/okhttp/okio/ByteString;->substring(I)Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/ByteString;->substring(II)Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/ByteString;->toAsciiLowercase()Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/ByteString;->toAsciiUppercase()Lcom/android/okhttp/okio/ByteString; -Lcom/android/okhttp/okio/ByteString;->toByteArray()[B -Lcom/android/okhttp/okio/ByteString;->utf8()Ljava/lang/String; -Lcom/android/okhttp/okio/ByteString;->utf8:Ljava/lang/String; -Lcom/android/okhttp/okio/ByteString;->write(Lcom/android/okhttp/okio/Buffer;)V -Lcom/android/okhttp/okio/ByteString;->write(Ljava/io/OutputStream;)V -Lcom/android/okhttp/okio/Segment;-><init>()V -Lcom/android/okhttp/okio/Segment;-><init>(Lcom/android/okhttp/okio/Segment;)V -Lcom/android/okhttp/okio/Segment;-><init>([BII)V -Lcom/android/okhttp/okio/Segment;->compact()V -Lcom/android/okhttp/okio/Segment;->data:[B -Lcom/android/okhttp/okio/Segment;->limit:I -Lcom/android/okhttp/okio/Segment;->next:Lcom/android/okhttp/okio/Segment; -Lcom/android/okhttp/okio/Segment;->owner:Z -Lcom/android/okhttp/okio/Segment;->pop()Lcom/android/okhttp/okio/Segment; -Lcom/android/okhttp/okio/Segment;->pos:I -Lcom/android/okhttp/okio/Segment;->prev:Lcom/android/okhttp/okio/Segment; -Lcom/android/okhttp/okio/Segment;->push(Lcom/android/okhttp/okio/Segment;)Lcom/android/okhttp/okio/Segment; -Lcom/android/okhttp/okio/Segment;->shared:Z -Lcom/android/okhttp/okio/Segment;->SIZE:I -Lcom/android/okhttp/okio/Segment;->split(I)Lcom/android/okhttp/okio/Segment; -Lcom/android/okhttp/okio/Segment;->writeTo(Lcom/android/okhttp/okio/Segment;I)V -Lcom/android/okhttp/okio/Sink;->timeout()Lcom/android/okhttp/okio/Timeout; -Lcom/android/okhttp/okio/Sink;->write(Lcom/android/okhttp/okio/Buffer;J)V -Lcom/android/okhttp/okio/Source;->read(Lcom/android/okhttp/okio/Buffer;J)J -Lcom/android/okhttp/okio/Source;->timeout()Lcom/android/okhttp/okio/Timeout; -Lcom/android/okhttp/okio/Timeout;-><init>()V -Lcom/android/okhttp/okio/Timeout;->clearDeadline()Lcom/android/okhttp/okio/Timeout; -Lcom/android/okhttp/okio/Timeout;->clearTimeout()Lcom/android/okhttp/okio/Timeout; -Lcom/android/okhttp/okio/Timeout;->deadline(JLjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/okio/Timeout; -Lcom/android/okhttp/okio/Timeout;->deadlineNanoTime()J -Lcom/android/okhttp/okio/Timeout;->deadlineNanoTime(J)Lcom/android/okhttp/okio/Timeout; -Lcom/android/okhttp/okio/Timeout;->deadlineNanoTime:J -Lcom/android/okhttp/okio/Timeout;->hasDeadline()Z -Lcom/android/okhttp/okio/Timeout;->hasDeadline:Z -Lcom/android/okhttp/okio/Timeout;->NONE:Lcom/android/okhttp/okio/Timeout; -Lcom/android/okhttp/okio/Timeout;->throwIfReached()V -Lcom/android/okhttp/okio/Timeout;->timeout(JLjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/okio/Timeout; -Lcom/android/okhttp/okio/Timeout;->timeoutNanos()J -Lcom/android/okhttp/okio/Timeout;->timeoutNanos:J -Lcom/android/okhttp/Protocol;->get(Ljava/lang/String;)Lcom/android/okhttp/Protocol; -Lcom/android/okhttp/Protocol;->HTTP_1_0:Lcom/android/okhttp/Protocol; -Lcom/android/okhttp/Protocol;->HTTP_1_1:Lcom/android/okhttp/Protocol; -Lcom/android/okhttp/Protocol;->HTTP_2:Lcom/android/okhttp/Protocol; -Lcom/android/okhttp/Protocol;->protocol:Ljava/lang/String; -Lcom/android/okhttp/Protocol;->SPDY_3:Lcom/android/okhttp/Protocol; -Lcom/android/okhttp/Protocol;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/Protocol; -Lcom/android/okhttp/Protocol;->values()[Lcom/android/okhttp/Protocol; -Lcom/android/okhttp/Request$Builder;-><init>()V -Lcom/android/okhttp/Request$Builder;-><init>(Lcom/android/okhttp/Request;)V -Lcom/android/okhttp/Request$Builder;->addHeader(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->body:Lcom/android/okhttp/RequestBody; -Lcom/android/okhttp/Request$Builder;->build()Lcom/android/okhttp/Request; -Lcom/android/okhttp/Request$Builder;->cacheControl(Lcom/android/okhttp/CacheControl;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->delete()Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->delete(Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->get()Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->head()Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->header(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->headers(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->headers:Lcom/android/okhttp/Headers$Builder; -Lcom/android/okhttp/Request$Builder;->method(Ljava/lang/String;Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->method:Ljava/lang/String; -Lcom/android/okhttp/Request$Builder;->patch(Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->post(Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->put(Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->removeHeader(Ljava/lang/String;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->tag(Ljava/lang/Object;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->tag:Ljava/lang/Object; -Lcom/android/okhttp/Request$Builder;->url(Lcom/android/okhttp/HttpUrl;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->url(Ljava/lang/String;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->url(Ljava/net/URL;)Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request$Builder;->url:Lcom/android/okhttp/HttpUrl; -Lcom/android/okhttp/Request;-><init>(Lcom/android/okhttp/Request$Builder;)V -Lcom/android/okhttp/Request;->body()Lcom/android/okhttp/RequestBody; -Lcom/android/okhttp/Request;->body:Lcom/android/okhttp/RequestBody; -Lcom/android/okhttp/Request;->cacheControl()Lcom/android/okhttp/CacheControl; -Lcom/android/okhttp/Request;->cacheControl:Lcom/android/okhttp/CacheControl; -Lcom/android/okhttp/Request;->header(Ljava/lang/String;)Ljava/lang/String; -Lcom/android/okhttp/Request;->headers()Lcom/android/okhttp/Headers; -Lcom/android/okhttp/Request;->headers(Ljava/lang/String;)Ljava/util/List; -Lcom/android/okhttp/Request;->httpUrl()Lcom/android/okhttp/HttpUrl; -Lcom/android/okhttp/Request;->isHttps()Z -Lcom/android/okhttp/Request;->javaNetUri:Ljava/net/URI; -Lcom/android/okhttp/Request;->javaNetUrl:Ljava/net/URL; -Lcom/android/okhttp/Request;->method()Ljava/lang/String; -Lcom/android/okhttp/Request;->newBuilder()Lcom/android/okhttp/Request$Builder; -Lcom/android/okhttp/Request;->tag()Ljava/lang/Object; -Lcom/android/okhttp/Request;->tag:Ljava/lang/Object; -Lcom/android/okhttp/Request;->uri()Ljava/net/URI; -Lcom/android/okhttp/Request;->url()Ljava/net/URL; -Lcom/android/okhttp/Request;->urlString()Ljava/lang/String; -Lcom/android/okhttp/RequestBody;-><init>()V -Lcom/android/okhttp/RequestBody;->contentLength()J -Lcom/android/okhttp/RequestBody;->contentType()Lcom/android/okhttp/MediaType; -Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;Lcom/android/okhttp/okio/ByteString;)Lcom/android/okhttp/RequestBody; -Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;Ljava/io/File;)Lcom/android/okhttp/RequestBody; -Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;Ljava/lang/String;)Lcom/android/okhttp/RequestBody; -Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;[B)Lcom/android/okhttp/RequestBody; -Lcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;[BII)Lcom/android/okhttp/RequestBody; -Lcom/android/okhttp/RequestBody;->writeTo(Lcom/android/okhttp/okio/BufferedSink;)V -Lcom/android/okhttp/Response$Builder;-><init>()V -Lcom/android/okhttp/Response$Builder;-><init>(Lcom/android/okhttp/Response;)V -Lcom/android/okhttp/Response$Builder;->addHeader(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response$Builder;->body(Lcom/android/okhttp/ResponseBody;)Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response$Builder;->body:Lcom/android/okhttp/ResponseBody; -Lcom/android/okhttp/Response$Builder;->build()Lcom/android/okhttp/Response; -Lcom/android/okhttp/Response$Builder;->cacheResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response$Builder;->cacheResponse:Lcom/android/okhttp/Response; -Lcom/android/okhttp/Response$Builder;->checkPriorResponse(Lcom/android/okhttp/Response;)V -Lcom/android/okhttp/Response$Builder;->checkSupportResponse(Ljava/lang/String;Lcom/android/okhttp/Response;)V -Lcom/android/okhttp/Response$Builder;->code(I)Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response$Builder;->code:I -Lcom/android/okhttp/Response$Builder;->handshake(Lcom/android/okhttp/Handshake;)Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response$Builder;->handshake:Lcom/android/okhttp/Handshake; -Lcom/android/okhttp/Response$Builder;->header(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response$Builder;->headers(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response$Builder;->headers:Lcom/android/okhttp/Headers$Builder; -Lcom/android/okhttp/Response$Builder;->message(Ljava/lang/String;)Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response$Builder;->message:Ljava/lang/String; -Lcom/android/okhttp/Response$Builder;->networkResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response$Builder;->networkResponse:Lcom/android/okhttp/Response; -Lcom/android/okhttp/Response$Builder;->priorResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response$Builder;->priorResponse:Lcom/android/okhttp/Response; -Lcom/android/okhttp/Response$Builder;->protocol(Lcom/android/okhttp/Protocol;)Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response$Builder;->protocol:Lcom/android/okhttp/Protocol; -Lcom/android/okhttp/Response$Builder;->removeHeader(Ljava/lang/String;)Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response$Builder;->request(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response$Builder;->request:Lcom/android/okhttp/Request; -Lcom/android/okhttp/Response;-><init>(Lcom/android/okhttp/Response$Builder;)V -Lcom/android/okhttp/Response;->body()Lcom/android/okhttp/ResponseBody; -Lcom/android/okhttp/Response;->body:Lcom/android/okhttp/ResponseBody; -Lcom/android/okhttp/Response;->cacheControl()Lcom/android/okhttp/CacheControl; -Lcom/android/okhttp/Response;->cacheControl:Lcom/android/okhttp/CacheControl; -Lcom/android/okhttp/Response;->cacheResponse()Lcom/android/okhttp/Response; -Lcom/android/okhttp/Response;->cacheResponse:Lcom/android/okhttp/Response; -Lcom/android/okhttp/Response;->challenges()Ljava/util/List; -Lcom/android/okhttp/Response;->code()I -Lcom/android/okhttp/Response;->handshake()Lcom/android/okhttp/Handshake; -Lcom/android/okhttp/Response;->handshake:Lcom/android/okhttp/Handshake; -Lcom/android/okhttp/Response;->header(Ljava/lang/String;)Ljava/lang/String; -Lcom/android/okhttp/Response;->header(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Lcom/android/okhttp/Response;->headers()Lcom/android/okhttp/Headers; -Lcom/android/okhttp/Response;->headers(Ljava/lang/String;)Ljava/util/List; -Lcom/android/okhttp/Response;->isRedirect()Z -Lcom/android/okhttp/Response;->isSuccessful()Z -Lcom/android/okhttp/Response;->message()Ljava/lang/String; -Lcom/android/okhttp/Response;->networkResponse()Lcom/android/okhttp/Response; -Lcom/android/okhttp/Response;->newBuilder()Lcom/android/okhttp/Response$Builder; -Lcom/android/okhttp/Response;->priorResponse()Lcom/android/okhttp/Response; -Lcom/android/okhttp/Response;->priorResponse:Lcom/android/okhttp/Response; -Lcom/android/okhttp/Response;->protocol()Lcom/android/okhttp/Protocol; -Lcom/android/okhttp/Response;->request()Lcom/android/okhttp/Request; -Lcom/android/okhttp/Response;->request:Lcom/android/okhttp/Request; -Lcom/android/okhttp/ResponseBody;-><init>()V -Lcom/android/okhttp/ResponseBody;->bytes()[B -Lcom/android/okhttp/ResponseBody;->byteStream()Ljava/io/InputStream; -Lcom/android/okhttp/ResponseBody;->charset()Ljava/nio/charset/Charset; -Lcom/android/okhttp/ResponseBody;->charStream()Ljava/io/Reader; -Lcom/android/okhttp/ResponseBody;->contentLength()J -Lcom/android/okhttp/ResponseBody;->contentType()Lcom/android/okhttp/MediaType; -Lcom/android/okhttp/ResponseBody;->create(Lcom/android/okhttp/MediaType;JLcom/android/okhttp/okio/BufferedSource;)Lcom/android/okhttp/ResponseBody; -Lcom/android/okhttp/ResponseBody;->create(Lcom/android/okhttp/MediaType;Ljava/lang/String;)Lcom/android/okhttp/ResponseBody; -Lcom/android/okhttp/ResponseBody;->create(Lcom/android/okhttp/MediaType;[B)Lcom/android/okhttp/ResponseBody; -Lcom/android/okhttp/ResponseBody;->reader:Ljava/io/Reader; -Lcom/android/okhttp/ResponseBody;->source()Lcom/android/okhttp/okio/BufferedSource; -Lcom/android/okhttp/ResponseBody;->string()Ljava/lang/String; -Lcom/android/okhttp/Route;-><init>(Lcom/android/okhttp/Address;Ljava/net/Proxy;Ljava/net/InetSocketAddress;)V -Lcom/android/okhttp/Route;->address:Lcom/android/okhttp/Address; -Lcom/android/okhttp/Route;->getAddress()Lcom/android/okhttp/Address; -Lcom/android/okhttp/Route;->getProxy()Ljava/net/Proxy; -Lcom/android/okhttp/Route;->getSocketAddress()Ljava/net/InetSocketAddress; -Lcom/android/okhttp/Route;->inetSocketAddress:Ljava/net/InetSocketAddress; -Lcom/android/okhttp/Route;->proxy:Ljava/net/Proxy; -Lcom/android/okhttp/Route;->requiresTunnel()Z -Lcom/android/okhttp/TlsVersion;->forJavaName(Ljava/lang/String;)Lcom/android/okhttp/TlsVersion; -Lcom/android/okhttp/TlsVersion;->javaName()Ljava/lang/String; -Lcom/android/okhttp/TlsVersion;->javaName:Ljava/lang/String; -Lcom/android/okhttp/TlsVersion;->SSL_3_0:Lcom/android/okhttp/TlsVersion; -Lcom/android/okhttp/TlsVersion;->TLS_1_0:Lcom/android/okhttp/TlsVersion; -Lcom/android/okhttp/TlsVersion;->TLS_1_1:Lcom/android/okhttp/TlsVersion; -Lcom/android/okhttp/TlsVersion;->TLS_1_2:Lcom/android/okhttp/TlsVersion; -Lcom/android/okhttp/TlsVersion;->valueOf(Ljava/lang/String;)Lcom/android/okhttp/TlsVersion; -Lcom/android/okhttp/TlsVersion;->values()[Lcom/android/okhttp/TlsVersion; Lcom/android/org/conscrypt/AbstractConscryptSocket;-><init>()V Lcom/android/org/conscrypt/AbstractConscryptSocket;-><init>(Ljava/lang/String;I)V Lcom/android/org/conscrypt/AbstractConscryptSocket;-><init>(Ljava/lang/String;ILjava/net/InetAddress;I)V @@ -102641,9868 +94140,6 @@ Lcom/android/org/conscrypt/TrustManagerImpl;->trustedCertificateStore:Lcom/andro Lcom/android/org/conscrypt/TrustManagerImpl;->TRUST_ANCHOR_COMPARATOR:Lcom/android/org/conscrypt/TrustManagerImpl$TrustAnchorComparator; Lcom/android/org/conscrypt/TrustManagerImpl;->validator:Ljava/security/cert/CertPathValidator; Lcom/android/org/conscrypt/TrustManagerImpl;->verifyChain(Ljava/util/List;Ljava/util/List;Ljava/lang/String;Z[B[B)Ljava/util/List; -Ldalvik/bytecode/OpcodeInfo;-><init>()V -Ldalvik/bytecode/OpcodeInfo;->isInvoke(I)Z -Ldalvik/system/AllocationLimitError;-><init>()V -Ldalvik/system/AllocationLimitError;-><init>(Ljava/lang/String;)V -Ldalvik/system/AnnotatedStackTraceElement;-><init>()V -Ldalvik/system/AnnotatedStackTraceElement;->blockedOn:Ljava/lang/Object; -Ldalvik/system/AnnotatedStackTraceElement;->getBlockedOn()Ljava/lang/Object; -Ldalvik/system/AnnotatedStackTraceElement;->getHeldLocks()[Ljava/lang/Object; -Ldalvik/system/AnnotatedStackTraceElement;->getStackTraceElement()Ljava/lang/StackTraceElement; -Ldalvik/system/AnnotatedStackTraceElement;->heldLocks:[Ljava/lang/Object; -Ldalvik/system/AnnotatedStackTraceElement;->stackTraceElement:Ljava/lang/StackTraceElement; -Ldalvik/system/BaseDexClassLoader$Reporter;->report(Ljava/util/List;Ljava/util/List;)V -Ldalvik/system/BaseDexClassLoader;-><init>([Ljava/nio/ByteBuffer;Ljava/lang/ClassLoader;)V -Ldalvik/system/BaseDexClassLoader;->addNativePath(Ljava/util/Collection;)V -Ldalvik/system/BaseDexClassLoader;->getReporter()Ldalvik/system/BaseDexClassLoader$Reporter; -Ldalvik/system/BaseDexClassLoader;->reportClassLoaderChain()V -Ldalvik/system/BaseDexClassLoader;->reporter:Ldalvik/system/BaseDexClassLoader$Reporter; -Ldalvik/system/BaseDexClassLoader;->setReporter(Ldalvik/system/BaseDexClassLoader$Reporter;)V -Ldalvik/system/BlockGuard$BlockGuardPolicyException;-><init>(II)V -Ldalvik/system/BlockGuard$BlockGuardPolicyException;->getPolicy()I -Ldalvik/system/BlockGuard$BlockGuardPolicyException;->getPolicyViolation()I -Ldalvik/system/BlockGuard$Policy;->getPolicyMask()I -Ldalvik/system/BlockGuard$Policy;->onUnbufferedIO()V -Ldalvik/system/BlockGuard$Policy;->onWriteToDisk()V -Ldalvik/system/BlockGuard;-><init>()V -Ldalvik/system/BlockGuard;->DISALLOW_DISK_READ:I -Ldalvik/system/BlockGuard;->DISALLOW_DISK_WRITE:I -Ldalvik/system/BlockGuard;->DISALLOW_NETWORK:I -Ldalvik/system/BlockGuard;->PASS_RESTRICTIONS_VIA_RPC:I -Ldalvik/system/BlockGuard;->PENALTY_DEATH:I -Ldalvik/system/BlockGuard;->PENALTY_DIALOG:I -Ldalvik/system/BlockGuard;->PENALTY_LOG:I -Ldalvik/system/ClassExt;-><init>()V -Ldalvik/system/ClassExt;->obsoleteDexCaches:[Ljava/lang/Object; -Ldalvik/system/ClassExt;->obsoleteMethods:Ljava/lang/Object; -Ldalvik/system/ClassExt;->originalDexFile:Ljava/lang/Object; -Ldalvik/system/ClassExt;->verifyError:Ljava/lang/Object; -Ldalvik/system/CloseGuard$DefaultReporter;->report(Ljava/lang/String;Ljava/lang/Throwable;)V -Ldalvik/system/CloseGuard$Tracker;->close(Ljava/lang/Throwable;)V -Ldalvik/system/CloseGuard$Tracker;->open(Ljava/lang/Throwable;)V -Ldalvik/system/CloseGuard;->closerNameOrAllocationInfo:Ljava/lang/Object; -Ldalvik/system/CloseGuard;->currentTracker:Ldalvik/system/CloseGuard$Tracker; -Ldalvik/system/CloseGuard;->getReporter()Ldalvik/system/CloseGuard$Reporter; -Ldalvik/system/CloseGuard;->getTracker()Ldalvik/system/CloseGuard$Tracker; -Ldalvik/system/CloseGuard;->isEnabled()Z -Ldalvik/system/CloseGuard;->reporter:Ldalvik/system/CloseGuard$Reporter; -Ldalvik/system/CloseGuard;->setTracker(Ldalvik/system/CloseGuard$Tracker;)V -Ldalvik/system/CloseGuard;->stackAndTrackingEnabled:Z -Ldalvik/system/DalvikLogging;-><init>()V -Ldalvik/system/DalvikLogging;->loggerNameToTag(Ljava/lang/String;)Ljava/lang/String; -Ldalvik/system/DalvikLogHandler;->publish(Ljava/util/logging/Logger;Ljava/lang/String;Ljava/util/logging/Level;Ljava/lang/String;)V -Ldalvik/system/DexFile$DFEnum;-><init>(Ldalvik/system/DexFile;)V -Ldalvik/system/DexFile$DFEnum;->mIndex:I -Ldalvik/system/DexFile$OptimizationInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Ldalvik/system/DexFile$OptimizationInfo;->getReason()Ljava/lang/String; -Ldalvik/system/DexFile$OptimizationInfo;->getStatus()Ljava/lang/String; -Ldalvik/system/DexFile$OptimizationInfo;->reason:Ljava/lang/String; -Ldalvik/system/DexFile$OptimizationInfo;->status:Ljava/lang/String; -Ldalvik/system/DexFile;-><init>(Ljava/io/File;Ljava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)V -Ldalvik/system/DexFile;-><init>(Ljava/lang/String;Ljava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)V -Ldalvik/system/DexFile;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)V -Ldalvik/system/DexFile;-><init>(Ljava/nio/ByteBuffer;)V -Ldalvik/system/DexFile;->closeDexFile(Ljava/lang/Object;)Z -Ldalvik/system/DexFile;->createCookieWithArray([BII)Ljava/lang/Object; -Ldalvik/system/DexFile;->createCookieWithDirectBuffer(Ljava/nio/ByteBuffer;II)Ljava/lang/Object; -Ldalvik/system/DexFile;->defineClass(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/Object;Ldalvik/system/DexFile;Ljava/util/List;)Ljava/lang/Class; -Ldalvik/system/DexFile;->defineClassNative(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/Object;Ldalvik/system/DexFile;)Ljava/lang/Class; -Ldalvik/system/DexFile;->DEX2OAT_FOR_BOOT_IMAGE:I -Ldalvik/system/DexFile;->DEX2OAT_FOR_FILTER:I -Ldalvik/system/DexFile;->DEX2OAT_FOR_RELOCATION:I -Ldalvik/system/DexFile;->DEX2OAT_FROM_SCRATCH:I -Ldalvik/system/DexFile;->getDexFileOptimizationInfo(Ljava/lang/String;Ljava/lang/String;)Ldalvik/system/DexFile$OptimizationInfo; -Ldalvik/system/DexFile;->getDexFileOptimizationStatus(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; -Ldalvik/system/DexFile;->getDexFileOutputPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; -Ldalvik/system/DexFile;->getDexFileStatus(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Ldalvik/system/DexFile;->getDexOptNeeded(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)I -Ldalvik/system/DexFile;->getDexOptNeeded(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)I -Ldalvik/system/DexFile;->getNonProfileGuidedCompilerFilter(Ljava/lang/String;)Ljava/lang/String; -Ldalvik/system/DexFile;->getSafeModeCompilerFilter(Ljava/lang/String;)Ljava/lang/String; -Ldalvik/system/DexFile;->getStaticSizeOfDexFile()J -Ldalvik/system/DexFile;->getStaticSizeOfDexFile(Ljava/lang/Object;)J -Ldalvik/system/DexFile;->isBackedByOatFile(Ljava/lang/Object;)Z -Ldalvik/system/DexFile;->isProfileGuidedCompilerFilter(Ljava/lang/String;)Z -Ldalvik/system/DexFile;->isValidCompilerFilter(Ljava/lang/String;)Z -Ldalvik/system/DexFile;->NO_DEXOPT_NEEDED:I -Ldalvik/system/DexFile;->openInMemoryDexFile(Ljava/nio/ByteBuffer;)Ljava/lang/Object; -Ldalvik/system/DexFile;->setTrusted()V -Ldalvik/system/DexFile;->setTrusted(Ljava/lang/Object;)V -Ldalvik/system/DexPathList$Element;-><init>(Ldalvik/system/DexFile;)V -Ldalvik/system/DexPathList$Element;-><init>(Ljava/io/File;)V -Ldalvik/system/DexPathList$Element;->findClass(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/List;)Ljava/lang/Class; -Ldalvik/system/DexPathList$Element;->findResource(Ljava/lang/String;)Ljava/net/URL; -Ldalvik/system/DexPathList$Element;->getDexPath()Ljava/lang/String; -Ldalvik/system/DexPathList$Element;->initialized:Z -Ldalvik/system/DexPathList$Element;->maybeInit()V -Ldalvik/system/DexPathList$Element;->urlHandler:Llibcore/io/ClassPathURLStreamHandler; -Ldalvik/system/DexPathList$NativeLibraryElement;-><init>(Ljava/io/File;Ljava/lang/String;)V -Ldalvik/system/DexPathList$NativeLibraryElement;->findNativeLibrary(Ljava/lang/String;)Ljava/lang/String; -Ldalvik/system/DexPathList$NativeLibraryElement;->initialized:Z -Ldalvik/system/DexPathList$NativeLibraryElement;->maybeInit()V -Ldalvik/system/DexPathList$NativeLibraryElement;->urlHandler:Llibcore/io/ClassPathURLStreamHandler; -Ldalvik/system/DexPathList$NativeLibraryElement;->zipDir:Ljava/lang/String; -Ldalvik/system/DexPathList;-><init>(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Z)V -Ldalvik/system/DexPathList;-><init>(Ljava/lang/ClassLoader;[Ljava/nio/ByteBuffer;)V -Ldalvik/system/DexPathList;->addDexPath(Ljava/lang/String;Ljava/io/File;Z)V -Ldalvik/system/DexPathList;->DEX_SUFFIX:Ljava/lang/String; -Ldalvik/system/DexPathList;->findClass(Ljava/lang/String;Ljava/util/List;)Ljava/lang/Class; -Ldalvik/system/DexPathList;->findLibrary(Ljava/lang/String;)Ljava/lang/String; -Ldalvik/system/DexPathList;->findResource(Ljava/lang/String;)Ljava/net/URL; -Ldalvik/system/DexPathList;->findResources(Ljava/lang/String;)Ljava/util/Enumeration; -Ldalvik/system/DexPathList;->getDexPaths()Ljava/util/List; -Ldalvik/system/DexPathList;->getNativeLibraryDirectories()Ljava/util/List; -Ldalvik/system/DexPathList;->makeDexElements(Ljava/util/List;Ljava/io/File;Ljava/util/List;Ljava/lang/ClassLoader;Z)[Ldalvik/system/DexPathList$Element; -Ldalvik/system/DexPathList;->optimizedPathFor(Ljava/io/File;Ljava/io/File;)Ljava/lang/String; -Ldalvik/system/DexPathList;->splitDexPath(Ljava/lang/String;)Ljava/util/List; -Ldalvik/system/DexPathList;->zipSeparator:Ljava/lang/String; -Ldalvik/system/EmulatedStackFrame$Range;-><init>(IIII)V -Ldalvik/system/EmulatedStackFrame$Range;->all(Ljava/lang/invoke/MethodType;)Ldalvik/system/EmulatedStackFrame$Range; -Ldalvik/system/EmulatedStackFrame$Range;->numBytes:I -Ldalvik/system/EmulatedStackFrame$Range;->numReferences:I -Ldalvik/system/EmulatedStackFrame$Range;->of(Ljava/lang/invoke/MethodType;II)Ldalvik/system/EmulatedStackFrame$Range; -Ldalvik/system/EmulatedStackFrame$Range;->referencesStart:I -Ldalvik/system/EmulatedStackFrame$Range;->stackFrameStart:I -Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;-><init>()V -Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->argumentIdx:I -Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->attach(Ldalvik/system/EmulatedStackFrame;)Ldalvik/system/EmulatedStackFrame$StackFrameAccessor; -Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->attach(Ldalvik/system/EmulatedStackFrame;III)Ldalvik/system/EmulatedStackFrame$StackFrameAccessor; -Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->checkType(Ljava/lang/Class;)V -Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->copyNext(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V -Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->frame:Ldalvik/system/EmulatedStackFrame; -Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->frameBuf:Ljava/nio/ByteBuffer; -Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->makeReturnValueAccessor()V -Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->numArgs:I -Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->referencesOffset:I -Ldalvik/system/EmulatedStackFrame$StackFrameAccessor;->RETURN_VALUE_IDX:I -Ldalvik/system/EmulatedStackFrame$StackFrameReader;-><init>()V -Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextBoolean()Z -Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextByte()B -Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextChar()C -Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextDouble()D -Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextFloat()F -Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextInt()I -Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextLong()J -Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextReference(Ljava/lang/Class;)Ljava/lang/Object; -Ldalvik/system/EmulatedStackFrame$StackFrameReader;->nextShort()S -Ldalvik/system/EmulatedStackFrame$StackFrameWriter;-><init>()V -Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextBoolean(Z)V -Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextByte(B)V -Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextChar(C)V -Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextDouble(D)V -Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextFloat(F)V -Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextInt(I)V -Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextLong(J)V -Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextReference(Ljava/lang/Object;Ljava/lang/Class;)V -Ldalvik/system/EmulatedStackFrame$StackFrameWriter;->putNextShort(S)V -Ldalvik/system/EmulatedStackFrame;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;[Ljava/lang/Object;[B)V -Ldalvik/system/EmulatedStackFrame;->callsiteType:Ljava/lang/invoke/MethodType; -Ldalvik/system/EmulatedStackFrame;->copyRangeTo(Ldalvik/system/EmulatedStackFrame;Ldalvik/system/EmulatedStackFrame$Range;II)V -Ldalvik/system/EmulatedStackFrame;->copyReturnValueTo(Ldalvik/system/EmulatedStackFrame;)V -Ldalvik/system/EmulatedStackFrame;->create(Ljava/lang/invoke/MethodType;)Ldalvik/system/EmulatedStackFrame; -Ldalvik/system/EmulatedStackFrame;->getCallsiteType()Ljava/lang/invoke/MethodType; -Ldalvik/system/EmulatedStackFrame;->getMethodType()Ljava/lang/invoke/MethodType; -Ldalvik/system/EmulatedStackFrame;->getReference(ILjava/lang/Class;)Ljava/lang/Object; -Ldalvik/system/EmulatedStackFrame;->getSize(Ljava/lang/Class;)I -Ldalvik/system/EmulatedStackFrame;->is64BitPrimitive(Ljava/lang/Class;)Z -Ldalvik/system/EmulatedStackFrame;->references:[Ljava/lang/Object; -Ldalvik/system/EmulatedStackFrame;->setReference(ILjava/lang/Object;)V -Ldalvik/system/EmulatedStackFrame;->setReturnValueTo(Ljava/lang/Object;)V -Ldalvik/system/EmulatedStackFrame;->stackFrame:[B -Ldalvik/system/EmulatedStackFrame;->type:Ljava/lang/invoke/MethodType; -Ldalvik/system/PotentialDeadlockError;-><init>()V -Ldalvik/system/PotentialDeadlockError;-><init>(Ljava/lang/String;)V -Ldalvik/system/SocketTagger;-><init>()V -Ldalvik/system/SocketTagger;->set(Ldalvik/system/SocketTagger;)V -Ldalvik/system/SocketTagger;->tag(Ljava/io/FileDescriptor;)V -Ldalvik/system/SocketTagger;->tag(Ljava/net/DatagramSocket;)V -Ldalvik/system/SocketTagger;->tagger:Ldalvik/system/SocketTagger; -Ldalvik/system/SocketTagger;->untag(Ljava/io/FileDescriptor;)V -Ldalvik/system/SocketTagger;->untag(Ljava/net/DatagramSocket;)V -Ldalvik/system/TemporaryDirectory;-><init>()V -Ldalvik/system/TemporaryDirectory;->setUpDirectory(Ljava/io/File;)V -Ldalvik/system/TemporaryDirectory;->setUpDirectory(Ljava/lang/String;)V -Ldalvik/system/VMDebug;-><init>()V -Ldalvik/system/VMDebug;->attachAgent(Ljava/lang/String;)V -Ldalvik/system/VMDebug;->attachAgent(Ljava/lang/String;Ljava/lang/ClassLoader;)V -Ldalvik/system/VMDebug;->cacheRegisterMap(Ljava/lang/String;)Z -Ldalvik/system/VMDebug;->checkBufferSize(I)I -Ldalvik/system/VMDebug;->countInstancesOfClass(Ljava/lang/Class;Z)J -Ldalvik/system/VMDebug;->countInstancesOfClasses([Ljava/lang/Class;Z)[J -Ldalvik/system/VMDebug;->crash()V -Ldalvik/system/VMDebug;->dumpHprofData(Ljava/lang/String;)V -Ldalvik/system/VMDebug;->dumpHprofData(Ljava/lang/String;I)V -Ldalvik/system/VMDebug;->dumpHprofData(Ljava/lang/String;Ljava/io/FileDescriptor;)V -Ldalvik/system/VMDebug;->dumpHprofDataDdms()V -Ldalvik/system/VMDebug;->getAllocCount(I)I -Ldalvik/system/VMDebug;->getHeapSpaceStats([J)V -Ldalvik/system/VMDebug;->getInstancesOfClasses([Ljava/lang/Class;Z)[[Ljava/lang/Object; -Ldalvik/system/VMDebug;->getInstructionCount([I)V -Ldalvik/system/VMDebug;->getLoadedClassCount()I -Ldalvik/system/VMDebug;->getMethodTracingMode()I -Ldalvik/system/VMDebug;->getRuntimeStat(Ljava/lang/String;)Ljava/lang/String; -Ldalvik/system/VMDebug;->getRuntimeStatInternal(I)Ljava/lang/String; -Ldalvik/system/VMDebug;->getRuntimeStats()Ljava/util/Map; -Ldalvik/system/VMDebug;->getRuntimeStatsInternal()[Ljava/lang/String; -Ldalvik/system/VMDebug;->getVmFeatureList()[Ljava/lang/String; -Ldalvik/system/VMDebug;->infopoint(I)V -Ldalvik/system/VMDebug;->isDebuggingEnabled()Z -Ldalvik/system/VMDebug;->KIND_ALLOCATED_BYTES:I -Ldalvik/system/VMDebug;->KIND_ALLOCATED_OBJECTS:I -Ldalvik/system/VMDebug;->KIND_ALL_COUNTS:I -Ldalvik/system/VMDebug;->KIND_CLASS_INIT_COUNT:I -Ldalvik/system/VMDebug;->KIND_CLASS_INIT_TIME:I -Ldalvik/system/VMDebug;->KIND_EXT_ALLOCATED_BYTES:I -Ldalvik/system/VMDebug;->KIND_EXT_ALLOCATED_OBJECTS:I -Ldalvik/system/VMDebug;->KIND_EXT_FREED_BYTES:I -Ldalvik/system/VMDebug;->KIND_EXT_FREED_OBJECTS:I -Ldalvik/system/VMDebug;->KIND_FREED_BYTES:I -Ldalvik/system/VMDebug;->KIND_FREED_OBJECTS:I -Ldalvik/system/VMDebug;->KIND_GC_INVOCATIONS:I -Ldalvik/system/VMDebug;->KIND_GLOBAL_ALLOCATED_BYTES:I -Ldalvik/system/VMDebug;->KIND_GLOBAL_ALLOCATED_OBJECTS:I -Ldalvik/system/VMDebug;->KIND_GLOBAL_CLASS_INIT_COUNT:I -Ldalvik/system/VMDebug;->KIND_GLOBAL_CLASS_INIT_TIME:I -Ldalvik/system/VMDebug;->KIND_GLOBAL_EXT_ALLOCATED_BYTES:I -Ldalvik/system/VMDebug;->KIND_GLOBAL_EXT_ALLOCATED_OBJECTS:I -Ldalvik/system/VMDebug;->KIND_GLOBAL_EXT_FREED_BYTES:I -Ldalvik/system/VMDebug;->KIND_GLOBAL_EXT_FREED_OBJECTS:I -Ldalvik/system/VMDebug;->KIND_GLOBAL_FREED_BYTES:I -Ldalvik/system/VMDebug;->KIND_GLOBAL_FREED_OBJECTS:I -Ldalvik/system/VMDebug;->KIND_GLOBAL_GC_INVOCATIONS:I -Ldalvik/system/VMDebug;->KIND_THREAD_ALLOCATED_BYTES:I -Ldalvik/system/VMDebug;->KIND_THREAD_ALLOCATED_OBJECTS:I -Ldalvik/system/VMDebug;->KIND_THREAD_CLASS_INIT_COUNT:I -Ldalvik/system/VMDebug;->KIND_THREAD_CLASS_INIT_TIME:I -Ldalvik/system/VMDebug;->KIND_THREAD_EXT_ALLOCATED_BYTES:I -Ldalvik/system/VMDebug;->KIND_THREAD_EXT_ALLOCATED_OBJECTS:I -Ldalvik/system/VMDebug;->KIND_THREAD_EXT_FREED_BYTES:I -Ldalvik/system/VMDebug;->KIND_THREAD_EXT_FREED_OBJECTS:I -Ldalvik/system/VMDebug;->KIND_THREAD_FREED_BYTES:I -Ldalvik/system/VMDebug;->KIND_THREAD_FREED_OBJECTS:I -Ldalvik/system/VMDebug;->KIND_THREAD_GC_INVOCATIONS:I -Ldalvik/system/VMDebug;->lastDebuggerActivity()J -Ldalvik/system/VMDebug;->nativeAttachAgent(Ljava/lang/String;Ljava/lang/ClassLoader;)V -Ldalvik/system/VMDebug;->printLoadedClasses(I)V -Ldalvik/system/VMDebug;->resetAllocCount(I)V -Ldalvik/system/VMDebug;->resetInstructionCount()V -Ldalvik/system/VMDebug;->runtimeStatsMap:Ljava/util/HashMap; -Ldalvik/system/VMDebug;->setAllocationLimit(I)I -Ldalvik/system/VMDebug;->setGlobalAllocationLimit(I)I -Ldalvik/system/VMDebug;->startAllocCounting()V -Ldalvik/system/VMDebug;->startClassPrep()V -Ldalvik/system/VMDebug;->startEmulatorTracing()V -Ldalvik/system/VMDebug;->startGC()V -Ldalvik/system/VMDebug;->startInstructionCounting()V -Ldalvik/system/VMDebug;->startMethodTracing()V -Ldalvik/system/VMDebug;->startMethodTracing(Ljava/lang/String;IIZI)V -Ldalvik/system/VMDebug;->startMethodTracing(Ljava/lang/String;Ljava/io/FileDescriptor;IIZI)V -Ldalvik/system/VMDebug;->startMethodTracing(Ljava/lang/String;Ljava/io/FileDescriptor;IIZIZ)V -Ldalvik/system/VMDebug;->startMethodTracingDdms(IIZI)V -Ldalvik/system/VMDebug;->startMethodTracingDdmsImpl(IIZI)V -Ldalvik/system/VMDebug;->startMethodTracingFd(Ljava/lang/String;IIIZIZ)V -Ldalvik/system/VMDebug;->startMethodTracingFilename(Ljava/lang/String;IIZI)V -Ldalvik/system/VMDebug;->stopAllocCounting()V -Ldalvik/system/VMDebug;->stopEmulatorTracing()V -Ldalvik/system/VMDebug;->stopInstructionCounting()V -Ldalvik/system/VMDebug;->stopMethodTracing()V -Ldalvik/system/VMDebug;->threadCpuTimeNanos()J -Ldalvik/system/VMDebug;->TRACE_COUNT_ALLOCS:I -Ldalvik/system/VMRuntime;-><init>()V -Ldalvik/system/VMRuntime;->ABI_TO_INSTRUCTION_SET_MAP:Ljava/util/Map; -Ldalvik/system/VMRuntime;->bootClassPath()Ljava/lang/String; -Ldalvik/system/VMRuntime;->clampGrowthLimit()V -Ldalvik/system/VMRuntime;->classPath()Ljava/lang/String; -Ldalvik/system/VMRuntime;->concurrentGC()V -Ldalvik/system/VMRuntime;->didPruneDalvikCache()Z -Ldalvik/system/VMRuntime;->disableJitCompilation()V -Ldalvik/system/VMRuntime;->getTargetHeapUtilization()F -Ldalvik/system/VMRuntime;->getTargetSdkVersion()I -Ldalvik/system/VMRuntime;->hasUsedHiddenApi()Z -Ldalvik/system/VMRuntime;->is64BitInstructionSet(Ljava/lang/String;)Z -Ldalvik/system/VMRuntime;->isBootClassPathOnDisk(Ljava/lang/String;)Z -Ldalvik/system/VMRuntime;->isCheckJniEnabled()Z -Ldalvik/system/VMRuntime;->isDebuggerActive()Z -Ldalvik/system/VMRuntime;->isJavaDebuggable()Z -Ldalvik/system/VMRuntime;->isNativeDebuggable()Z -Ldalvik/system/VMRuntime;->nativeSetTargetHeapUtilization(F)V -Ldalvik/system/VMRuntime;->newUnpaddedArray(Ljava/lang/Class;I)Ljava/lang/Object; -Ldalvik/system/VMRuntime;->nonSdkApiUsageConsumer:Ljava/util/function/Consumer; -Ldalvik/system/VMRuntime;->preloadDexCaches()V -Ldalvik/system/VMRuntime;->properties()[Ljava/lang/String; -Ldalvik/system/VMRuntime;->registerAppInfo(Ljava/lang/String;[Ljava/lang/String;)V -Ldalvik/system/VMRuntime;->registerSensitiveThread()V -Ldalvik/system/VMRuntime;->requestConcurrentGC()V -Ldalvik/system/VMRuntime;->requestHeapTrim()V -Ldalvik/system/VMRuntime;->runHeapTasks()V -Ldalvik/system/VMRuntime;->SDK_VERSION_CUR_DEVELOPMENT:I -Ldalvik/system/VMRuntime;->setDedupeHiddenApiWarnings(Z)V -Ldalvik/system/VMRuntime;->setHiddenApiAccessLogSamplingRate(I)V -Ldalvik/system/VMRuntime;->setNonSdkApiUsageConsumer(Ljava/util/function/Consumer;)V -Ldalvik/system/VMRuntime;->setProcessPackageName(Ljava/lang/String;)V -Ldalvik/system/VMRuntime;->setSystemDaemonThreadPriority()V -Ldalvik/system/VMRuntime;->startHeapTaskProcessor()V -Ldalvik/system/VMRuntime;->startJitCompilation()V -Ldalvik/system/VMRuntime;->stopHeapTaskProcessor()V -Ldalvik/system/VMRuntime;->targetSdkVersion:I -Ldalvik/system/VMRuntime;->THE_ONE:Ldalvik/system/VMRuntime; -Ldalvik/system/VMRuntime;->trimHeap()V -Ldalvik/system/VMRuntime;->updateProcessState(I)V -Ldalvik/system/VMRuntime;->vmVersion()Ljava/lang/String; -Ldalvik/system/VMStack;-><init>()V -Ldalvik/system/VMStack;->getAnnotatedThreadStackTrace(Ljava/lang/Thread;)[Ldalvik/system/AnnotatedStackTraceElement; -Ldalvik/system/VMStack;->getClosestUserClassLoader()Ljava/lang/ClassLoader; -Ldalvik/system/VMStack;->getStackClass1()Ljava/lang/Class; -Ldalvik/system/ZygoteHooks;-><init>()V -Ldalvik/system/ZygoteHooks;->nativePostForkChild(JIZZLjava/lang/String;)V -Ldalvik/system/ZygoteHooks;->nativePreFork()J -Ldalvik/system/ZygoteHooks;->postForkChild(IZZLjava/lang/String;)V -Ldalvik/system/ZygoteHooks;->postForkCommon()V -Ldalvik/system/ZygoteHooks;->preFork()V -Ldalvik/system/ZygoteHooks;->startZygoteNoThreadCreation()V -Ldalvik/system/ZygoteHooks;->stopZygoteNoThreadCreation()V -Ldalvik/system/ZygoteHooks;->token:J -Ldalvik/system/ZygoteHooks;->waitUntilAllThreadsStopped()V -Ljava/awt/font/NumericShaper$Range;->base:I -Ljava/awt/font/NumericShaper$Range;->end:I -Ljava/awt/font/NumericShaper$Range;->getDigitBase()I -Ljava/awt/font/NumericShaper$Range;->getNumericBase()C -Ljava/awt/font/NumericShaper$Range;->indexToRange(I)Ljava/awt/font/NumericShaper$Range; -Ljava/awt/font/NumericShaper$Range;->inRange(I)Z -Ljava/awt/font/NumericShaper$Range;->maskToRangeSet(I)Ljava/util/Set; -Ljava/awt/font/NumericShaper$Range;->start:I -Ljava/awt/font/NumericShaper$Range;->toRangeIndex(Ljava/awt/font/NumericShaper$Range;)I -Ljava/awt/font/NumericShaper$Range;->toRangeMask(Ljava/util/Set;)I -Ljava/awt/font/NumericShaper;-><init>(II)V -Ljava/awt/font/NumericShaper;-><init>(Ljava/awt/font/NumericShaper$Range;Ljava/util/Set;)V -Ljava/awt/font/NumericShaper;->ARABIC_KEY:I -Ljava/awt/font/NumericShaper;->bases:[C -Ljava/awt/font/NumericShaper;->BENGALI_KEY:I -Ljava/awt/font/NumericShaper;->BSEARCH_THRESHOLD:I -Ljava/awt/font/NumericShaper;->checkParams([CII)V -Ljava/awt/font/NumericShaper;->contexts:[C -Ljava/awt/font/NumericShaper;->CONTEXTUAL_MASK:I -Ljava/awt/font/NumericShaper;->ctCache:I -Ljava/awt/font/NumericShaper;->ctCacheLimit:I -Ljava/awt/font/NumericShaper;->currentRange:Ljava/awt/font/NumericShaper$Range; -Ljava/awt/font/NumericShaper;->DEVANAGARI_KEY:I -Ljava/awt/font/NumericShaper;->EASTERN_ARABIC_KEY:I -Ljava/awt/font/NumericShaper;->ETHIOPIC_KEY:I -Ljava/awt/font/NumericShaper;->EUROPEAN_KEY:I -Ljava/awt/font/NumericShaper;->getContextKey(C)I -Ljava/awt/font/NumericShaper;->getHighBit(I)I -Ljava/awt/font/NumericShaper;->getKeyFromMask(I)I -Ljava/awt/font/NumericShaper;->GUJARATI_KEY:I -Ljava/awt/font/NumericShaper;->GURMUKHI_KEY:I -Ljava/awt/font/NumericShaper;->isStrongDirectional(C)Z -Ljava/awt/font/NumericShaper;->KANNADA_KEY:I -Ljava/awt/font/NumericShaper;->key:I -Ljava/awt/font/NumericShaper;->KHMER_KEY:I -Ljava/awt/font/NumericShaper;->LAO_KEY:I -Ljava/awt/font/NumericShaper;->MALAYALAM_KEY:I -Ljava/awt/font/NumericShaper;->mask:I -Ljava/awt/font/NumericShaper;->MONGOLIAN_KEY:I -Ljava/awt/font/NumericShaper;->MYANMAR_KEY:I -Ljava/awt/font/NumericShaper;->NUM_KEYS:I -Ljava/awt/font/NumericShaper;->ORIYA_KEY:I -Ljava/awt/font/NumericShaper;->rangeArray:[Ljava/awt/font/NumericShaper$Range; -Ljava/awt/font/NumericShaper;->rangeForCodePoint(I)Ljava/awt/font/NumericShaper$Range; -Ljava/awt/font/NumericShaper;->rangeSet:Ljava/util/Set; -Ljava/awt/font/NumericShaper;->search(I[III)I -Ljava/awt/font/NumericShaper;->shapeContextually([CIII)V -Ljava/awt/font/NumericShaper;->shapeContextually([CIILjava/awt/font/NumericShaper$Range;)V -Ljava/awt/font/NumericShaper;->shapeNonContextually([CII)V -Ljava/awt/font/NumericShaper;->shapingRange:Ljava/awt/font/NumericShaper$Range; -Ljava/awt/font/NumericShaper;->stCache:I -Ljava/awt/font/NumericShaper;->strongTable:[I -Ljava/awt/font/NumericShaper;->TAMIL_KEY:I -Ljava/awt/font/NumericShaper;->TELUGU_KEY:I -Ljava/awt/font/NumericShaper;->THAI_KEY:I -Ljava/awt/font/NumericShaper;->TIBETAN_KEY:I -Ljava/awt/font/TextAttribute;->instanceMap:Ljava/util/Map; -Ljava/beans/ChangeListenerMap;-><init>()V -Ljava/beans/ChangeListenerMap;->add(Ljava/lang/String;Ljava/util/EventListener;)V -Ljava/beans/ChangeListenerMap;->extract(Ljava/util/EventListener;)Ljava/util/EventListener; -Ljava/beans/ChangeListenerMap;->get(Ljava/lang/String;)[Ljava/util/EventListener; -Ljava/beans/ChangeListenerMap;->getEntries()Ljava/util/Set; -Ljava/beans/ChangeListenerMap;->getListeners()[Ljava/util/EventListener; -Ljava/beans/ChangeListenerMap;->getListeners(Ljava/lang/String;)[Ljava/util/EventListener; -Ljava/beans/ChangeListenerMap;->hasListeners(Ljava/lang/String;)Z -Ljava/beans/ChangeListenerMap;->map:Ljava/util/Map; -Ljava/beans/ChangeListenerMap;->newArray(I)[Ljava/util/EventListener; -Ljava/beans/ChangeListenerMap;->newProxy(Ljava/lang/String;Ljava/util/EventListener;)Ljava/util/EventListener; -Ljava/beans/ChangeListenerMap;->remove(Ljava/lang/String;Ljava/util/EventListener;)V -Ljava/beans/ChangeListenerMap;->set(Ljava/lang/String;[Ljava/util/EventListener;)V -Ljava/beans/IndexedPropertyChangeEvent;->appendTo(Ljava/lang/StringBuilder;)V -Ljava/beans/IndexedPropertyChangeEvent;->index:I -Ljava/beans/PropertyChangeEvent;->appendTo(Ljava/lang/StringBuilder;)V -Ljava/beans/PropertyChangeEvent;->newValue:Ljava/lang/Object; -Ljava/beans/PropertyChangeEvent;->oldValue:Ljava/lang/Object; -Ljava/beans/PropertyChangeEvent;->propagationId:Ljava/lang/Object; -Ljava/beans/PropertyChangeEvent;->propertyName:Ljava/lang/String; -Ljava/beans/PropertyChangeListenerProxy;->propertyName:Ljava/lang/String; -Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;-><init>()V -Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->EMPTY:[Ljava/beans/PropertyChangeListener; -Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->extract(Ljava/beans/PropertyChangeListener;)Ljava/beans/PropertyChangeListener; -Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->newArray(I)[Ljava/beans/PropertyChangeListener; -Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap;->newProxy(Ljava/lang/String;Ljava/beans/PropertyChangeListener;)Ljava/beans/PropertyChangeListener; -Ljava/beans/PropertyChangeSupport;->fire([Ljava/beans/PropertyChangeListener;Ljava/beans/PropertyChangeEvent;)V -Ljava/beans/PropertyChangeSupport;->map:Ljava/beans/PropertyChangeSupport$PropertyChangeListenerMap; -Ljava/beans/PropertyChangeSupport;->source:Ljava/lang/Object; -Ljava/io/BufferedInputStream;->bufUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; -Ljava/io/BufferedInputStream;->DEFAULT_BUFFER_SIZE:I -Ljava/io/BufferedInputStream;->fill()V -Ljava/io/BufferedInputStream;->getBufIfOpen()[B -Ljava/io/BufferedInputStream;->getInIfOpen()Ljava/io/InputStream; -Ljava/io/BufferedInputStream;->MAX_BUFFER_SIZE:I -Ljava/io/BufferedInputStream;->read1([BII)I -Ljava/io/BufferedOutputStream;->flushBuffer()V -Ljava/io/BufferedReader;->cb:[C -Ljava/io/BufferedReader;->defaultCharBufferSize:I -Ljava/io/BufferedReader;->defaultExpectedLineLength:I -Ljava/io/BufferedReader;->ensureOpen()V -Ljava/io/BufferedReader;->fill()V -Ljava/io/BufferedReader;->in:Ljava/io/Reader; -Ljava/io/BufferedReader;->INVALIDATED:I -Ljava/io/BufferedReader;->markedChar:I -Ljava/io/BufferedReader;->markedSkipLF:Z -Ljava/io/BufferedReader;->nChars:I -Ljava/io/BufferedReader;->nextChar:I -Ljava/io/BufferedReader;->read1([CII)I -Ljava/io/BufferedReader;->readAheadLimit:I -Ljava/io/BufferedReader;->readLine(Z)Ljava/lang/String; -Ljava/io/BufferedReader;->skipLF:Z -Ljava/io/BufferedReader;->UNMARKED:I -Ljava/io/BufferedWriter;->cb:[C -Ljava/io/BufferedWriter;->defaultCharBufferSize:I -Ljava/io/BufferedWriter;->ensureOpen()V -Ljava/io/BufferedWriter;->flushBuffer()V -Ljava/io/BufferedWriter;->lineSeparator:Ljava/lang/String; -Ljava/io/BufferedWriter;->min(II)I -Ljava/io/BufferedWriter;->nChars:I -Ljava/io/BufferedWriter;->nextChar:I -Ljava/io/BufferedWriter;->out:Ljava/io/Writer; -Ljava/io/ByteArrayOutputStream;->ensureCapacity(I)V -Ljava/io/ByteArrayOutputStream;->grow(I)V -Ljava/io/ByteArrayOutputStream;->hugeCapacity(I)I -Ljava/io/ByteArrayOutputStream;->MAX_ARRAY_SIZE:I -Ljava/io/CharArrayReader;->ensureOpen()V -Ljava/io/Console$LineReader;->cb:[C -Ljava/io/Console$LineReader;->in:Ljava/io/Reader; -Ljava/io/Console$LineReader;->leftoverLF:Z -Ljava/io/Console$LineReader;->nChars:I -Ljava/io/Console$LineReader;->nextChar:I -Ljava/io/Console;-><init>()V -Ljava/io/Console;-><init>(Ljava/io/InputStream;Ljava/io/OutputStream;)V -Ljava/io/Console;->cons:Ljava/io/Console; -Ljava/io/Console;->console()Ljava/io/Console; -Ljava/io/Console;->cs:Ljava/nio/charset/Charset; -Ljava/io/Console;->echo(Z)Z -Ljava/io/Console;->echoOff:Z -Ljava/io/Console;->formatter:Ljava/util/Formatter; -Ljava/io/Console;->grow()[C -Ljava/io/Console;->istty()Z -Ljava/io/Console;->out:Ljava/io/Writer; -Ljava/io/Console;->pw:Ljava/io/PrintWriter; -Ljava/io/Console;->rcb:[C -Ljava/io/Console;->reader:Ljava/io/Reader; -Ljava/io/Console;->readline(Z)[C -Ljava/io/Console;->readLock:Ljava/lang/Object; -Ljava/io/Console;->writeLock:Ljava/lang/Object; -Ljava/io/DataInputStream;->bytearr:[B -Ljava/io/DataInputStream;->chararr:[C -Ljava/io/DataInputStream;->lineBuffer:[C -Ljava/io/DataInputStream;->readBuffer:[B -Ljava/io/DataOutputStream;->bytearr:[B -Ljava/io/DataOutputStream;->incCount(I)V -Ljava/io/DataOutputStream;->writeBuffer:[B -Ljava/io/DataOutputStream;->writeUTF(Ljava/lang/String;Ljava/io/DataOutput;)I -Ljava/io/File$PathStatus;->CHECKED:Ljava/io/File$PathStatus; -Ljava/io/File$PathStatus;->INVALID:Ljava/io/File$PathStatus; -Ljava/io/File$PathStatus;->valueOf(Ljava/lang/String;)Ljava/io/File$PathStatus; -Ljava/io/File$PathStatus;->values()[Ljava/io/File$PathStatus; -Ljava/io/File$TempDirectory;-><init>()V -Ljava/io/File$TempDirectory;->generateFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File; -Ljava/io/File;-><init>(Ljava/lang/String;I)V -Ljava/io/File;-><init>(Ljava/lang/String;Ljava/io/File;)V -Ljava/io/File;->getPrefixLength()I -Ljava/io/File;->isInvalid()Z -Ljava/io/File;->PATH_OFFSET:J -Ljava/io/File;->PREFIX_LENGTH_OFFSET:J -Ljava/io/File;->slashify(Ljava/lang/String;Z)Ljava/lang/String; -Ljava/io/File;->UNSAFE:Lsun/misc/Unsafe; -Ljava/io/FileDescriptor;-><init>(I)V -Ljava/io/FileDescriptor;->dupFd(I)Ljava/io/FileDescriptor; -Ljava/io/FileDescriptor;->isSocket(I)Z -Ljava/io/FileInputStream$UseManualSkipException;-><init>()V -Ljava/io/FileInputStream;-><init>(Ljava/io/FileDescriptor;Z)V -Ljava/io/FileInputStream;->available0()I -Ljava/io/FileInputStream;->channel:Ljava/nio/channels/FileChannel; -Ljava/io/FileInputStream;->closed:Z -Ljava/io/FileInputStream;->closeLock:Ljava/lang/Object; -Ljava/io/FileInputStream;->guard:Ldalvik/system/CloseGuard; -Ljava/io/FileInputStream;->isFdOwner:Z -Ljava/io/FileInputStream;->open(Ljava/lang/String;)V -Ljava/io/FileInputStream;->open0(Ljava/lang/String;)V -Ljava/io/FileInputStream;->path:Ljava/lang/String; -Ljava/io/FileInputStream;->skip0(J)J -Ljava/io/FileInputStream;->tracker:Llibcore/io/IoTracker; -Ljava/io/FileNotFoundException;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Ljava/io/FileOutputStream;-><init>(Ljava/io/FileDescriptor;Z)V -Ljava/io/FileOutputStream;->append:Z -Ljava/io/FileOutputStream;->closed:Z -Ljava/io/FileOutputStream;->closeLock:Ljava/lang/Object; -Ljava/io/FileOutputStream;->guard:Ldalvik/system/CloseGuard; -Ljava/io/FileOutputStream;->isFdOwner:Z -Ljava/io/FileOutputStream;->open(Ljava/lang/String;Z)V -Ljava/io/FileOutputStream;->open0(Ljava/lang/String;Z)V -Ljava/io/FileOutputStream;->path:Ljava/lang/String; -Ljava/io/FileOutputStream;->tracker:Llibcore/io/IoTracker; -Ljava/io/FileSystem;-><init>()V -Ljava/io/FileSystem;->ACCESS_EXECUTE:I -Ljava/io/FileSystem;->ACCESS_OK:I -Ljava/io/FileSystem;->ACCESS_READ:I -Ljava/io/FileSystem;->ACCESS_WRITE:I -Ljava/io/FileSystem;->BA_DIRECTORY:I -Ljava/io/FileSystem;->BA_EXISTS:I -Ljava/io/FileSystem;->BA_HIDDEN:I -Ljava/io/FileSystem;->BA_REGULAR:I -Ljava/io/FileSystem;->getBooleanProperty(Ljava/lang/String;Z)Z -Ljava/io/FileSystem;->SPACE_FREE:I -Ljava/io/FileSystem;->SPACE_TOTAL:I -Ljava/io/FileSystem;->SPACE_USABLE:I -Ljava/io/FileSystem;->useCanonCaches:Z -Ljava/io/FileSystem;->useCanonPrefixCache:Z -Ljava/io/InputStream;->MAX_SKIP_BUFFER_SIZE:I -Ljava/io/InputStreamReader;->sd:Lsun/nio/cs/StreamDecoder; -Ljava/io/InterruptedIOException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V -Ljava/io/InterruptedIOException;-><init>(Ljava/lang/Throwable;)V -Ljava/io/LineNumberInputStream;->lineNumber:I -Ljava/io/LineNumberInputStream;->markLineNumber:I -Ljava/io/LineNumberInputStream;->markPushBack:I -Ljava/io/LineNumberInputStream;->pushBack:I -Ljava/io/LineNumberReader;->lineNumber:I -Ljava/io/LineNumberReader;->markedLineNumber:I -Ljava/io/LineNumberReader;->markedSkipLF:Z -Ljava/io/LineNumberReader;->maxSkipBufferSize:I -Ljava/io/LineNumberReader;->skipBuffer:[C -Ljava/io/LineNumberReader;->skipLF:Z -Ljava/io/ObjectInputStream$BlockDataInputStream;->blkmode:Z -Ljava/io/ObjectInputStream$BlockDataInputStream;->buf:[B -Ljava/io/ObjectInputStream$BlockDataInputStream;->cbuf:[C -Ljava/io/ObjectInputStream$BlockDataInputStream;->CHAR_BUF_SIZE:I -Ljava/io/ObjectInputStream$BlockDataInputStream;->currentBlockRemaining()I -Ljava/io/ObjectInputStream$BlockDataInputStream;->din:Ljava/io/DataInputStream; -Ljava/io/ObjectInputStream$BlockDataInputStream;->end:I -Ljava/io/ObjectInputStream$BlockDataInputStream;->getBlockDataMode()Z -Ljava/io/ObjectInputStream$BlockDataInputStream;->hbuf:[B -Ljava/io/ObjectInputStream$BlockDataInputStream;->HEADER_BLOCKED:I -Ljava/io/ObjectInputStream$BlockDataInputStream;->in:Ljava/io/ObjectInputStream$PeekInputStream; -Ljava/io/ObjectInputStream$BlockDataInputStream;->MAX_BLOCK_SIZE:I -Ljava/io/ObjectInputStream$BlockDataInputStream;->MAX_HEADER_SIZE:I -Ljava/io/ObjectInputStream$BlockDataInputStream;->peek()I -Ljava/io/ObjectInputStream$BlockDataInputStream;->peekByte()B -Ljava/io/ObjectInputStream$BlockDataInputStream;->pos:I -Ljava/io/ObjectInputStream$BlockDataInputStream;->read([BIIZ)I -Ljava/io/ObjectInputStream$BlockDataInputStream;->readBlockHeader(Z)I -Ljava/io/ObjectInputStream$BlockDataInputStream;->readBooleans([ZII)V -Ljava/io/ObjectInputStream$BlockDataInputStream;->readChars([CII)V -Ljava/io/ObjectInputStream$BlockDataInputStream;->readDoubles([DII)V -Ljava/io/ObjectInputStream$BlockDataInputStream;->readFloats([FII)V -Ljava/io/ObjectInputStream$BlockDataInputStream;->readFully([BIIZ)V -Ljava/io/ObjectInputStream$BlockDataInputStream;->readInts([III)V -Ljava/io/ObjectInputStream$BlockDataInputStream;->readLongs([JII)V -Ljava/io/ObjectInputStream$BlockDataInputStream;->readLongUTF()Ljava/lang/String; -Ljava/io/ObjectInputStream$BlockDataInputStream;->readShorts([SII)V -Ljava/io/ObjectInputStream$BlockDataInputStream;->readUTFBody(J)Ljava/lang/String; -Ljava/io/ObjectInputStream$BlockDataInputStream;->readUTFChar(Ljava/lang/StringBuilder;J)I -Ljava/io/ObjectInputStream$BlockDataInputStream;->readUTFSpan(Ljava/lang/StringBuilder;J)J -Ljava/io/ObjectInputStream$BlockDataInputStream;->refill()V -Ljava/io/ObjectInputStream$BlockDataInputStream;->setBlockDataMode(Z)Z -Ljava/io/ObjectInputStream$BlockDataInputStream;->skipBlockData()V -Ljava/io/ObjectInputStream$BlockDataInputStream;->unread:I -Ljava/io/ObjectInputStream$Caches;-><init>()V -Ljava/io/ObjectInputStream$Caches;->subclassAudits:Ljava/util/concurrent/ConcurrentMap; -Ljava/io/ObjectInputStream$Caches;->subclassAuditsQueue:Ljava/lang/ref/ReferenceQueue; -Ljava/io/ObjectInputStream$GetFieldImpl;->desc:Ljava/io/ObjectStreamClass; -Ljava/io/ObjectInputStream$GetFieldImpl;->getFieldOffset(Ljava/lang/String;Ljava/lang/Class;)I -Ljava/io/ObjectInputStream$GetFieldImpl;->objHandles:[I -Ljava/io/ObjectInputStream$GetFieldImpl;->objVals:[Ljava/lang/Object; -Ljava/io/ObjectInputStream$GetFieldImpl;->primVals:[B -Ljava/io/ObjectInputStream$GetFieldImpl;->readFields()V -Ljava/io/ObjectInputStream$HandleTable$HandleList;-><init>()V -Ljava/io/ObjectInputStream$HandleTable$HandleList;->add(I)V -Ljava/io/ObjectInputStream$HandleTable$HandleList;->get(I)I -Ljava/io/ObjectInputStream$HandleTable$HandleList;->list:[I -Ljava/io/ObjectInputStream$HandleTable$HandleList;->size()I -Ljava/io/ObjectInputStream$HandleTable$HandleList;->size:I -Ljava/io/ObjectInputStream$HandleTable;-><init>(I)V -Ljava/io/ObjectInputStream$HandleTable;->assign(Ljava/lang/Object;)I -Ljava/io/ObjectInputStream$HandleTable;->clear()V -Ljava/io/ObjectInputStream$HandleTable;->deps:[Ljava/io/ObjectInputStream$HandleTable$HandleList; -Ljava/io/ObjectInputStream$HandleTable;->entries:[Ljava/lang/Object; -Ljava/io/ObjectInputStream$HandleTable;->finish(I)V -Ljava/io/ObjectInputStream$HandleTable;->grow()V -Ljava/io/ObjectInputStream$HandleTable;->lookupException(I)Ljava/lang/ClassNotFoundException; -Ljava/io/ObjectInputStream$HandleTable;->lookupObject(I)Ljava/lang/Object; -Ljava/io/ObjectInputStream$HandleTable;->lowDep:I -Ljava/io/ObjectInputStream$HandleTable;->markDependency(II)V -Ljava/io/ObjectInputStream$HandleTable;->markException(ILjava/lang/ClassNotFoundException;)V -Ljava/io/ObjectInputStream$HandleTable;->setObject(ILjava/lang/Object;)V -Ljava/io/ObjectInputStream$HandleTable;->size()I -Ljava/io/ObjectInputStream$HandleTable;->size:I -Ljava/io/ObjectInputStream$HandleTable;->status:[B -Ljava/io/ObjectInputStream$HandleTable;->STATUS_EXCEPTION:B -Ljava/io/ObjectInputStream$HandleTable;->STATUS_OK:B -Ljava/io/ObjectInputStream$HandleTable;->STATUS_UNKNOWN:B -Ljava/io/ObjectInputStream$PeekInputStream;-><init>(Ljava/io/InputStream;)V -Ljava/io/ObjectInputStream$PeekInputStream;->in:Ljava/io/InputStream; -Ljava/io/ObjectInputStream$PeekInputStream;->peek()I -Ljava/io/ObjectInputStream$PeekInputStream;->peekb:I -Ljava/io/ObjectInputStream$PeekInputStream;->readFully([BII)V -Ljava/io/ObjectInputStream$ValidationList$Callback;-><init>(Ljava/io/ObjectInputValidation;ILjava/io/ObjectInputStream$ValidationList$Callback;Ljava/security/AccessControlContext;)V -Ljava/io/ObjectInputStream$ValidationList$Callback;->acc:Ljava/security/AccessControlContext; -Ljava/io/ObjectInputStream$ValidationList$Callback;->next:Ljava/io/ObjectInputStream$ValidationList$Callback; -Ljava/io/ObjectInputStream$ValidationList$Callback;->obj:Ljava/io/ObjectInputValidation; -Ljava/io/ObjectInputStream$ValidationList$Callback;->priority:I -Ljava/io/ObjectInputStream$ValidationList;-><init>()V -Ljava/io/ObjectInputStream$ValidationList;->clear()V -Ljava/io/ObjectInputStream$ValidationList;->doCallbacks()V -Ljava/io/ObjectInputStream$ValidationList;->list:Ljava/io/ObjectInputStream$ValidationList$Callback; -Ljava/io/ObjectInputStream$ValidationList;->register(Ljava/io/ObjectInputValidation;I)V -Ljava/io/ObjectInputStream;->auditSubclass(Ljava/lang/Class;)Z -Ljava/io/ObjectInputStream;->checkResolve(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/io/ObjectInputStream;->clear()V -Ljava/io/ObjectInputStream;->cloneArray(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/io/ObjectInputStream;->closed:Z -Ljava/io/ObjectInputStream;->curContext:Ljava/io/SerialCallbackContext; -Ljava/io/ObjectInputStream;->defaultDataEnd:Z -Ljava/io/ObjectInputStream;->defaultReadFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V -Ljava/io/ObjectInputStream;->depth:I -Ljava/io/ObjectInputStream;->enableOverride:Z -Ljava/io/ObjectInputStream;->enableResolve:Z -Ljava/io/ObjectInputStream;->handleReset()V -Ljava/io/ObjectInputStream;->handles:Ljava/io/ObjectInputStream$HandleTable; -Ljava/io/ObjectInputStream;->isCustomSubclass()Z -Ljava/io/ObjectInputStream;->latestUserDefinedLoader()Ljava/lang/ClassLoader; -Ljava/io/ObjectInputStream;->NULL_HANDLE:I -Ljava/io/ObjectInputStream;->passHandle:I -Ljava/io/ObjectInputStream;->primClasses:Ljava/util/HashMap; -Ljava/io/ObjectInputStream;->primVals:[B -Ljava/io/ObjectInputStream;->readArray(Z)Ljava/lang/Object; -Ljava/io/ObjectInputStream;->readClass(Z)Ljava/lang/Class; -Ljava/io/ObjectInputStream;->readClassDesc(Z)Ljava/io/ObjectStreamClass; -Ljava/io/ObjectInputStream;->readEnum(Z)Ljava/lang/Enum; -Ljava/io/ObjectInputStream;->readExternalData(Ljava/io/Externalizable;Ljava/io/ObjectStreamClass;)V -Ljava/io/ObjectInputStream;->readFatalException()Ljava/io/IOException; -Ljava/io/ObjectInputStream;->readHandle(Z)Ljava/lang/Object; -Ljava/io/ObjectInputStream;->readNonProxyDesc(Z)Ljava/io/ObjectStreamClass; -Ljava/io/ObjectInputStream;->readNull()Ljava/lang/Object; -Ljava/io/ObjectInputStream;->readObject0(Z)Ljava/lang/Object; -Ljava/io/ObjectInputStream;->readOrdinaryObject(Z)Ljava/lang/Object; -Ljava/io/ObjectInputStream;->readProxyDesc(Z)Ljava/io/ObjectStreamClass; -Ljava/io/ObjectInputStream;->readSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V -Ljava/io/ObjectInputStream;->readString(Z)Ljava/lang/String; -Ljava/io/ObjectInputStream;->readTypeString()Ljava/lang/String; -Ljava/io/ObjectInputStream;->skipCustomData()V -Ljava/io/ObjectInputStream;->unsharedMarker:Ljava/lang/Object; -Ljava/io/ObjectInputStream;->verifySubclass()V -Ljava/io/ObjectInputStream;->vlist:Ljava/io/ObjectInputStream$ValidationList; -Ljava/io/ObjectOutputStream$BlockDataOutputStream;-><init>(Ljava/io/OutputStream;)V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->blkmode:Z -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->buf:[B -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->cbuf:[C -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->CHAR_BUF_SIZE:I -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->dout:Ljava/io/DataOutputStream; -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->drain()V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->getBlockDataMode()Z -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->getUTFLength(Ljava/lang/String;)J -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->hbuf:[B -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->MAX_BLOCK_SIZE:I -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->MAX_HEADER_SIZE:I -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->out:Ljava/io/OutputStream; -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->pos:I -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->setBlockDataMode(Z)Z -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->warnIfClosed()V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->warnOnceWhenWriting:Z -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->write([BIIZ)V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeBlockHeader(I)V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeBooleans([ZII)V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeChars([CII)V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeDoubles([DII)V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeFloats([FII)V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeInts([III)V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeLongs([JII)V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeLongUTF(Ljava/lang/String;)V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeLongUTF(Ljava/lang/String;J)V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeShorts([SII)V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeUTF(Ljava/lang/String;J)V -Ljava/io/ObjectOutputStream$BlockDataOutputStream;->writeUTFBody(Ljava/lang/String;)V -Ljava/io/ObjectOutputStream$Caches;-><init>()V -Ljava/io/ObjectOutputStream$Caches;->subclassAudits:Ljava/util/concurrent/ConcurrentMap; -Ljava/io/ObjectOutputStream$Caches;->subclassAuditsQueue:Ljava/lang/ref/ReferenceQueue; -Ljava/io/ObjectOutputStream$DebugTraceInfoStack;-><init>()V -Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->clear()V -Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->pop()V -Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->push(Ljava/lang/String;)V -Ljava/io/ObjectOutputStream$DebugTraceInfoStack;->stack:Ljava/util/List; -Ljava/io/ObjectOutputStream$HandleTable;-><init>(IF)V -Ljava/io/ObjectOutputStream$HandleTable;->assign(Ljava/lang/Object;)I -Ljava/io/ObjectOutputStream$HandleTable;->clear()V -Ljava/io/ObjectOutputStream$HandleTable;->growEntries()V -Ljava/io/ObjectOutputStream$HandleTable;->growSpine()V -Ljava/io/ObjectOutputStream$HandleTable;->hash(Ljava/lang/Object;)I -Ljava/io/ObjectOutputStream$HandleTable;->insert(Ljava/lang/Object;I)V -Ljava/io/ObjectOutputStream$HandleTable;->loadFactor:F -Ljava/io/ObjectOutputStream$HandleTable;->lookup(Ljava/lang/Object;)I -Ljava/io/ObjectOutputStream$HandleTable;->next:[I -Ljava/io/ObjectOutputStream$HandleTable;->objs:[Ljava/lang/Object; -Ljava/io/ObjectOutputStream$HandleTable;->size()I -Ljava/io/ObjectOutputStream$HandleTable;->size:I -Ljava/io/ObjectOutputStream$HandleTable;->spine:[I -Ljava/io/ObjectOutputStream$HandleTable;->threshold:I -Ljava/io/ObjectOutputStream$PutFieldImpl;->desc:Ljava/io/ObjectStreamClass; -Ljava/io/ObjectOutputStream$PutFieldImpl;->getFieldOffset(Ljava/lang/String;Ljava/lang/Class;)I -Ljava/io/ObjectOutputStream$PutFieldImpl;->objVals:[Ljava/lang/Object; -Ljava/io/ObjectOutputStream$PutFieldImpl;->primVals:[B -Ljava/io/ObjectOutputStream$PutFieldImpl;->writeFields()V -Ljava/io/ObjectOutputStream$ReplaceTable;-><init>(IF)V -Ljava/io/ObjectOutputStream$ReplaceTable;->assign(Ljava/lang/Object;Ljava/lang/Object;)V -Ljava/io/ObjectOutputStream$ReplaceTable;->clear()V -Ljava/io/ObjectOutputStream$ReplaceTable;->grow()V -Ljava/io/ObjectOutputStream$ReplaceTable;->htab:Ljava/io/ObjectOutputStream$HandleTable; -Ljava/io/ObjectOutputStream$ReplaceTable;->lookup(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/io/ObjectOutputStream$ReplaceTable;->reps:[Ljava/lang/Object; -Ljava/io/ObjectOutputStream$ReplaceTable;->size()I -Ljava/io/ObjectOutputStream;->auditSubclass(Ljava/lang/Class;)Z -Ljava/io/ObjectOutputStream;->bout:Ljava/io/ObjectOutputStream$BlockDataOutputStream; -Ljava/io/ObjectOutputStream;->clear()V -Ljava/io/ObjectOutputStream;->curContext:Ljava/io/SerialCallbackContext; -Ljava/io/ObjectOutputStream;->curPut:Ljava/io/ObjectOutputStream$PutFieldImpl; -Ljava/io/ObjectOutputStream;->debugInfoStack:Ljava/io/ObjectOutputStream$DebugTraceInfoStack; -Ljava/io/ObjectOutputStream;->defaultWriteFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V -Ljava/io/ObjectOutputStream;->depth:I -Ljava/io/ObjectOutputStream;->doublesToBytes([DI[BII)V -Ljava/io/ObjectOutputStream;->enableOverride:Z -Ljava/io/ObjectOutputStream;->enableReplace:Z -Ljava/io/ObjectOutputStream;->extendedDebugInfo:Z -Ljava/io/ObjectOutputStream;->floatsToBytes([FI[BII)V -Ljava/io/ObjectOutputStream;->getProtocolVersion()I -Ljava/io/ObjectOutputStream;->handles:Ljava/io/ObjectOutputStream$HandleTable; -Ljava/io/ObjectOutputStream;->isCustomSubclass()Z -Ljava/io/ObjectOutputStream;->primVals:[B -Ljava/io/ObjectOutputStream;->subs:Ljava/io/ObjectOutputStream$ReplaceTable; -Ljava/io/ObjectOutputStream;->verifySubclass()V -Ljava/io/ObjectOutputStream;->writeArray(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V -Ljava/io/ObjectOutputStream;->writeClass(Ljava/lang/Class;Z)V -Ljava/io/ObjectOutputStream;->writeClassDesc(Ljava/io/ObjectStreamClass;Z)V -Ljava/io/ObjectOutputStream;->writeEnum(Ljava/lang/Enum;Ljava/io/ObjectStreamClass;Z)V -Ljava/io/ObjectOutputStream;->writeExternalData(Ljava/io/Externalizable;)V -Ljava/io/ObjectOutputStream;->writeFatalException(Ljava/io/IOException;)V -Ljava/io/ObjectOutputStream;->writeHandle(I)V -Ljava/io/ObjectOutputStream;->writeNonProxyDesc(Ljava/io/ObjectStreamClass;Z)V -Ljava/io/ObjectOutputStream;->writeNull()V -Ljava/io/ObjectOutputStream;->writeObject0(Ljava/lang/Object;Z)V -Ljava/io/ObjectOutputStream;->writeOrdinaryObject(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V -Ljava/io/ObjectOutputStream;->writeProxyDesc(Ljava/io/ObjectStreamClass;Z)V -Ljava/io/ObjectOutputStream;->writeSerialData(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V -Ljava/io/ObjectOutputStream;->writeString(Ljava/lang/String;Z)V -Ljava/io/ObjectOutputStream;->writeTypeString(Ljava/lang/String;)V -Ljava/io/ObjectStreamClass$Caches;-><init>()V -Ljava/io/ObjectStreamClass$Caches;->localDescs:Ljava/util/concurrent/ConcurrentMap; -Ljava/io/ObjectStreamClass$Caches;->localDescsQueue:Ljava/lang/ref/ReferenceQueue; -Ljava/io/ObjectStreamClass$Caches;->reflectors:Ljava/util/concurrent/ConcurrentMap; -Ljava/io/ObjectStreamClass$Caches;->reflectorsQueue:Ljava/lang/ref/ReferenceQueue; -Ljava/io/ObjectStreamClass$ClassDataSlot;-><init>(Ljava/io/ObjectStreamClass;Z)V -Ljava/io/ObjectStreamClass$ClassDataSlot;->desc:Ljava/io/ObjectStreamClass; -Ljava/io/ObjectStreamClass$ClassDataSlot;->hasData:Z -Ljava/io/ObjectStreamClass$EntryFuture;-><init>()V -Ljava/io/ObjectStreamClass$EntryFuture;->entry:Ljava/lang/Object; -Ljava/io/ObjectStreamClass$EntryFuture;->get()Ljava/lang/Object; -Ljava/io/ObjectStreamClass$EntryFuture;->getOwner()Ljava/lang/Thread; -Ljava/io/ObjectStreamClass$EntryFuture;->owner:Ljava/lang/Thread; -Ljava/io/ObjectStreamClass$EntryFuture;->set(Ljava/lang/Object;)Z -Ljava/io/ObjectStreamClass$EntryFuture;->unset:Ljava/lang/Object; -Ljava/io/ObjectStreamClass$ExceptionInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Ljava/io/ObjectStreamClass$ExceptionInfo;->className:Ljava/lang/String; -Ljava/io/ObjectStreamClass$ExceptionInfo;->message:Ljava/lang/String; -Ljava/io/ObjectStreamClass$ExceptionInfo;->newInvalidClassException()Ljava/io/InvalidClassException; -Ljava/io/ObjectStreamClass$FieldReflector;-><init>([Ljava/io/ObjectStreamField;)V -Ljava/io/ObjectStreamClass$FieldReflector;->fields:[Ljava/io/ObjectStreamField; -Ljava/io/ObjectStreamClass$FieldReflector;->getFields()[Ljava/io/ObjectStreamField; -Ljava/io/ObjectStreamClass$FieldReflector;->getObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V -Ljava/io/ObjectStreamClass$FieldReflector;->getPrimFieldValues(Ljava/lang/Object;[B)V -Ljava/io/ObjectStreamClass$FieldReflector;->numPrimFields:I -Ljava/io/ObjectStreamClass$FieldReflector;->offsets:[I -Ljava/io/ObjectStreamClass$FieldReflector;->readKeys:[J -Ljava/io/ObjectStreamClass$FieldReflector;->setObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V -Ljava/io/ObjectStreamClass$FieldReflector;->setPrimFieldValues(Ljava/lang/Object;[B)V -Ljava/io/ObjectStreamClass$FieldReflector;->typeCodes:[C -Ljava/io/ObjectStreamClass$FieldReflector;->types:[Ljava/lang/Class; -Ljava/io/ObjectStreamClass$FieldReflector;->unsafe:Lsun/misc/Unsafe; -Ljava/io/ObjectStreamClass$FieldReflector;->writeKeys:[J -Ljava/io/ObjectStreamClass$FieldReflectorKey;-><init>(Ljava/lang/Class;[Ljava/io/ObjectStreamField;Ljava/lang/ref/ReferenceQueue;)V -Ljava/io/ObjectStreamClass$FieldReflectorKey;->hash:I -Ljava/io/ObjectStreamClass$FieldReflectorKey;->nullClass:Z -Ljava/io/ObjectStreamClass$FieldReflectorKey;->sigs:Ljava/lang/String; -Ljava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Constructor;)V -Ljava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Field;)V -Ljava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Method;)V -Ljava/io/ObjectStreamClass$MemberSignature;->member:Ljava/lang/reflect/Member; -Ljava/io/ObjectStreamClass$MemberSignature;->name:Ljava/lang/String; -Ljava/io/ObjectStreamClass$MemberSignature;->signature:Ljava/lang/String; -Ljava/io/ObjectStreamClass$WeakClassKey;-><init>(Ljava/lang/Class;Ljava/lang/ref/ReferenceQueue;)V -Ljava/io/ObjectStreamClass$WeakClassKey;->hash:I -Ljava/io/ObjectStreamClass;-><init>()V -Ljava/io/ObjectStreamClass;-><init>(Ljava/lang/Class;)V -Ljava/io/ObjectStreamClass;->checkDefaultSerialize()V -Ljava/io/ObjectStreamClass;->checkDeserialize()V -Ljava/io/ObjectStreamClass;->checkSerialize()V -Ljava/io/ObjectStreamClass;->cl:Ljava/lang/Class; -Ljava/io/ObjectStreamClass;->classNamesEqual(Ljava/lang/String;Ljava/lang/String;)Z -Ljava/io/ObjectStreamClass;->cons:Ljava/lang/reflect/Constructor; -Ljava/io/ObjectStreamClass;->dataLayout:[Ljava/io/ObjectStreamClass$ClassDataSlot; -Ljava/io/ObjectStreamClass;->defaultSerializeEx:Ljava/io/ObjectStreamClass$ExceptionInfo; -Ljava/io/ObjectStreamClass;->deserializeEx:Ljava/io/ObjectStreamClass$ExceptionInfo; -Ljava/io/ObjectStreamClass;->externalizable:Z -Ljava/io/ObjectStreamClass;->fieldRefl:Ljava/io/ObjectStreamClass$FieldReflector; -Ljava/io/ObjectStreamClass;->getClassDataLayout()[Ljava/io/ObjectStreamClass$ClassDataSlot; -Ljava/io/ObjectStreamClass;->getClassDataLayout0()[Ljava/io/ObjectStreamClass$ClassDataSlot; -Ljava/io/ObjectStreamClass;->getClassSignature(Ljava/lang/Class;)Ljava/lang/String; -Ljava/io/ObjectStreamClass;->getDeclaredSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField; -Ljava/io/ObjectStreamClass;->getDeclaredSUID(Ljava/lang/Class;)Ljava/lang/Long; -Ljava/io/ObjectStreamClass;->getDefaultSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField; -Ljava/io/ObjectStreamClass;->getExternalizableConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor; -Ljava/io/ObjectStreamClass;->getField(Ljava/lang/String;Ljava/lang/Class;)Ljava/io/ObjectStreamField; -Ljava/io/ObjectStreamClass;->getFields(Z)[Ljava/io/ObjectStreamField; -Ljava/io/ObjectStreamClass;->getInheritableMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method; -Ljava/io/ObjectStreamClass;->getMethodSignature([Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/String; -Ljava/io/ObjectStreamClass;->getObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V -Ljava/io/ObjectStreamClass;->getPackageName(Ljava/lang/Class;)Ljava/lang/String; -Ljava/io/ObjectStreamClass;->getPrimFieldValues(Ljava/lang/Object;[B)V -Ljava/io/ObjectStreamClass;->getPrivateMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method; -Ljava/io/ObjectStreamClass;->getReflector([Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamClass;)Ljava/io/ObjectStreamClass$FieldReflector; -Ljava/io/ObjectStreamClass;->getResolveException()Ljava/lang/ClassNotFoundException; -Ljava/io/ObjectStreamClass;->getSerialFields(Ljava/lang/Class;)[Ljava/io/ObjectStreamField; -Ljava/io/ObjectStreamClass;->getSerializableConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor; -Ljava/io/ObjectStreamClass;->getSuperDesc()Ljava/io/ObjectStreamClass; -Ljava/io/ObjectStreamClass;->getVariantFor(Ljava/lang/Class;)Ljava/io/ObjectStreamClass; -Ljava/io/ObjectStreamClass;->hasBlockExternalData()Z -Ljava/io/ObjectStreamClass;->hasBlockExternalData:Z -Ljava/io/ObjectStreamClass;->hasReadResolveMethod()Z -Ljava/io/ObjectStreamClass;->hasStaticInitializer(Ljava/lang/Class;Z)Z -Ljava/io/ObjectStreamClass;->hasWriteObjectData:Z -Ljava/io/ObjectStreamClass;->hasWriteObjectMethod()Z -Ljava/io/ObjectStreamClass;->hasWriteReplaceMethod()Z -Ljava/io/ObjectStreamClass;->initialized:Z -Ljava/io/ObjectStreamClass;->initNonProxy(Ljava/io/ObjectStreamClass;Ljava/lang/Class;Ljava/lang/ClassNotFoundException;Ljava/io/ObjectStreamClass;)V -Ljava/io/ObjectStreamClass;->initProxy(Ljava/lang/Class;Ljava/lang/ClassNotFoundException;Ljava/io/ObjectStreamClass;)V -Ljava/io/ObjectStreamClass;->invokeReadObject(Ljava/lang/Object;Ljava/io/ObjectInputStream;)V -Ljava/io/ObjectStreamClass;->invokeReadObjectNoData(Ljava/lang/Object;)V -Ljava/io/ObjectStreamClass;->invokeReadResolve(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/io/ObjectStreamClass;->invokeWriteObject(Ljava/lang/Object;Ljava/io/ObjectOutputStream;)V -Ljava/io/ObjectStreamClass;->invokeWriteReplace(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/io/ObjectStreamClass;->isEnum()Z -Ljava/io/ObjectStreamClass;->isEnum:Z -Ljava/io/ObjectStreamClass;->isExternalizable()Z -Ljava/io/ObjectStreamClass;->isInstantiable()Z -Ljava/io/ObjectStreamClass;->isProxy()Z -Ljava/io/ObjectStreamClass;->isProxy:Z -Ljava/io/ObjectStreamClass;->isSerializable()Z -Ljava/io/ObjectStreamClass;->localDesc:Ljava/io/ObjectStreamClass; -Ljava/io/ObjectStreamClass;->lookup(Ljava/lang/Class;Z)Ljava/io/ObjectStreamClass; -Ljava/io/ObjectStreamClass;->matchFields([Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamClass;)[Ljava/io/ObjectStreamField; -Ljava/io/ObjectStreamClass;->MAX_SDK_TARGET_FOR_CLINIT_UIDGEN_WORKAROUND:I -Ljava/io/ObjectStreamClass;->name:Ljava/lang/String; -Ljava/io/ObjectStreamClass;->numObjFields:I -Ljava/io/ObjectStreamClass;->packageEquals(Ljava/lang/Class;Ljava/lang/Class;)Z -Ljava/io/ObjectStreamClass;->primDataSize:I -Ljava/io/ObjectStreamClass;->processQueue(Ljava/lang/ref/ReferenceQueue;Ljava/util/concurrent/ConcurrentMap;)V -Ljava/io/ObjectStreamClass;->readNonProxy(Ljava/io/ObjectInputStream;)V -Ljava/io/ObjectStreamClass;->readObjectMethod:Ljava/lang/reflect/Method; -Ljava/io/ObjectStreamClass;->readObjectNoDataMethod:Ljava/lang/reflect/Method; -Ljava/io/ObjectStreamClass;->readResolveMethod:Ljava/lang/reflect/Method; -Ljava/io/ObjectStreamClass;->requireInitialized()V -Ljava/io/ObjectStreamClass;->resolveEx:Ljava/lang/ClassNotFoundException; -Ljava/io/ObjectStreamClass;->serializable:Z -Ljava/io/ObjectStreamClass;->serializeEx:Ljava/io/ObjectStreamClass$ExceptionInfo; -Ljava/io/ObjectStreamClass;->setObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V -Ljava/io/ObjectStreamClass;->setPrimFieldValues(Ljava/lang/Object;[B)V -Ljava/io/ObjectStreamClass;->suid:Ljava/lang/Long; -Ljava/io/ObjectStreamClass;->superDesc:Ljava/io/ObjectStreamClass; -Ljava/io/ObjectStreamClass;->throwMiscException(Ljava/lang/Throwable;)V -Ljava/io/ObjectStreamClass;->writeNonProxy(Ljava/io/ObjectOutputStream;)V -Ljava/io/ObjectStreamClass;->writeObjectMethod:Ljava/lang/reflect/Method; -Ljava/io/ObjectStreamClass;->writeReplaceMethod:Ljava/lang/reflect/Method; -Ljava/io/ObjectStreamField;-><init>(Ljava/lang/reflect/Field;ZZ)V -Ljava/io/ObjectStreamField;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V -Ljava/io/ObjectStreamField;->field:Ljava/lang/reflect/Field; -Ljava/io/ObjectStreamField;->getClassSignature(Ljava/lang/Class;)Ljava/lang/String; -Ljava/io/ObjectStreamField;->getSignature()Ljava/lang/String; -Ljava/io/ObjectStreamField;->name:Ljava/lang/String; -Ljava/io/ObjectStreamField;->offset:I -Ljava/io/ObjectStreamField;->signature:Ljava/lang/String; -Ljava/io/ObjectStreamField;->type:Ljava/lang/Class; -Ljava/io/ObjectStreamField;->unshared:Z -Ljava/io/OptionalDataException;-><init>(I)V -Ljava/io/OptionalDataException;-><init>(Z)V -Ljava/io/OutputStreamWriter;->flushBuffer()V -Ljava/io/OutputStreamWriter;->se:Lsun/nio/cs/StreamEncoder; -Ljava/io/PipedInputStream;->awaitSpace()V -Ljava/io/PipedInputStream;->checkStateForReceive()V -Ljava/io/PipedInputStream;->closedByReader:Z -Ljava/io/PipedInputStream;->closedByWriter:Z -Ljava/io/PipedInputStream;->connected:Z -Ljava/io/PipedInputStream;->DEFAULT_PIPE_SIZE:I -Ljava/io/PipedInputStream;->initPipe(I)V -Ljava/io/PipedInputStream;->readSide:Ljava/lang/Thread; -Ljava/io/PipedInputStream;->receive([BII)V -Ljava/io/PipedInputStream;->receivedLast()V -Ljava/io/PipedInputStream;->writeSide:Ljava/lang/Thread; -Ljava/io/PipedOutputStream;->sink:Ljava/io/PipedInputStream; -Ljava/io/PipedReader;->buffer:[C -Ljava/io/PipedReader;->closedByReader:Z -Ljava/io/PipedReader;->closedByWriter:Z -Ljava/io/PipedReader;->connected:Z -Ljava/io/PipedReader;->DEFAULT_PIPE_SIZE:I -Ljava/io/PipedReader;->in:I -Ljava/io/PipedReader;->initPipe(I)V -Ljava/io/PipedReader;->out:I -Ljava/io/PipedReader;->readSide:Ljava/lang/Thread; -Ljava/io/PipedReader;->receive(I)V -Ljava/io/PipedReader;->receive([CII)V -Ljava/io/PipedReader;->receivedLast()V -Ljava/io/PipedReader;->writeSide:Ljava/lang/Thread; -Ljava/io/PipedWriter;->closed:Z -Ljava/io/PipedWriter;->sink:Ljava/io/PipedReader; -Ljava/io/PrintStream;-><init>(ZLjava/io/OutputStream;)V -Ljava/io/PrintStream;-><init>(ZLjava/io/OutputStream;Ljava/nio/charset/Charset;)V -Ljava/io/PrintStream;-><init>(ZLjava/nio/charset/Charset;Ljava/io/OutputStream;)V -Ljava/io/PrintStream;->autoFlush:Z -Ljava/io/PrintStream;->charOut:Ljava/io/OutputStreamWriter; -Ljava/io/PrintStream;->charset:Ljava/nio/charset/Charset; -Ljava/io/PrintStream;->closing:Z -Ljava/io/PrintStream;->ensureOpen()V -Ljava/io/PrintStream;->formatter:Ljava/util/Formatter; -Ljava/io/PrintStream;->getTextOut()Ljava/io/BufferedWriter; -Ljava/io/PrintStream;->newLine()V -Ljava/io/PrintStream;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; -Ljava/io/PrintStream;->textOut:Ljava/io/BufferedWriter; -Ljava/io/PrintStream;->toCharset(Ljava/lang/String;)Ljava/nio/charset/Charset; -Ljava/io/PrintStream;->trouble:Z -Ljava/io/PrintStream;->write(Ljava/lang/String;)V -Ljava/io/PrintStream;->write([C)V -Ljava/io/PrintWriter;-><init>(Ljava/nio/charset/Charset;Ljava/io/File;)V -Ljava/io/PrintWriter;->autoFlush:Z -Ljava/io/PrintWriter;->ensureOpen()V -Ljava/io/PrintWriter;->formatter:Ljava/util/Formatter; -Ljava/io/PrintWriter;->lineSeparator:Ljava/lang/String; -Ljava/io/PrintWriter;->newLine()V -Ljava/io/PrintWriter;->psOut:Ljava/io/PrintStream; -Ljava/io/PrintWriter;->toCharset(Ljava/lang/String;)Ljava/nio/charset/Charset; -Ljava/io/PrintWriter;->trouble:Z -Ljava/io/PushbackInputStream;->ensureOpen()V -Ljava/io/PushbackReader;->buf:[C -Ljava/io/PushbackReader;->ensureOpen()V -Ljava/io/PushbackReader;->pos:I -Ljava/io/RandomAccessFile;->channel:Ljava/nio/channels/FileChannel; -Ljava/io/RandomAccessFile;->closed:Z -Ljava/io/RandomAccessFile;->closeLock:Ljava/lang/Object; -Ljava/io/RandomAccessFile;->flushAfterWrite:I -Ljava/io/RandomAccessFile;->FLUSH_FDATASYNC:I -Ljava/io/RandomAccessFile;->FLUSH_FSYNC:I -Ljava/io/RandomAccessFile;->FLUSH_NONE:I -Ljava/io/RandomAccessFile;->guard:Ldalvik/system/CloseGuard; -Ljava/io/RandomAccessFile;->ioTracker:Llibcore/io/IoTracker; -Ljava/io/RandomAccessFile;->maybeSync()V -Ljava/io/RandomAccessFile;->mode:I -Ljava/io/RandomAccessFile;->path:Ljava/lang/String; -Ljava/io/RandomAccessFile;->readBytes([BII)I -Ljava/io/RandomAccessFile;->rw:Z -Ljava/io/RandomAccessFile;->scratch:[B -Ljava/io/RandomAccessFile;->writeBytes([BII)V -Ljava/io/Reader;->maxSkipBufferSize:I -Ljava/io/Reader;->skipBuffer:[C -Ljava/io/SequenceInputStream;->e:Ljava/util/Enumeration; -Ljava/io/SequenceInputStream;->in:Ljava/io/InputStream; -Ljava/io/SequenceInputStream;->nextStream()V -Ljava/io/SerialCallbackContext;-><init>(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V -Ljava/io/SerialCallbackContext;->check()V -Ljava/io/SerialCallbackContext;->checkAndSetUsed()V -Ljava/io/SerialCallbackContext;->desc:Ljava/io/ObjectStreamClass; -Ljava/io/SerialCallbackContext;->getDesc()Ljava/io/ObjectStreamClass; -Ljava/io/SerialCallbackContext;->getObj()Ljava/lang/Object; -Ljava/io/SerialCallbackContext;->obj:Ljava/lang/Object; -Ljava/io/SerialCallbackContext;->setUsed()V -Ljava/io/SerialCallbackContext;->thread:Ljava/lang/Thread; -Ljava/io/StreamTokenizer;-><init>()V -Ljava/io/StreamTokenizer;->buf:[C -Ljava/io/StreamTokenizer;->ctype:[B -Ljava/io/StreamTokenizer;->CT_ALPHA:B -Ljava/io/StreamTokenizer;->CT_COMMENT:B -Ljava/io/StreamTokenizer;->CT_DIGIT:B -Ljava/io/StreamTokenizer;->CT_QUOTE:B -Ljava/io/StreamTokenizer;->CT_WHITESPACE:B -Ljava/io/StreamTokenizer;->eolIsSignificantP:Z -Ljava/io/StreamTokenizer;->forceLower:Z -Ljava/io/StreamTokenizer;->input:Ljava/io/InputStream; -Ljava/io/StreamTokenizer;->LINENO:I -Ljava/io/StreamTokenizer;->NEED_CHAR:I -Ljava/io/StreamTokenizer;->peekc:I -Ljava/io/StreamTokenizer;->pushedBack:Z -Ljava/io/StreamTokenizer;->read()I -Ljava/io/StreamTokenizer;->reader:Ljava/io/Reader; -Ljava/io/StreamTokenizer;->SKIP_LF:I -Ljava/io/StreamTokenizer;->slashSlashCommentsP:Z -Ljava/io/StreamTokenizer;->slashStarCommentsP:Z -Ljava/io/StreamTokenizer;->TT_NOTHING:I -Ljava/io/StringReader;->ensureOpen()V -Ljava/io/StringReader;->length:I -Ljava/io/StringReader;->mark:I -Ljava/io/StringReader;->next:I -Ljava/io/StringReader;->str:Ljava/lang/String; -Ljava/io/StringWriter;->buf:Ljava/lang/StringBuffer; -Ljava/io/Writer;->writeBuffer:[C -Ljava/io/Writer;->WRITE_BUFFER_SIZE:I -Ljava/lang/AbstractStringBuilder;-><init>()V -Ljava/lang/AbstractStringBuilder;-><init>(I)V -Ljava/lang/AbstractStringBuilder;->append(D)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->append(F)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->append(I)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->append(J)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->append(Ljava/lang/Object;)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->append(Ljava/lang/StringBuffer;)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->append(Z)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->append([C)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->append([CII)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->appendCodePoint(I)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->appendNull()Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->capacity()I -Ljava/lang/AbstractStringBuilder;->codePointAt(I)I -Ljava/lang/AbstractStringBuilder;->codePointBefore(I)I -Ljava/lang/AbstractStringBuilder;->codePointCount(II)I -Ljava/lang/AbstractStringBuilder;->count:I -Ljava/lang/AbstractStringBuilder;->delete(II)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->deleteCharAt(I)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->ensureCapacity(I)V -Ljava/lang/AbstractStringBuilder;->ensureCapacityInternal(I)V -Ljava/lang/AbstractStringBuilder;->getChars(II[CI)V -Ljava/lang/AbstractStringBuilder;->getValue()[C -Ljava/lang/AbstractStringBuilder;->hugeCapacity(I)I -Ljava/lang/AbstractStringBuilder;->indexOf(Ljava/lang/String;)I -Ljava/lang/AbstractStringBuilder;->indexOf(Ljava/lang/String;I)I -Ljava/lang/AbstractStringBuilder;->insert(IC)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->insert(ID)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->insert(IF)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->insert(II)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->insert(IJ)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->insert(ILjava/lang/CharSequence;)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->insert(ILjava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->insert(ILjava/lang/Object;)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->insert(ILjava/lang/String;)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->insert(IZ)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->insert(I[C)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->insert(I[CII)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->lastIndexOf(Ljava/lang/String;)I -Ljava/lang/AbstractStringBuilder;->lastIndexOf(Ljava/lang/String;I)I -Ljava/lang/AbstractStringBuilder;->MAX_ARRAY_SIZE:I -Ljava/lang/AbstractStringBuilder;->newCapacity(I)I -Ljava/lang/AbstractStringBuilder;->offsetByCodePoints(II)I -Ljava/lang/AbstractStringBuilder;->replace(IILjava/lang/String;)Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->reverse()Ljava/lang/AbstractStringBuilder; -Ljava/lang/AbstractStringBuilder;->reverseAllValidSurrogatePairs()V -Ljava/lang/AbstractStringBuilder;->setCharAt(IC)V -Ljava/lang/AbstractStringBuilder;->setLength(I)V -Ljava/lang/AbstractStringBuilder;->substring(I)Ljava/lang/String; -Ljava/lang/AbstractStringBuilder;->substring(II)Ljava/lang/String; -Ljava/lang/AbstractStringBuilder;->trimToSize()V -Ljava/lang/AndroidHardcodedSystemProperties;-><init>()V -Ljava/lang/AndroidHardcodedSystemProperties;->JAVA_VERSION:Ljava/lang/String; -Ljava/lang/AndroidHardcodedSystemProperties;->STATIC_PROPERTIES:[[Ljava/lang/String; -Ljava/lang/annotation/AnnotationTypeMismatchException;->element:Ljava/lang/reflect/Method; -Ljava/lang/annotation/AnnotationTypeMismatchException;->foundType:Ljava/lang/String; -Ljava/lang/annotation/IncompleteAnnotationException;->annotationType:Ljava/lang/Class; -Ljava/lang/annotation/IncompleteAnnotationException;->elementName:Ljava/lang/String; -Ljava/lang/ArrayIndexOutOfBoundsException;-><init>(II)V -Ljava/lang/ArrayIndexOutOfBoundsException;-><init>(III)V -Ljava/lang/AssertionError;-><init>(Ljava/lang/String;)V -Ljava/lang/Byte$ByteCache;-><init>()V -Ljava/lang/Byte$ByteCache;->cache:[Ljava/lang/Byte; -Ljava/lang/Byte;->DIGITS:[C -Ljava/lang/Byte;->UPPER_CASE_DIGITS:[C -Ljava/lang/Character$CharacterCache;-><init>()V -Ljava/lang/Character$CharacterCache;->cache:[Ljava/lang/Character; -Ljava/lang/Character$Subset;->name:Ljava/lang/String; -Ljava/lang/Character$UnicodeBlock;-><init>(Ljava/lang/String;)V -Ljava/lang/Character$UnicodeBlock;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Ljava/lang/Character$UnicodeBlock;-><init>(Ljava/lang/String;Z)V -Ljava/lang/Character$UnicodeBlock;->blocks:[Ljava/lang/Character$UnicodeBlock; -Ljava/lang/Character$UnicodeBlock;->blockStarts:[I -Ljava/lang/Character$UnicodeBlock;->map:Ljava/util/Map; -Ljava/lang/Character$UnicodeScript;->aliases:Ljava/util/HashMap; -Ljava/lang/Character$UnicodeScript;->scripts:[Ljava/lang/Character$UnicodeScript; -Ljava/lang/Character$UnicodeScript;->scriptStarts:[I -Ljava/lang/Character;->codePointAtImpl([CII)I -Ljava/lang/Character;->codePointBeforeImpl([CII)I -Ljava/lang/Character;->codePointCountImpl([CII)I -Ljava/lang/Character;->digitImpl(II)I -Ljava/lang/Character;->DIRECTIONALITY:[B -Ljava/lang/Character;->ERROR:I -Ljava/lang/Character;->getDirectionalityImpl(I)B -Ljava/lang/Character;->getNameImpl(I)Ljava/lang/String; -Ljava/lang/Character;->getNumericValueImpl(I)I -Ljava/lang/Character;->getTypeImpl(I)I -Ljava/lang/Character;->isAlphabeticImpl(I)Z -Ljava/lang/Character;->isDefinedImpl(I)Z -Ljava/lang/Character;->isDigitImpl(I)Z -Ljava/lang/Character;->isIdentifierIgnorableImpl(I)Z -Ljava/lang/Character;->isIdeographicImpl(I)Z -Ljava/lang/Character;->isLetterImpl(I)Z -Ljava/lang/Character;->isLetterOrDigitImpl(I)Z -Ljava/lang/Character;->isLowerCaseImpl(I)Z -Ljava/lang/Character;->isMirroredImpl(I)Z -Ljava/lang/Character;->isSpaceCharImpl(I)Z -Ljava/lang/Character;->isTitleCaseImpl(I)Z -Ljava/lang/Character;->isUnicodeIdentifierPartImpl(I)Z -Ljava/lang/Character;->isUnicodeIdentifierStartImpl(I)Z -Ljava/lang/Character;->isUpperCaseImpl(I)Z -Ljava/lang/Character;->isWhitespaceImpl(I)Z -Ljava/lang/Character;->offsetByCodePointsImpl([CIIII)I -Ljava/lang/Character;->toLowerCaseImpl(I)I -Ljava/lang/Character;->toSurrogates(I[CI)V -Ljava/lang/Character;->toTitleCaseImpl(I)I -Ljava/lang/Character;->toUpperCaseImpl(I)I -Ljava/lang/Class$Caches;-><init>()V -Ljava/lang/Class$Caches;->genericInterfaces:Llibcore/util/BasicLruCache; -Ljava/lang/Class;->ANNOTATION:I -Ljava/lang/Class;->cannotCastMsg(Ljava/lang/Object;)Ljava/lang/String; -Ljava/lang/Class;->classFlags:I -Ljava/lang/Class;->classForName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class; -Ljava/lang/Class;->classNameImpliesTopLevel()Z -Ljava/lang/Class;->classSize:I -Ljava/lang/Class;->componentType:Ljava/lang/Class; -Ljava/lang/Class;->copiedMethodsOffset:S -Ljava/lang/Class;->dexTypeIndex:I -Ljava/lang/Class;->ENUM:I -Ljava/lang/Class;->extData:Ldalvik/system/ClassExt; -Ljava/lang/Class;->FINALIZABLE:I -Ljava/lang/Class;->findInterfaceMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; -Ljava/lang/Class;->getAccessFlags()I -Ljava/lang/Class;->getConstructor0([Ljava/lang/Class;I)Ljava/lang/reflect/Constructor; -Ljava/lang/Class;->getDeclaredConstructorInternal([Ljava/lang/Class;)Ljava/lang/reflect/Constructor; -Ljava/lang/Class;->getDeclaredConstructorsInternal(Z)[Ljava/lang/reflect/Constructor; -Ljava/lang/Class;->getDeclaredFieldsUnchecked(Z)[Ljava/lang/reflect/Field; -Ljava/lang/Class;->getDeclaredMethodInternal(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; -Ljava/lang/Class;->getEnclosingConstructorNative()Ljava/lang/reflect/Constructor; -Ljava/lang/Class;->getEnclosingMethodNative()Ljava/lang/reflect/Method; -Ljava/lang/Class;->getEnumConstantsShared()[Ljava/lang/Object; -Ljava/lang/Class;->getInnerClassFlags(I)I -Ljava/lang/Class;->getInnerClassName()Ljava/lang/String; -Ljava/lang/Class;->getInstanceMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; -Ljava/lang/Class;->getInterfacesInternal()[Ljava/lang/Class; -Ljava/lang/Class;->getNameNative()Ljava/lang/String; -Ljava/lang/Class;->getPackageName$()Ljava/lang/String; -Ljava/lang/Class;->getPrimitiveClass(Ljava/lang/String;)Ljava/lang/Class; -Ljava/lang/Class;->getPublicDeclaredFields()[Ljava/lang/reflect/Field; -Ljava/lang/Class;->getPublicFieldRecursive(Ljava/lang/String;)Ljava/lang/reflect/Field; -Ljava/lang/Class;->getPublicFieldsRecursive(Ljava/util/List;)V -Ljava/lang/Class;->getPublicMethodRecursive(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method; -Ljava/lang/Class;->getPublicMethodsInternal(Ljava/util/List;)V -Ljava/lang/Class;->getSignatureAnnotation()[Ljava/lang/String; -Ljava/lang/Class;->getSignatureAttribute()Ljava/lang/String; -Ljava/lang/Class;->iFields:J -Ljava/lang/Class;->isDeclaredAnnotationPresent(Ljava/lang/Class;)Z -Ljava/lang/Class;->isFinalizable()Z -Ljava/lang/Class;->isLocalOrAnonymousClass()Z -Ljava/lang/Class;->isProxy()Z -Ljava/lang/Class;->methods:J -Ljava/lang/Class;->numReferenceInstanceFields:I -Ljava/lang/Class;->numReferenceStaticFields:I -Ljava/lang/Class;->objectSizeAllocFastPath:I -Ljava/lang/Class;->primitiveType:I -Ljava/lang/Class;->referenceInstanceOffsets:I -Ljava/lang/Class;->resolveName(Ljava/lang/String;)Ljava/lang/String; -Ljava/lang/Class;->sFields:J -Ljava/lang/Class;->superClass:Ljava/lang/Class; -Ljava/lang/Class;->SYNTHETIC:I -Ljava/lang/Class;->virtualMethodsOffset:S -Ljava/lang/Class;->vtable:Ljava/lang/Object; -Ljava/lang/ClassLoader$SystemClassLoader;-><init>()V -Ljava/lang/ClassLoader$SystemClassLoader;->loader:Ljava/lang/ClassLoader; -Ljava/lang/ClassLoader;-><init>(Ljava/lang/Void;Ljava/lang/ClassLoader;)V -Ljava/lang/ClassLoader;->allocator:J -Ljava/lang/ClassLoader;->checkCreateClassLoader()Ljava/lang/Void; -Ljava/lang/ClassLoader;->classTable:J -Ljava/lang/ClassLoader;->createSystemClassLoader()Ljava/lang/ClassLoader; -Ljava/lang/ClassLoader;->findBootstrapClassOrNull(Ljava/lang/String;)Ljava/lang/Class; -Ljava/lang/ClassLoader;->getBootstrapResource(Ljava/lang/String;)Ljava/net/URL; -Ljava/lang/ClassLoader;->getBootstrapResources(Ljava/lang/String;)Ljava/util/Enumeration; -Ljava/lang/ClassLoader;->packages:Ljava/util/HashMap; -Ljava/lang/ClassLoader;->proxyCache:Ljava/util/Map; -Ljava/lang/ClassNotFoundException;->ex:Ljava/lang/Throwable; -Ljava/lang/Compiler;-><init>()V -Ljava/lang/Daemons$Daemon;-><init>(Ljava/lang/String;)V -Ljava/lang/Daemons$Daemon;->getStackTrace()[Ljava/lang/StackTraceElement; -Ljava/lang/Daemons$Daemon;->interrupt()V -Ljava/lang/Daemons$Daemon;->interrupt(Ljava/lang/Thread;)V -Ljava/lang/Daemons$Daemon;->name:Ljava/lang/String; -Ljava/lang/Daemons$Daemon;->postZygoteFork:Z -Ljava/lang/Daemons$Daemon;->runInternal()V -Ljava/lang/Daemons$Daemon;->startInternal()V -Ljava/lang/Daemons$Daemon;->startPostZygoteFork()V -Ljava/lang/Daemons$FinalizerDaemon;-><init>()V -Ljava/lang/Daemons$FinalizerDaemon;->doFinalize(Ljava/lang/ref/FinalizerReference;)V -Ljava/lang/Daemons$FinalizerDaemon;->progressCounter:Ljava/util/concurrent/atomic/AtomicInteger; -Ljava/lang/Daemons$FinalizerDaemon;->queue:Ljava/lang/ref/ReferenceQueue; -Ljava/lang/Daemons$FinalizerDaemon;->runInternal()V -Ljava/lang/Daemons$FinalizerWatchdogDaemon;-><init>()V -Ljava/lang/Daemons$FinalizerWatchdogDaemon;->finalizerTimedOut(Ljava/lang/Object;)V -Ljava/lang/Daemons$FinalizerWatchdogDaemon;->getNeedToWork()Z -Ljava/lang/Daemons$FinalizerWatchdogDaemon;->goToSleep()V -Ljava/lang/Daemons$FinalizerWatchdogDaemon;->needToWork:Z -Ljava/lang/Daemons$FinalizerWatchdogDaemon;->runInternal()V -Ljava/lang/Daemons$FinalizerWatchdogDaemon;->sleepFor(J)Z -Ljava/lang/Daemons$FinalizerWatchdogDaemon;->sleepUntilNeeded()Z -Ljava/lang/Daemons$FinalizerWatchdogDaemon;->waitForFinalization()Ljava/lang/Object; -Ljava/lang/Daemons$FinalizerWatchdogDaemon;->wakeUp()V -Ljava/lang/Daemons$HeapTaskDaemon;-><init>()V -Ljava/lang/Daemons$HeapTaskDaemon;->INSTANCE:Ljava/lang/Daemons$HeapTaskDaemon; -Ljava/lang/Daemons$HeapTaskDaemon;->interrupt(Ljava/lang/Thread;)V -Ljava/lang/Daemons$HeapTaskDaemon;->runInternal()V -Ljava/lang/Daemons$ReferenceQueueDaemon;-><init>()V -Ljava/lang/Daemons$ReferenceQueueDaemon;->runInternal()V -Ljava/lang/Daemons;-><init>()V -Ljava/lang/Daemons;->NANOS_PER_MILLI:I -Ljava/lang/Daemons;->NANOS_PER_SECOND:I -Ljava/lang/Daemons;->requestGC()V -Ljava/lang/Daemons;->startPostZygoteFork()V -Ljava/lang/Enum;->sharedConstantsCache:Llibcore/util/BasicLruCache; -Ljava/lang/EnumConstantNotPresentException;->constantName:Ljava/lang/String; -Ljava/lang/EnumConstantNotPresentException;->enumType:Ljava/lang/Class; -Ljava/lang/ExceptionInInitializerError;->exception:Ljava/lang/Throwable; -Ljava/lang/InheritableThreadLocal;->createMap(Ljava/lang/Thread;Ljava/lang/Object;)V -Ljava/lang/InheritableThreadLocal;->getMap(Ljava/lang/Thread;)Ljava/lang/ThreadLocal$ThreadLocalMap; -Ljava/lang/Integer$IntegerCache;-><init>()V -Ljava/lang/Integer$IntegerCache;->cache:[Ljava/lang/Integer; -Ljava/lang/Integer$IntegerCache;->high:I -Ljava/lang/Integer$IntegerCache;->low:I -Ljava/lang/Integer;->DigitOnes:[C -Ljava/lang/Integer;->digits:[C -Ljava/lang/Integer;->DigitTens:[C -Ljava/lang/Integer;->formatUnsignedInt(II[CII)I -Ljava/lang/Integer;->getChars(II[C)V -Ljava/lang/Integer;->sizeTable:[I -Ljava/lang/Integer;->SMALL_NEG_VALUES:[Ljava/lang/String; -Ljava/lang/Integer;->SMALL_NONNEG_VALUES:[Ljava/lang/String; -Ljava/lang/Integer;->stringSize(I)I -Ljava/lang/Integer;->toUnsignedString0(II)Ljava/lang/String; -Ljava/lang/invoke/CallSite;-><init>(Ljava/lang/invoke/MethodHandle;)V -Ljava/lang/invoke/CallSite;-><init>(Ljava/lang/invoke/MethodType;)V -Ljava/lang/invoke/CallSite;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;)V -Ljava/lang/invoke/CallSite;->checkTargetChange(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V -Ljava/lang/invoke/CallSite;->getTargetVolatile()Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/CallSite;->GET_TARGET:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/CallSite;->initializeGetTarget()V -Ljava/lang/invoke/CallSite;->makeDynamicInvoker()Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/CallSite;->setTargetNormal(Ljava/lang/invoke/MethodHandle;)V -Ljava/lang/invoke/CallSite;->setTargetVolatile(Ljava/lang/invoke/MethodHandle;)V -Ljava/lang/invoke/CallSite;->target:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/CallSite;->TARGET_OFFSET:J -Ljava/lang/invoke/CallSite;->wrongTargetType(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/WrongMethodTypeException; -Ljava/lang/invoke/ConstantCallSite;->isFrozen:Z -Ljava/lang/invoke/MethodHandle;-><init>(JILjava/lang/invoke/MethodType;)V -Ljava/lang/invoke/MethodHandle;->artFieldOrMethod:J -Ljava/lang/invoke/MethodHandle;->asCollectorChecks(Ljava/lang/Class;I)Z -Ljava/lang/invoke/MethodHandle;->asSpreaderChecks(Ljava/lang/Class;I)Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodHandle;->cachedSpreadInvoker:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodHandle;->duplicate()Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodHandle;->getHandleKind()I -Ljava/lang/invoke/MethodHandle;->handleKind:I -Ljava/lang/invoke/MethodHandle;->IGET:I -Ljava/lang/invoke/MethodHandle;->INVOKE_CALLSITE_TRANSFORM:I -Ljava/lang/invoke/MethodHandle;->INVOKE_DIRECT:I -Ljava/lang/invoke/MethodHandle;->INVOKE_INTERFACE:I -Ljava/lang/invoke/MethodHandle;->INVOKE_STATIC:I -Ljava/lang/invoke/MethodHandle;->INVOKE_SUPER:I -Ljava/lang/invoke/MethodHandle;->INVOKE_TRANSFORM:I -Ljava/lang/invoke/MethodHandle;->INVOKE_VAR_HANDLE:I -Ljava/lang/invoke/MethodHandle;->INVOKE_VAR_HANDLE_EXACT:I -Ljava/lang/invoke/MethodHandle;->INVOKE_VIRTUAL:I -Ljava/lang/invoke/MethodHandle;->IPUT:I -Ljava/lang/invoke/MethodHandle;->nominalType:Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodHandle;->SGET:I -Ljava/lang/invoke/MethodHandle;->spreadArrayChecks(Ljava/lang/Class;I)V -Ljava/lang/invoke/MethodHandle;->SPUT:I -Ljava/lang/invoke/MethodHandle;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/MethodHandle;->transformInternal(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/MethodHandle;->type:Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodHandleImpl$HandleInfo;-><init>(Ljava/lang/reflect/Member;Ljava/lang/invoke/MethodHandle;)V -Ljava/lang/invoke/MethodHandleImpl$HandleInfo;->handle:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodHandleImpl$HandleInfo;->member:Ljava/lang/reflect/Member; -Ljava/lang/invoke/MethodHandleImpl;-><init>(JILjava/lang/invoke/MethodType;)V -Ljava/lang/invoke/MethodHandleImpl;->getMemberInternal()Ljava/lang/reflect/Member; -Ljava/lang/invoke/MethodHandleImpl;->info:Ljava/lang/invoke/MethodHandleImpl$HandleInfo; -Ljava/lang/invoke/MethodHandleImpl;->reveal()Ljava/lang/invoke/MethodHandleInfo; -Ljava/lang/invoke/MethodHandles$Lookup;-><init>(Ljava/lang/Class;)V -Ljava/lang/invoke/MethodHandles$Lookup;->accessFailedMessage(Ljava/lang/Class;Ljava/lang/Class;I)Ljava/lang/String; -Ljava/lang/invoke/MethodHandles$Lookup;->allowedModes:I -Ljava/lang/invoke/MethodHandles$Lookup;->ALL_MODES:I -Ljava/lang/invoke/MethodHandles$Lookup;->checkAccess(Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/String;)V -Ljava/lang/invoke/MethodHandles$Lookup;->checkReturnType(Ljava/lang/reflect/Method;Ljava/lang/invoke/MethodType;)V -Ljava/lang/invoke/MethodHandles$Lookup;->checkSpecialCaller(Ljava/lang/Class;)V -Ljava/lang/invoke/MethodHandles$Lookup;->checkUnprivilegedlookupClass(Ljava/lang/Class;I)V -Ljava/lang/invoke/MethodHandles$Lookup;->commonFieldChecks(Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/Class;ZZ)V -Ljava/lang/invoke/MethodHandles$Lookup;->createMethodHandle(Ljava/lang/reflect/Method;ILjava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodHandles$Lookup;->createMethodHandleForConstructor(Ljava/lang/reflect/Constructor;)Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodHandles$Lookup;->findAccessor(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;I)Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodHandles$Lookup;->findAccessor(Ljava/lang/reflect/Field;Ljava/lang/Class;Ljava/lang/Class;IZ)Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodHandles$Lookup;->findFieldOfType(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Field; -Ljava/lang/invoke/MethodHandles$Lookup;->findSpecial(Ljava/lang/reflect/Method;Ljava/lang/invoke/MethodType;Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodHandles$Lookup;->findStaticVarHandle(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/VarHandle; -Ljava/lang/invoke/MethodHandles$Lookup;->findVarHandle(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/invoke/VarHandle; -Ljava/lang/invoke/MethodHandles$Lookup;->findVirtualForMH(Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodHandles$Lookup;->findVirtualForVH(Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodHandles$Lookup;->fixmods(I)I -Ljava/lang/invoke/MethodHandles$Lookup;->hasPrivateAccess()Z -Ljava/lang/invoke/MethodHandles$Lookup;->initMethodType(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodHandles$Lookup;->lookupClass:Ljava/lang/Class; -Ljava/lang/invoke/MethodHandles$Lookup;->PUBLIC_LOOKUP:Ljava/lang/invoke/MethodHandles$Lookup; -Ljava/lang/invoke/MethodHandles$Lookup;->throwMakeAccessException(Ljava/lang/String;Ljava/lang/Object;)V -Ljava/lang/invoke/MethodHandles$Lookup;->unreflectVarHandle(Ljava/lang/reflect/Field;)Ljava/lang/invoke/VarHandle; -Ljava/lang/invoke/MethodHandles;-><init>()V -Ljava/lang/invoke/MethodHandles;->arrayElementGetter([BI)B -Ljava/lang/invoke/MethodHandles;->arrayElementGetter([CI)C -Ljava/lang/invoke/MethodHandles;->arrayElementGetter([DI)D -Ljava/lang/invoke/MethodHandles;->arrayElementGetter([FI)F -Ljava/lang/invoke/MethodHandles;->arrayElementGetter([II)I -Ljava/lang/invoke/MethodHandles;->arrayElementGetter([JI)J -Ljava/lang/invoke/MethodHandles;->arrayElementGetter([SI)S -Ljava/lang/invoke/MethodHandles;->arrayElementGetter([ZI)Z -Ljava/lang/invoke/MethodHandles;->arrayElementSetter([BIB)V -Ljava/lang/invoke/MethodHandles;->arrayElementSetter([CIC)V -Ljava/lang/invoke/MethodHandles;->arrayElementSetter([DID)V -Ljava/lang/invoke/MethodHandles;->arrayElementSetter([FIF)V -Ljava/lang/invoke/MethodHandles;->arrayElementSetter([III)V -Ljava/lang/invoke/MethodHandles;->arrayElementSetter([JIJ)V -Ljava/lang/invoke/MethodHandles;->arrayElementSetter([SIS)V -Ljava/lang/invoke/MethodHandles;->arrayElementSetter([ZIZ)V -Ljava/lang/invoke/MethodHandles;->arrayElementVarHandle(Ljava/lang/Class;)Ljava/lang/invoke/VarHandle; -Ljava/lang/invoke/MethodHandles;->byteArrayViewVarHandle(Ljava/lang/Class;Ljava/nio/ByteOrder;)Ljava/lang/invoke/VarHandle; -Ljava/lang/invoke/MethodHandles;->byteBufferViewVarHandle(Ljava/lang/Class;Ljava/nio/ByteOrder;)Ljava/lang/invoke/VarHandle; -Ljava/lang/invoke/MethodHandles;->checkClassIsArray(Ljava/lang/Class;)V -Ljava/lang/invoke/MethodHandles;->checkTypeIsViewable(Ljava/lang/Class;)V -Ljava/lang/invoke/MethodHandles;->collectArgumentsChecks(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodHandles;->copyTypes(Ljava/util/List;)Ljava/util/List; -Ljava/lang/invoke/MethodHandles;->dropArgumentChecks(Ljava/lang/invoke/MethodType;ILjava/util/List;)I -Ljava/lang/invoke/MethodHandles;->explicitCastArgumentsChecks(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V -Ljava/lang/invoke/MethodHandles;->filterArgumentChecks(Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodHandle;)V -Ljava/lang/invoke/MethodHandles;->filterArgumentsCheckArity(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)V -Ljava/lang/invoke/MethodHandles;->filterReturnValueChecks(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)V -Ljava/lang/invoke/MethodHandles;->foldArgumentChecks(ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/Class; -Ljava/lang/invoke/MethodHandles;->getMethodHandleImpl(Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodHandleImpl; -Ljava/lang/invoke/MethodHandles;->identity(B)B -Ljava/lang/invoke/MethodHandles;->identity(C)C -Ljava/lang/invoke/MethodHandles;->identity(D)D -Ljava/lang/invoke/MethodHandles;->identity(F)F -Ljava/lang/invoke/MethodHandles;->identity(I)I -Ljava/lang/invoke/MethodHandles;->identity(J)J -Ljava/lang/invoke/MethodHandles;->identity(S)S -Ljava/lang/invoke/MethodHandles;->identity(Z)Z -Ljava/lang/invoke/MethodHandles;->insertArgumentsChecks(Ljava/lang/invoke/MethodHandle;II)[Ljava/lang/Class; -Ljava/lang/invoke/MethodHandles;->methodHandleForVarHandleAccessor(Ljava/lang/invoke/VarHandle$AccessMode;Ljava/lang/invoke/MethodType;Z)Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodHandles;->misMatchedTypes(Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/RuntimeException; -Ljava/lang/invoke/MethodHandles;->permuteArgumentChecks([ILjava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Z -Ljava/lang/invoke/MethodHandles;->varHandleExactInvoker(Ljava/lang/invoke/VarHandle$AccessMode;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodHandles;->varHandleInvoker(Ljava/lang/invoke/VarHandle$AccessMode;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;-><init>(Ljava/lang/Object;)V -Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V -Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;->hashcode:I -Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;-><init>()V -Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->add(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->expungeStaleElements()V -Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->get(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->map:Ljava/util/concurrent/ConcurrentMap; -Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet;->stale:Ljava/lang/ref/ReferenceQueue; -Ljava/lang/invoke/MethodType;-><init>()V -Ljava/lang/invoke/MethodType;-><init>(Ljava/lang/Class;[Ljava/lang/Class;Z)V -Ljava/lang/invoke/MethodType;-><init>([Ljava/lang/Class;Ljava/lang/Class;)V -Ljava/lang/invoke/MethodType;->asCollectorType(Ljava/lang/Class;I)Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodType;->asSpreaderType(Ljava/lang/Class;I)Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodType;->basicType()Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodType;->canConvert(Ljava/lang/Class;Ljava/lang/Class;)Z -Ljava/lang/invoke/MethodType;->canConvertParameters([Ljava/lang/Class;[Ljava/lang/Class;)Z -Ljava/lang/invoke/MethodType;->checkPtype(Ljava/lang/Class;)V -Ljava/lang/invoke/MethodType;->checkPtypes([Ljava/lang/Class;)I -Ljava/lang/invoke/MethodType;->checkRtype(Ljava/lang/Class;)V -Ljava/lang/invoke/MethodType;->checkSlotCount(I)V -Ljava/lang/invoke/MethodType;->equals(Ljava/lang/invoke/MethodType;)Z -Ljava/lang/invoke/MethodType;->explicitCastEquivalentToAsType(Ljava/lang/Class;Ljava/lang/Class;)Z -Ljava/lang/invoke/MethodType;->explicitCastEquivalentToAsType(Ljava/lang/invoke/MethodType;)Z -Ljava/lang/invoke/MethodType;->form()Ljava/lang/invoke/MethodTypeForm; -Ljava/lang/invoke/MethodType;->form:Ljava/lang/invoke/MethodTypeForm; -Ljava/lang/invoke/MethodType;->internTable:Ljava/lang/invoke/MethodType$ConcurrentWeakInternSet; -Ljava/lang/invoke/MethodType;->invokerType()Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodType;->isConvertibleTo(Ljava/lang/invoke/MethodType;)Z -Ljava/lang/invoke/MethodType;->isGeneric()Z -Ljava/lang/invoke/MethodType;->lastParameterType()Ljava/lang/Class; -Ljava/lang/invoke/MethodType;->leadingReferenceParameter()Ljava/lang/Class; -Ljava/lang/invoke/MethodType;->listToArray(Ljava/util/List;)[Ljava/lang/Class; -Ljava/lang/invoke/MethodType;->makeImpl(Ljava/lang/Class;[Ljava/lang/Class;Z)Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodType;->MAX_JVM_ARITY:I -Ljava/lang/invoke/MethodType;->MAX_MH_ARITY:I -Ljava/lang/invoke/MethodType;->MAX_MH_INVOKER_ARITY:I -Ljava/lang/invoke/MethodType;->methodDescriptor:Ljava/lang/String; -Ljava/lang/invoke/MethodType;->MethodType_init(Ljava/lang/Class;[Ljava/lang/Class;)V -Ljava/lang/invoke/MethodType;->newIndexOutOfBoundsException(Ljava/lang/Object;)Ljava/lang/IndexOutOfBoundsException; -Ljava/lang/invoke/MethodType;->NO_PTYPES:[Ljava/lang/Class; -Ljava/lang/invoke/MethodType;->objectOnlyTypes:[Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodType;->parameterSlotCount()I -Ljava/lang/invoke/MethodType;->ptypes()[Ljava/lang/Class; -Ljava/lang/invoke/MethodType;->ptypes:[Ljava/lang/Class; -Ljava/lang/invoke/MethodType;->ptypesOffset:J -Ljava/lang/invoke/MethodType;->rtype()Ljava/lang/Class; -Ljava/lang/invoke/MethodType;->rtype:Ljava/lang/Class; -Ljava/lang/invoke/MethodType;->rtypeOffset:J -Ljava/lang/invoke/MethodType;->toFieldDescriptorString(Ljava/lang/Class;)Ljava/lang/String; -Ljava/lang/invoke/MethodType;->unwrapWithNoPrims(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodType;->wrapAlt:Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodType;->wrapWithPrims(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodTypeForm;-><init>(Ljava/lang/invoke/MethodType;)V -Ljava/lang/invoke/MethodTypeForm;->argCounts:J -Ljava/lang/invoke/MethodTypeForm;->argSlotToParameter(I)I -Ljava/lang/invoke/MethodTypeForm;->argToSlotTable:[I -Ljava/lang/invoke/MethodTypeForm;->assertIsBasicType()Z -Ljava/lang/invoke/MethodTypeForm;->basicType()Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodTypeForm;->basicType:Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodTypeForm;->canonicalize(Ljava/lang/Class;I)Ljava/lang/Class; -Ljava/lang/invoke/MethodTypeForm;->canonicalize(Ljava/lang/invoke/MethodType;II)Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodTypeForm;->canonicalizeAll([Ljava/lang/Class;I)[Ljava/lang/Class; -Ljava/lang/invoke/MethodTypeForm;->ERASE:I -Ljava/lang/invoke/MethodTypeForm;->erasedType()Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodTypeForm;->erasedType:Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/MethodTypeForm;->findForm(Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodTypeForm; -Ljava/lang/invoke/MethodTypeForm;->hasLongPrimitives()Z -Ljava/lang/invoke/MethodTypeForm;->hasNonVoidPrimitives()Z -Ljava/lang/invoke/MethodTypeForm;->hasPrimitives()Z -Ljava/lang/invoke/MethodTypeForm;->INTS:I -Ljava/lang/invoke/MethodTypeForm;->longPrimitiveParameterCount()I -Ljava/lang/invoke/MethodTypeForm;->longPrimitiveReturnCount()I -Ljava/lang/invoke/MethodTypeForm;->LONGS:I -Ljava/lang/invoke/MethodTypeForm;->NO_CHANGE:I -Ljava/lang/invoke/MethodTypeForm;->pack(IIII)J -Ljava/lang/invoke/MethodTypeForm;->parameterCount()I -Ljava/lang/invoke/MethodTypeForm;->parameterSlotCount()I -Ljava/lang/invoke/MethodTypeForm;->parameterToArgSlot(I)I -Ljava/lang/invoke/MethodTypeForm;->primCounts:J -Ljava/lang/invoke/MethodTypeForm;->primitiveParameterCount()I -Ljava/lang/invoke/MethodTypeForm;->primitiveReturnCount()I -Ljava/lang/invoke/MethodTypeForm;->RAW_RETURN:I -Ljava/lang/invoke/MethodTypeForm;->returnCount()I -Ljava/lang/invoke/MethodTypeForm;->returnSlotCount()I -Ljava/lang/invoke/MethodTypeForm;->slotToArgTable:[I -Ljava/lang/invoke/MethodTypeForm;->unpack(JI)C -Ljava/lang/invoke/MethodTypeForm;->UNWRAP:I -Ljava/lang/invoke/MethodTypeForm;->WRAP:I -Ljava/lang/invoke/Transformers$AlwaysThrow;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$AlwaysThrow;->exceptionType:Ljava/lang/Class; -Ljava/lang/invoke/Transformers$AlwaysThrow;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$BindTo;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/Object;)V -Ljava/lang/invoke/Transformers$BindTo;->delegate:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$BindTo;->range:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$BindTo;->receiver:Ljava/lang/Object; -Ljava/lang/invoke/Transformers$BindTo;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$CatchException;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$CatchException;->exType:Ljava/lang/Class; -Ljava/lang/invoke/Transformers$CatchException;->handler:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$CatchException;->handlerArgsRange:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$CatchException;->target:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$CatchException;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$CollectArguments;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;ILjava/lang/invoke/MethodType;)V -Ljava/lang/invoke/Transformers$CollectArguments;->collector:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$CollectArguments;->collectorRange:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$CollectArguments;->pos:I -Ljava/lang/invoke/Transformers$CollectArguments;->range1:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$CollectArguments;->range2:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$CollectArguments;->referencesOffset:I -Ljava/lang/invoke/Transformers$CollectArguments;->stackFrameOffset:I -Ljava/lang/invoke/Transformers$CollectArguments;->target:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$CollectArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$Collector;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/Class;I)V -Ljava/lang/invoke/Transformers$Collector;->arrayOffset:I -Ljava/lang/invoke/Transformers$Collector;->arrayTypeChar:C -Ljava/lang/invoke/Transformers$Collector;->copyRange:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$Collector;->numArrayArgs:I -Ljava/lang/invoke/Transformers$Collector;->target:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$Collector;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$Constant;-><init>(Ljava/lang/Class;Ljava/lang/Object;)V -Ljava/lang/invoke/Transformers$Constant;->asDouble:D -Ljava/lang/invoke/Transformers$Constant;->asFloat:F -Ljava/lang/invoke/Transformers$Constant;->asInt:I -Ljava/lang/invoke/Transformers$Constant;->asLong:J -Ljava/lang/invoke/Transformers$Constant;->asReference:Ljava/lang/Object; -Ljava/lang/invoke/Transformers$Constant;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$Constant;->type:Ljava/lang/Class; -Ljava/lang/invoke/Transformers$Constant;->typeChar:C -Ljava/lang/invoke/Transformers$Construct;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V -Ljava/lang/invoke/Transformers$Construct;->callerRange:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$Construct;->checkInstantiable(Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$Construct;->constructorHandle:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$Construct;->getConstructorHandle()Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$Construct;->isAbstract(Ljava/lang/Class;)Z -Ljava/lang/invoke/Transformers$Construct;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$DropArguments;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;II)V -Ljava/lang/invoke/Transformers$DropArguments;->delegate:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$DropArguments;->range1:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$DropArguments;->range2:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$DropArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$ExplicitCastArguments;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)V -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->box(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCast(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastArguments(Ldalvik/system/EmulatedStackFrame;Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastFromBoolean(ZLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastPrimitives(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastReturnValue(Ldalvik/system/EmulatedStackFrame;Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->explicitCastToBoolean(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;)V -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsByte(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)B -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsChar(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)C -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsDouble(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)D -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsFloat(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)F -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsInt(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)I -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsLong(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)J -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->readPrimitiveAsShort(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ljava/lang/Class;)S -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->target:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->throwUnexpectedType(Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->toBoolean(B)Z -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->unbox(Ljava/lang/Object;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->unboxNonNull(Ljava/lang/Object;Ljava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$ExplicitCastArguments;->unboxNull(Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$FilterArguments;-><init>(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)V -Ljava/lang/invoke/Transformers$FilterArguments;->deriveType(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/Transformers$FilterArguments;->filters:[Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$FilterArguments;->pos:I -Ljava/lang/invoke/Transformers$FilterArguments;->target:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$FilterArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$FilterReturnValue;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V -Ljava/lang/invoke/Transformers$FilterReturnValue;->allArgs:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$FilterReturnValue;->filter:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$FilterReturnValue;->target:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$FilterReturnValue;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$FoldArguments;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V -Ljava/lang/invoke/Transformers$FoldArguments;->combiner:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$FoldArguments;->combinerArgs:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$FoldArguments;->deriveType(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/Transformers$FoldArguments;->referencesOffset:I -Ljava/lang/invoke/Transformers$FoldArguments;->stackFrameOffset:I -Ljava/lang/invoke/Transformers$FoldArguments;->target:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$FoldArguments;->targetArgs:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$FoldArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$GuardWithTest;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodHandle;)V -Ljava/lang/invoke/Transformers$GuardWithTest;->fallback:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$GuardWithTest;->target:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$GuardWithTest;->test:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$GuardWithTest;->testArgsRange:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$GuardWithTest;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$InsertArguments;-><init>(Ljava/lang/invoke/MethodHandle;I[Ljava/lang/Object;)V -Ljava/lang/invoke/Transformers$InsertArguments;->pos:I -Ljava/lang/invoke/Transformers$InsertArguments;->range1:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$InsertArguments;->range2:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$InsertArguments;->target:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$InsertArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$InsertArguments;->values:[Ljava/lang/Object; -Ljava/lang/invoke/Transformers$Invoker;-><init>(Ljava/lang/invoke/MethodType;Z)V -Ljava/lang/invoke/Transformers$Invoker;->copyRange:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$Invoker;->isExactInvoker:Z -Ljava/lang/invoke/Transformers$Invoker;->targetType:Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/Transformers$Invoker;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$PermuteArguments;-><init>(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;[I)V -Ljava/lang/invoke/Transformers$PermuteArguments;->reorder:[I -Ljava/lang/invoke/Transformers$PermuteArguments;->target:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$PermuteArguments;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter;-><init>(Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter;->arrayClass:Ljava/lang/Class; -Ljava/lang/invoke/Transformers$ReferenceArrayElementGetter;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter;-><init>(Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter;->arrayClass:Ljava/lang/Class; -Ljava/lang/invoke/Transformers$ReferenceArrayElementSetter;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$ReferenceIdentity;-><init>(Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$ReferenceIdentity;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$ReferenceIdentity;->type:Ljava/lang/Class; -Ljava/lang/invoke/Transformers$Spreader;-><init>(Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;I)V -Ljava/lang/invoke/Transformers$Spreader;->arrayOffset:I -Ljava/lang/invoke/Transformers$Spreader;->arrayTypeChar:C -Ljava/lang/invoke/Transformers$Spreader;->copyRange:Ldalvik/system/EmulatedStackFrame$Range; -Ljava/lang/invoke/Transformers$Spreader;->numArrayArgs:I -Ljava/lang/invoke/Transformers$Spreader;->spreadArray([BLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V -Ljava/lang/invoke/Transformers$Spreader;->spreadArray([CLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V -Ljava/lang/invoke/Transformers$Spreader;->spreadArray([DLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V -Ljava/lang/invoke/Transformers$Spreader;->spreadArray([FLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V -Ljava/lang/invoke/Transformers$Spreader;->spreadArray([ILdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V -Ljava/lang/invoke/Transformers$Spreader;->spreadArray([JLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V -Ljava/lang/invoke/Transformers$Spreader;->spreadArray([Ljava/lang/Object;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V -Ljava/lang/invoke/Transformers$Spreader;->spreadArray([SLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V -Ljava/lang/invoke/Transformers$Spreader;->spreadArray([ZLdalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/invoke/MethodType;II)V -Ljava/lang/invoke/Transformers$Spreader;->target:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$Spreader;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$Transformer;-><init>(Ljava/lang/invoke/MethodType;)V -Ljava/lang/invoke/Transformers$Transformer;-><init>(Ljava/lang/invoke/MethodType;I)V -Ljava/lang/invoke/Transformers$VarargsCollector;-><init>(Ljava/lang/invoke/MethodHandle;)V -Ljava/lang/invoke/Transformers$VarargsCollector;->arityArgumentsConvertible([Ljava/lang/Class;ILjava/lang/Class;)Z -Ljava/lang/invoke/Transformers$VarargsCollector;->booleanArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object; -Ljava/lang/invoke/Transformers$VarargsCollector;->byteArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object; -Ljava/lang/invoke/Transformers$VarargsCollector;->charArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object; -Ljava/lang/invoke/Transformers$VarargsCollector;->collectArguments(CLjava/lang/Class;Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object; -Ljava/lang/invoke/Transformers$VarargsCollector;->copyParameter(Ldalvik/system/EmulatedStackFrame$StackFrameReader;Ldalvik/system/EmulatedStackFrame$StackFrameWriter;Ljava/lang/Class;)V -Ljava/lang/invoke/Transformers$VarargsCollector;->doubleArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object; -Ljava/lang/invoke/Transformers$VarargsCollector;->floatArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object; -Ljava/lang/invoke/Transformers$VarargsCollector;->intArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object; -Ljava/lang/invoke/Transformers$VarargsCollector;->lastParameterTypeIsAnArray([Ljava/lang/Class;)Z -Ljava/lang/invoke/Transformers$VarargsCollector;->longArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object; -Ljava/lang/invoke/Transformers$VarargsCollector;->makeArityArray(Ljava/lang/invoke/MethodType;Ldalvik/system/EmulatedStackFrame$StackFrameReader;ILjava/lang/Class;)Ljava/lang/Object; -Ljava/lang/invoke/Transformers$VarargsCollector;->makeTargetFrameType(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/Transformers$VarargsCollector;->prepareFrame(Ldalvik/system/EmulatedStackFrame;Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers$VarargsCollector;->referenceArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;Ljava/lang/Class;II)Ljava/lang/Object; -Ljava/lang/invoke/Transformers$VarargsCollector;->shortArray(Ldalvik/system/EmulatedStackFrame$StackFrameReader;[Ljava/lang/Class;II)Ljava/lang/Object; -Ljava/lang/invoke/Transformers$VarargsCollector;->target:Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/Transformers$VarargsCollector;->throwWrongMethodTypeException(Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;)V -Ljava/lang/invoke/Transformers$VarargsCollector;->transform(Ldalvik/system/EmulatedStackFrame;)V -Ljava/lang/invoke/Transformers;-><init>()V -Ljava/lang/invoke/Transformers;->TRANSFORM_INTERNAL:Ljava/lang/reflect/Method; -Ljava/lang/invoke/VarHandle$AccessMode;->at:Ljava/lang/invoke/VarHandle$AccessType; -Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_EXCHANGE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_EXCHANGE_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_EXCHANGE_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->COMPARE_AND_SET:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_ADD:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_ADD_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_ADD_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_AND:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_AND_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_AND_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_OR:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_OR_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_OR_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_XOR:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_XOR_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_BITWISE_XOR_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_SET:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_SET_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_AND_SET_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_OPAQUE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->GET_VOLATILE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->methodName()Ljava/lang/String; -Ljava/lang/invoke/VarHandle$AccessMode;->methodName:Ljava/lang/String; -Ljava/lang/invoke/VarHandle$AccessMode;->methodNameToAccessMode:Ljava/util/Map; -Ljava/lang/invoke/VarHandle$AccessMode;->SET:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->SET_OPAQUE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->SET_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->SET_VOLATILE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->valueFromMethodName(Ljava/lang/String;)Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->valueOf(Ljava/lang/String;)Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->values()[Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET_ACQUIRE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET_PLAIN:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessMode;->WEAK_COMPARE_AND_SET_RELEASE:Ljava/lang/invoke/VarHandle$AccessMode; -Ljava/lang/invoke/VarHandle$AccessType;->COMPARE_AND_EXCHANGE:Ljava/lang/invoke/VarHandle$AccessType; -Ljava/lang/invoke/VarHandle$AccessType;->COMPARE_AND_SWAP:Ljava/lang/invoke/VarHandle$AccessType; -Ljava/lang/invoke/VarHandle$AccessType;->GET:Ljava/lang/invoke/VarHandle$AccessType; -Ljava/lang/invoke/VarHandle$AccessType;->GET_AND_UPDATE:Ljava/lang/invoke/VarHandle$AccessType; -Ljava/lang/invoke/VarHandle$AccessType;->GET_AND_UPDATE_BITWISE:Ljava/lang/invoke/VarHandle$AccessType; -Ljava/lang/invoke/VarHandle$AccessType;->GET_AND_UPDATE_NUMERIC:Ljava/lang/invoke/VarHandle$AccessType; -Ljava/lang/invoke/VarHandle$AccessType;->SET:Ljava/lang/invoke/VarHandle$AccessType; -Ljava/lang/invoke/VarHandle$AccessType;->valueOf(Ljava/lang/String;)Ljava/lang/invoke/VarHandle$AccessType; -Ljava/lang/invoke/VarHandle$AccessType;->values()[Ljava/lang/invoke/VarHandle$AccessType; -Ljava/lang/invoke/VarHandle;-><init>(Ljava/lang/Class;Ljava/lang/Class;ZLjava/lang/Class;Ljava/lang/Class;)V -Ljava/lang/invoke/VarHandle;-><init>(Ljava/lang/Class;Z)V -Ljava/lang/invoke/VarHandle;-><init>(Ljava/lang/Class;ZLjava/lang/Class;)V -Ljava/lang/invoke/VarHandle;->accessModesBitMask:I -Ljava/lang/invoke/VarHandle;->accessModeType(Ljava/lang/invoke/VarHandle$AccessMode;)Ljava/lang/invoke/MethodType; -Ljava/lang/invoke/VarHandle;->accessTypesToBitMask(Ljava/util/EnumSet;)I -Ljava/lang/invoke/VarHandle;->alignedAccessModesBitMask(Ljava/lang/Class;Z)I -Ljava/lang/invoke/VarHandle;->ALL_MODES_BIT_MASK:I -Ljava/lang/invoke/VarHandle;->ATOMIC_UPDATE_ACCESS_MODES_BIT_MASK:I -Ljava/lang/invoke/VarHandle;->BITWISE_ATOMIC_UPDATE_ACCESS_MODES_BIT_MASK:I -Ljava/lang/invoke/VarHandle;->coordinateType0:Ljava/lang/Class; -Ljava/lang/invoke/VarHandle;->coordinateType1:Ljava/lang/Class; -Ljava/lang/invoke/VarHandle;->coordinateTypes()Ljava/util/List; -Ljava/lang/invoke/VarHandle;->isAccessModeSupported(Ljava/lang/invoke/VarHandle$AccessMode;)Z -Ljava/lang/invoke/VarHandle;->NUMERIC_ATOMIC_UPDATE_ACCESS_MODES_BIT_MASK:I -Ljava/lang/invoke/VarHandle;->READ_ACCESS_MODES_BIT_MASK:I -Ljava/lang/invoke/VarHandle;->toMethodHandle(Ljava/lang/invoke/VarHandle$AccessMode;)Ljava/lang/invoke/MethodHandle; -Ljava/lang/invoke/VarHandle;->unalignedAccessModesBitMask(Ljava/lang/Class;)I -Ljava/lang/invoke/VarHandle;->UNSAFE:Lsun/misc/Unsafe; -Ljava/lang/invoke/VarHandle;->varType()Ljava/lang/Class; -Ljava/lang/invoke/VarHandle;->varType:Ljava/lang/Class; -Ljava/lang/invoke/VarHandle;->WRITE_ACCESS_MODES_BIT_MASK:I -Ljava/lang/invoke/WrongMethodTypeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V -Ljava/lang/invoke/WrongMethodTypeException;-><init>(Ljava/lang/Throwable;)V -Ljava/lang/Long$LongCache;-><init>()V -Ljava/lang/Long$LongCache;->cache:[Ljava/lang/Long; -Ljava/lang/Long;->formatUnsignedLong(JI[CII)I -Ljava/lang/Long;->getChars(JI[C)V -Ljava/lang/Long;->stringSize(J)I -Ljava/lang/Long;->toUnsignedBigInteger(J)Ljava/math/BigInteger; -Ljava/lang/Long;->toUnsignedString0(JI)Ljava/lang/String; -Ljava/lang/Math$RandomNumberGeneratorHolder;-><init>()V -Ljava/lang/Math$RandomNumberGeneratorHolder;->randomNumberGenerator:Ljava/util/Random; -Ljava/lang/Math;-><init>()V -Ljava/lang/Math;->negativeZeroDoubleBits:J -Ljava/lang/Math;->negativeZeroFloatBits:J -Ljava/lang/Math;->powerOfTwoD(I)D -Ljava/lang/Math;->powerOfTwoF(I)F -Ljava/lang/Math;->randomIntInternal()I -Ljava/lang/Math;->randomLongInternal()J -Ljava/lang/Math;->setRandomSeedInternal(J)V -Ljava/lang/Math;->twoToTheDoubleScaleDown:D -Ljava/lang/Math;->twoToTheDoubleScaleUp:D -Ljava/lang/NoClassDefFoundError;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V -Ljava/lang/NumberFormatException;->forInputString(Ljava/lang/String;)Ljava/lang/NumberFormatException; -Ljava/lang/Object;->identityHashCodeNative(Ljava/lang/Object;)I -Ljava/lang/Object;->internalClone()Ljava/lang/Object; -Ljava/lang/Object;->shadow$_klass_:Ljava/lang/Class; -Ljava/lang/Object;->shadow$_monitor_:I -Ljava/lang/Package;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;Ljava/lang/ClassLoader;)V -Ljava/lang/Package;-><init>(Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;Ljava/lang/ClassLoader;)V -Ljava/lang/Package;->defineSystemPackage(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Package; -Ljava/lang/Package;->getPackage(Ljava/lang/Class;)Ljava/lang/Package; -Ljava/lang/Package;->getPackageInfo()Ljava/lang/Class; -Ljava/lang/Package;->getSystemPackage(Ljava/lang/String;)Ljava/lang/Package; -Ljava/lang/Package;->getSystemPackage0(Ljava/lang/String;)Ljava/lang/String; -Ljava/lang/Package;->getSystemPackages()[Ljava/lang/Package; -Ljava/lang/Package;->getSystemPackages0()[Ljava/lang/String; -Ljava/lang/Package;->implTitle:Ljava/lang/String; -Ljava/lang/Package;->implVendor:Ljava/lang/String; -Ljava/lang/Package;->implVersion:Ljava/lang/String; -Ljava/lang/Package;->loader:Ljava/lang/ClassLoader; -Ljava/lang/Package;->loadManifest(Ljava/lang/String;)Ljava/util/jar/Manifest; -Ljava/lang/Package;->mans:Ljava/util/Map; -Ljava/lang/Package;->packageInfo:Ljava/lang/Class; -Ljava/lang/Package;->pkgName:Ljava/lang/String; -Ljava/lang/Package;->pkgs:Ljava/util/Map; -Ljava/lang/Package;->sealBase:Ljava/net/URL; -Ljava/lang/Package;->specTitle:Ljava/lang/String; -Ljava/lang/Package;->specVendor:Ljava/lang/String; -Ljava/lang/Package;->specVersion:Ljava/lang/String; -Ljava/lang/Package;->urls:Ljava/util/Map; -Ljava/lang/ProcessBuilder$NullInputStream;-><init>()V -Ljava/lang/ProcessBuilder$NullInputStream;->INSTANCE:Ljava/lang/ProcessBuilder$NullInputStream; -Ljava/lang/ProcessBuilder$NullOutputStream;-><init>()V -Ljava/lang/ProcessBuilder$NullOutputStream;->INSTANCE:Ljava/lang/ProcessBuilder$NullOutputStream; -Ljava/lang/ProcessBuilder$Redirect;-><init>()V -Ljava/lang/ProcessBuilder$Redirect;->append()Z -Ljava/lang/ProcessBuilder;->command:Ljava/util/List; -Ljava/lang/ProcessBuilder;->directory:Ljava/io/File; -Ljava/lang/ProcessBuilder;->environment([Ljava/lang/String;)Ljava/lang/ProcessBuilder; -Ljava/lang/ProcessBuilder;->environment:Ljava/util/Map; -Ljava/lang/ProcessBuilder;->redirectErrorStream:Z -Ljava/lang/ProcessBuilder;->redirects()[Ljava/lang/ProcessBuilder$Redirect; -Ljava/lang/ProcessBuilder;->redirects:[Ljava/lang/ProcessBuilder$Redirect; -Ljava/lang/ref/FinalizerReference$Sentinel;-><init>()V -Ljava/lang/ref/FinalizerReference$Sentinel;->awaitFinalization(J)V -Ljava/lang/ref/FinalizerReference$Sentinel;->finalized:Z -Ljava/lang/ref/FinalizerReference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V -Ljava/lang/ref/FinalizerReference;->enqueueSentinelReference(Ljava/lang/ref/FinalizerReference$Sentinel;)Z -Ljava/lang/ref/FinalizerReference;->finalizeAllEnqueued(J)V -Ljava/lang/ref/FinalizerReference;->getReferent()Ljava/lang/Object; -Ljava/lang/ref/FinalizerReference;->LIST_LOCK:Ljava/lang/Object; -Ljava/lang/ref/FinalizerReference;->makeCircularListIfUnenqueued()Z -Ljava/lang/ref/FinalizerReference;->prev:Ljava/lang/ref/FinalizerReference; -Ljava/lang/ref/FinalizerReference;->zombie:Ljava/lang/Object; -Ljava/lang/ref/Reference$SinkHolder;-><init>()V -Ljava/lang/ref/Reference$SinkHolder;->finalize_count:I -Ljava/lang/ref/Reference$SinkHolder;->sink:Ljava/lang/Object; -Ljava/lang/ref/Reference$SinkHolder;->sinkUser:Ljava/lang/Object; -Ljava/lang/ref/Reference;-><init>(Ljava/lang/Object;)V -Ljava/lang/ref/Reference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V -Ljava/lang/ref/Reference;->clearReferent()V -Ljava/lang/ref/Reference;->disableIntrinsic:Z -Ljava/lang/ref/Reference;->pendingNext:Ljava/lang/ref/Reference; -Ljava/lang/ref/Reference;->queue:Ljava/lang/ref/ReferenceQueue; -Ljava/lang/ref/Reference;->queueNext:Ljava/lang/ref/Reference; -Ljava/lang/ref/Reference;->slowPathEnabled:Z -Ljava/lang/ref/ReferenceQueue;->enqueue(Ljava/lang/ref/Reference;)Z -Ljava/lang/ref/ReferenceQueue;->enqueueLocked(Ljava/lang/ref/Reference;)Z -Ljava/lang/ref/ReferenceQueue;->enqueuePending(Ljava/lang/ref/Reference;)V -Ljava/lang/ref/ReferenceQueue;->head:Ljava/lang/ref/Reference; -Ljava/lang/ref/ReferenceQueue;->isEnqueued(Ljava/lang/ref/Reference;)Z -Ljava/lang/ref/ReferenceQueue;->lock:Ljava/lang/Object; -Ljava/lang/ref/ReferenceQueue;->reallyPollLocked()Ljava/lang/ref/Reference; -Ljava/lang/ref/ReferenceQueue;->sQueueNextUnenqueued:Ljava/lang/ref/Reference; -Ljava/lang/ref/ReferenceQueue;->tail:Ljava/lang/ref/Reference; -Ljava/lang/ref/ReferenceQueue;->unenqueued:Ljava/lang/ref/Reference; -Ljava/lang/ref/SoftReference;->clock:J -Ljava/lang/ref/SoftReference;->timestamp:J -Ljava/lang/reflect/AccessibleObject;->setAccessible0(Ljava/lang/reflect/AccessibleObject;Z)V -Ljava/lang/reflect/Array;-><init>()V -Ljava/lang/reflect/Array;->badArray(Ljava/lang/Object;)Ljava/lang/RuntimeException; -Ljava/lang/reflect/Array;->createMultiArray(Ljava/lang/Class;[I)Ljava/lang/Object; -Ljava/lang/reflect/Array;->createObjectArray(Ljava/lang/Class;I)Ljava/lang/Object; -Ljava/lang/reflect/Array;->incompatibleType(Ljava/lang/Object;)Ljava/lang/IllegalArgumentException; -Ljava/lang/reflect/Array;->newArray(Ljava/lang/Class;I)Ljava/lang/Object; -Ljava/lang/reflect/Array;->notAnArray(Ljava/lang/Object;)Ljava/lang/IllegalArgumentException; -Ljava/lang/reflect/Constructor;-><init>()V -Ljava/lang/reflect/Constructor;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V -Ljava/lang/reflect/Constructor;->hasGenericInformation()Z -Ljava/lang/reflect/Constructor;->newInstanceFromSerialization(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/Object; -Ljava/lang/reflect/Constructor;->ORDER_BY_SIGNATURE:Ljava/util/Comparator; -Ljava/lang/reflect/Constructor;->serializationClass:Ljava/lang/Class; -Ljava/lang/reflect/Constructor;->serializationCtor:Ljava/lang/Class; -Ljava/lang/reflect/Constructor;->specificToGenericStringHeader(Ljava/lang/StringBuilder;)V -Ljava/lang/reflect/Constructor;->specificToStringHeader(Ljava/lang/StringBuilder;)V -Ljava/lang/reflect/Executable$GenericInfo;-><init>(Llibcore/reflect/ListOfTypes;Llibcore/reflect/ListOfTypes;Ljava/lang/reflect/Type;[Ljava/lang/reflect/TypeVariable;)V -Ljava/lang/reflect/Executable$GenericInfo;->formalTypeParameters:[Ljava/lang/reflect/TypeVariable; -Ljava/lang/reflect/Executable$GenericInfo;->genericExceptionTypes:Llibcore/reflect/ListOfTypes; -Ljava/lang/reflect/Executable$GenericInfo;->genericParameterTypes:Llibcore/reflect/ListOfTypes; -Ljava/lang/reflect/Executable$GenericInfo;->genericReturnType:Ljava/lang/reflect/Type; -Ljava/lang/reflect/Executable;-><init>()V -Ljava/lang/reflect/Executable;->accessFlags:I -Ljava/lang/reflect/Executable;->compareMethodParametersInternal(Ljava/lang/reflect/Method;)I -Ljava/lang/reflect/Executable;->declaringClass:Ljava/lang/Class; -Ljava/lang/reflect/Executable;->declaringClassOfOverriddenMethod:Ljava/lang/Class; -Ljava/lang/reflect/Executable;->dexMethodIndex:I -Ljava/lang/reflect/Executable;->equalNameAndParametersInternal(Ljava/lang/reflect/Method;)Z -Ljava/lang/reflect/Executable;->equalParamTypes([Ljava/lang/Class;[Ljava/lang/Class;)Z -Ljava/lang/reflect/Executable;->fixMethodFlags(I)I -Ljava/lang/reflect/Executable;->getAccessFlags()I -Ljava/lang/reflect/Executable;->getAllGenericParameterTypes()[Ljava/lang/reflect/Type; -Ljava/lang/reflect/Executable;->getAnnotationNative(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; -Ljava/lang/reflect/Executable;->getArtMethod()J -Ljava/lang/reflect/Executable;->getDeclaredAnnotationsNative()[Ljava/lang/annotation/Annotation; -Ljava/lang/reflect/Executable;->getDeclaringClassInternal()Ljava/lang/Class; -Ljava/lang/reflect/Executable;->getMethodNameInternal()Ljava/lang/String; -Ljava/lang/reflect/Executable;->getMethodOrConstructorGenericInfoInternal()Ljava/lang/reflect/Executable$GenericInfo; -Ljava/lang/reflect/Executable;->getMethodReturnTypeInternal()Ljava/lang/Class; -Ljava/lang/reflect/Executable;->getModifiersInternal()I -Ljava/lang/reflect/Executable;->getParameterAnnotationsInternal()[[Ljava/lang/annotation/Annotation; -Ljava/lang/reflect/Executable;->getParameterAnnotationsNative()[[Ljava/lang/annotation/Annotation; -Ljava/lang/reflect/Executable;->getParameterCountInternal()I -Ljava/lang/reflect/Executable;->getParameters0()[Ljava/lang/reflect/Parameter; -Ljava/lang/reflect/Executable;->getParameterTypesInternal()[Ljava/lang/Class; -Ljava/lang/reflect/Executable;->getSignatureAnnotation()[Ljava/lang/String; -Ljava/lang/reflect/Executable;->getSignatureAttribute()Ljava/lang/String; -Ljava/lang/reflect/Executable;->hasGenericInformation()Z -Ljava/lang/reflect/Executable;->hasGenericInformationInternal()Z -Ljava/lang/reflect/Executable;->hasRealParameterData()Z -Ljava/lang/reflect/Executable;->hasRealParameterData:Z -Ljava/lang/reflect/Executable;->isAnnotationPresentNative(Ljava/lang/Class;)Z -Ljava/lang/reflect/Executable;->isBridgeMethodInternal()Z -Ljava/lang/reflect/Executable;->isDefaultMethodInternal()Z -Ljava/lang/reflect/Executable;->parameters:[Ljava/lang/reflect/Parameter; -Ljava/lang/reflect/Executable;->printModifiersIfNonzero(Ljava/lang/StringBuilder;IZ)V -Ljava/lang/reflect/Executable;->privateGetParameters()[Ljava/lang/reflect/Parameter; -Ljava/lang/reflect/Executable;->separateWithCommas([Ljava/lang/Class;Ljava/lang/StringBuilder;)V -Ljava/lang/reflect/Executable;->sharedToGenericString(IZ)Ljava/lang/String; -Ljava/lang/reflect/Executable;->sharedToString(IZ[Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/String; -Ljava/lang/reflect/Executable;->specificToGenericStringHeader(Ljava/lang/StringBuilder;)V -Ljava/lang/reflect/Executable;->specificToStringHeader(Ljava/lang/StringBuilder;)V -Ljava/lang/reflect/Executable;->synthesizeAllParams()[Ljava/lang/reflect/Parameter; -Ljava/lang/reflect/Executable;->verifyParameters([Ljava/lang/reflect/Parameter;)V -Ljava/lang/reflect/Field;-><init>()V -Ljava/lang/reflect/Field;->declaringClass:Ljava/lang/Class; -Ljava/lang/reflect/Field;->dexFieldIndex:I -Ljava/lang/reflect/Field;->getAnnotationNative(Ljava/lang/Class;)Ljava/lang/annotation/Annotation; -Ljava/lang/reflect/Field;->getArtField()J -Ljava/lang/reflect/Field;->getDexFieldIndex()I -Ljava/lang/reflect/Field;->getNameInternal()Ljava/lang/String; -Ljava/lang/reflect/Field;->getSignatureAnnotation()[Ljava/lang/String; -Ljava/lang/reflect/Field;->getSignatureAttribute()Ljava/lang/String; -Ljava/lang/reflect/Field;->isAnnotationPresentNative(Ljava/lang/Class;)Z -Ljava/lang/reflect/Field;->offset:I -Ljava/lang/reflect/Field;->type:Ljava/lang/Class; -Ljava/lang/reflect/InvocationTargetException;->target:Ljava/lang/Throwable; -Ljava/lang/reflect/Method;-><init>()V -Ljava/lang/reflect/Method;->equalNameAndParameters(Ljava/lang/reflect/Method;)Z -Ljava/lang/reflect/Method;->hasGenericInformation()Z -Ljava/lang/reflect/Method;->ORDER_BY_SIGNATURE:Ljava/util/Comparator; -Ljava/lang/reflect/Method;->specificToGenericStringHeader(Ljava/lang/StringBuilder;)V -Ljava/lang/reflect/Method;->specificToStringHeader(Ljava/lang/StringBuilder;)V -Ljava/lang/reflect/Modifier;->ACCESS_MODIFIERS:I -Ljava/lang/reflect/Modifier;->ANNOTATION:I -Ljava/lang/reflect/Modifier;->BRIDGE:I -Ljava/lang/reflect/Modifier;->CLASS_MODIFIERS:I -Ljava/lang/reflect/Modifier;->CONSTRUCTOR:I -Ljava/lang/reflect/Modifier;->CONSTRUCTOR_MODIFIERS:I -Ljava/lang/reflect/Modifier;->DEFAULT:I -Ljava/lang/reflect/Modifier;->ENUM:I -Ljava/lang/reflect/Modifier;->FIELD_MODIFIERS:I -Ljava/lang/reflect/Modifier;->INTERFACE_MODIFIERS:I -Ljava/lang/reflect/Modifier;->isConstructor(I)Z -Ljava/lang/reflect/Modifier;->isMandated(I)Z -Ljava/lang/reflect/Modifier;->isSynthetic(I)Z -Ljava/lang/reflect/Modifier;->MANDATED:I -Ljava/lang/reflect/Modifier;->METHOD_MODIFIERS:I -Ljava/lang/reflect/Modifier;->PARAMETER_MODIFIERS:I -Ljava/lang/reflect/Modifier;->SYNTHETIC:I -Ljava/lang/reflect/Modifier;->VARARGS:I -Ljava/lang/reflect/Parameter;->executable:Ljava/lang/reflect/Executable; -Ljava/lang/reflect/Parameter;->getAnnotationNative(Ljava/lang/reflect/Executable;ILjava/lang/Class;)Ljava/lang/annotation/Annotation; -Ljava/lang/reflect/Parameter;->getRealName()Ljava/lang/String; -Ljava/lang/reflect/Parameter;->index:I -Ljava/lang/reflect/Parameter;->modifiers:I -Ljava/lang/reflect/Parameter;->name:Ljava/lang/String; -Ljava/lang/reflect/Parameter;->parameterClassCache:Ljava/lang/Class; -Ljava/lang/reflect/Parameter;->parameterTypeCache:Ljava/lang/reflect/Type; -Ljava/lang/reflect/Proxy$Key1;-><init>(Ljava/lang/Class;)V -Ljava/lang/reflect/Proxy$Key1;->hash:I -Ljava/lang/reflect/Proxy$Key2;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V -Ljava/lang/reflect/Proxy$Key2;->hash:I -Ljava/lang/reflect/Proxy$Key2;->ref2:Ljava/lang/ref/WeakReference; -Ljava/lang/reflect/Proxy$KeyFactory;-><init>()V -Ljava/lang/reflect/Proxy$KeyFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Object; -Ljava/lang/reflect/Proxy$KeyX;-><init>([Ljava/lang/Class;)V -Ljava/lang/reflect/Proxy$KeyX;->equals([Ljava/lang/ref/WeakReference;[Ljava/lang/ref/WeakReference;)Z -Ljava/lang/reflect/Proxy$KeyX;->hash:I -Ljava/lang/reflect/Proxy$KeyX;->refs:[Ljava/lang/ref/WeakReference; -Ljava/lang/reflect/Proxy$ProxyClassFactory;-><init>()V -Ljava/lang/reflect/Proxy$ProxyClassFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class; -Ljava/lang/reflect/Proxy$ProxyClassFactory;->nextUniqueNumber:Ljava/util/concurrent/atomic/AtomicLong; -Ljava/lang/reflect/Proxy$ProxyClassFactory;->proxyClassNamePrefix:Ljava/lang/String; -Ljava/lang/reflect/Proxy;-><init>()V -Ljava/lang/reflect/Proxy;->constructorParams:[Ljava/lang/Class; -Ljava/lang/reflect/Proxy;->deduplicateAndGetExceptions(Ljava/util/List;)Ljava/util/List; -Ljava/lang/reflect/Proxy;->generateProxy(Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/reflect/Method;[[Ljava/lang/Class;)Ljava/lang/Class; -Ljava/lang/reflect/Proxy;->getMethods([Ljava/lang/Class;)Ljava/util/List; -Ljava/lang/reflect/Proxy;->getMethodsRecursive([Ljava/lang/Class;Ljava/util/List;)V -Ljava/lang/reflect/Proxy;->intersectExceptions([Ljava/lang/Class;[Ljava/lang/Class;)[Ljava/lang/Class; -Ljava/lang/reflect/Proxy;->key0:Ljava/lang/Object; -Ljava/lang/reflect/Proxy;->ORDER_BY_SIGNATURE_AND_SUBTYPE:Ljava/util/Comparator; -Ljava/lang/reflect/Proxy;->proxyClassCache:Ljava/lang/reflect/WeakCache; -Ljava/lang/reflect/Proxy;->validateReturnTypes(Ljava/util/List;)V -Ljava/lang/reflect/UndeclaredThrowableException;->undeclaredThrowable:Ljava/lang/Throwable; -Ljava/lang/reflect/WeakCache$CacheKey;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V -Ljava/lang/reflect/WeakCache$CacheKey;->expungeFrom(Ljava/util/concurrent/ConcurrentMap;Ljava/util/concurrent/ConcurrentMap;)V -Ljava/lang/reflect/WeakCache$CacheKey;->hash:I -Ljava/lang/reflect/WeakCache$CacheKey;->NULL_KEY:Ljava/lang/Object; -Ljava/lang/reflect/WeakCache$CacheKey;->valueOf(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)Ljava/lang/Object; -Ljava/lang/reflect/WeakCache$CacheValue;-><init>(Ljava/lang/Object;)V -Ljava/lang/reflect/WeakCache$CacheValue;->hash:I -Ljava/lang/reflect/WeakCache$Factory;->key:Ljava/lang/Object; -Ljava/lang/reflect/WeakCache$Factory;->parameter:Ljava/lang/Object; -Ljava/lang/reflect/WeakCache$Factory;->subKey:Ljava/lang/Object; -Ljava/lang/reflect/WeakCache$Factory;->valuesMap:Ljava/util/concurrent/ConcurrentMap; -Ljava/lang/reflect/WeakCache$LookupValue;-><init>(Ljava/lang/Object;)V -Ljava/lang/reflect/WeakCache$LookupValue;->value:Ljava/lang/Object; -Ljava/lang/reflect/WeakCache;-><init>(Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V -Ljava/lang/reflect/WeakCache;->containsValue(Ljava/lang/Object;)Z -Ljava/lang/reflect/WeakCache;->expungeStaleEntries()V -Ljava/lang/reflect/WeakCache;->get(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/reflect/WeakCache;->map:Ljava/util/concurrent/ConcurrentMap; -Ljava/lang/reflect/WeakCache;->refQueue:Ljava/lang/ref/ReferenceQueue; -Ljava/lang/reflect/WeakCache;->reverseMap:Ljava/util/concurrent/ConcurrentMap; -Ljava/lang/reflect/WeakCache;->size()I -Ljava/lang/reflect/WeakCache;->subKeyFactory:Ljava/util/function/BiFunction; -Ljava/lang/reflect/WeakCache;->valueFactory:Ljava/util/function/BiFunction; -Ljava/lang/Runtime;->checkTargetSdkVersionForLoad(Ljava/lang/String;)V -Ljava/lang/Runtime;->currentRuntime:Ljava/lang/Runtime; -Ljava/lang/Runtime;->finalizeOnExit:Z -Ljava/lang/Runtime;->getLibPaths()[Ljava/lang/String; -Ljava/lang/Runtime;->initLibPaths()[Ljava/lang/String; -Ljava/lang/Runtime;->load0(Ljava/lang/Class;Ljava/lang/String;)V -Ljava/lang/Runtime;->nativeExit(I)V -Ljava/lang/Runtime;->runFinalization0()V -Ljava/lang/Runtime;->shutdownHooks:Ljava/util/List; -Ljava/lang/Runtime;->shuttingDown:Z -Ljava/lang/Runtime;->tracingMethods:Z -Ljava/lang/Short$ShortCache;-><init>()V -Ljava/lang/Short$ShortCache;->cache:[Ljava/lang/Short; -Ljava/lang/StrictMath$RandomNumberGeneratorHolder;-><init>()V -Ljava/lang/StrictMath$RandomNumberGeneratorHolder;->randomNumberGenerator:Ljava/util/Random; -Ljava/lang/StrictMath;-><init>()V -Ljava/lang/StrictMath;->floorOrCeil(DDDD)D -Ljava/lang/String$CaseInsensitiveComparator;-><init>()V -Ljava/lang/String$CaseInsensitiveComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I -Ljava/lang/String;->doReplace(CC)Ljava/lang/String; -Ljava/lang/String;->fastSubstring(II)Ljava/lang/String; -Ljava/lang/String;->getChars([CI)V -Ljava/lang/String;->indexOf(Ljava/lang/String;Ljava/lang/String;I)I -Ljava/lang/String;->indexOfSupplementary(II)I -Ljava/lang/String;->lastIndexOf(Ljava/lang/String;Ljava/lang/String;I)I -Ljava/lang/String;->lastIndexOfSupplementary(II)I -Ljava/lang/String;->nonSyncContentEquals(Ljava/lang/AbstractStringBuilder;)Z -Ljava/lang/StringBuffer;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/StringBuffer; -Ljava/lang/StringBuffer;->toStringCache:[C -Ljava/lang/StringIndexOutOfBoundsException;-><init>(II)V -Ljava/lang/StringIndexOutOfBoundsException;-><init>(III)V -Ljava/lang/StringIndexOutOfBoundsException;-><init>(Ljava/lang/String;I)V -Ljava/lang/StringIndexOutOfBoundsException;-><init>(Ljava/lang/String;II)V -Ljava/lang/System$PropertiesWithNonOverrideableDefaults;-><init>(Ljava/util/Properties;)V -Ljava/lang/System$PropertiesWithNonOverrideableDefaults;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/System;->addLegacyLocaleSystemProperties()V -Ljava/lang/System;->arraycopy([DI[DII)V -Ljava/lang/System;->arraycopyBooleanUnchecked([ZI[ZII)V -Ljava/lang/System;->arraycopyByteUnchecked([BI[BII)V -Ljava/lang/System;->arraycopyCharUnchecked([CI[CII)V -Ljava/lang/System;->arraycopyDoubleUnchecked([DI[DII)V -Ljava/lang/System;->arraycopyFloatUnchecked([FI[FII)V -Ljava/lang/System;->arraycopyIntUnchecked([II[III)V -Ljava/lang/System;->arraycopyLongUnchecked([JI[JII)V -Ljava/lang/System;->arraycopyShortUnchecked([SI[SII)V -Ljava/lang/System;->ARRAYCOPY_SHORT_BOOLEAN_ARRAY_THRESHOLD:I -Ljava/lang/System;->ARRAYCOPY_SHORT_BYTE_ARRAY_THRESHOLD:I -Ljava/lang/System;->ARRAYCOPY_SHORT_CHAR_ARRAY_THRESHOLD:I -Ljava/lang/System;->ARRAYCOPY_SHORT_DOUBLE_ARRAY_THRESHOLD:I -Ljava/lang/System;->ARRAYCOPY_SHORT_FLOAT_ARRAY_THRESHOLD:I -Ljava/lang/System;->ARRAYCOPY_SHORT_INT_ARRAY_THRESHOLD:I -Ljava/lang/System;->ARRAYCOPY_SHORT_LONG_ARRAY_THRESHOLD:I -Ljava/lang/System;->ARRAYCOPY_SHORT_SHORT_ARRAY_THRESHOLD:I -Ljava/lang/System;->checkKey(Ljava/lang/String;)V -Ljava/lang/System;->cons:Ljava/io/Console; -Ljava/lang/System;->initProperties()Ljava/util/Properties; -Ljava/lang/System;->initUnchangeableSystemProperties()Ljava/util/Properties; -Ljava/lang/System;->justRanFinalization:Z -Ljava/lang/System;->lineSeparator:Ljava/lang/String; -Ljava/lang/System;->LOCK:Ljava/lang/Object; -Ljava/lang/System;->logI(Ljava/lang/String;)V -Ljava/lang/System;->logI(Ljava/lang/String;Ljava/lang/Throwable;)V -Ljava/lang/System;->logW(Ljava/lang/String;)V -Ljava/lang/System;->newPrintStream(Ljava/io/FileOutputStream;Ljava/lang/String;)Ljava/io/PrintStream; -Ljava/lang/System;->parsePropertyAssignments(Ljava/util/Properties;[Ljava/lang/String;)V -Ljava/lang/System;->props:Ljava/util/Properties; -Ljava/lang/System;->runGC:Z -Ljava/lang/System;->setDefaultChangeableProperties(Ljava/util/Properties;)Ljava/util/Properties; -Ljava/lang/System;->setErr0(Ljava/io/PrintStream;)V -Ljava/lang/System;->setIn0(Ljava/io/InputStream;)V -Ljava/lang/System;->setOut0(Ljava/io/PrintStream;)V -Ljava/lang/System;->setUnchangeableSystemProperty(Ljava/lang/String;Ljava/lang/String;)V -Ljava/lang/System;->specialProperties()[Ljava/lang/String; -Ljava/lang/System;->unchangeableProps:Ljava/util/Properties; -Ljava/lang/Thread$Caches;-><init>()V -Ljava/lang/Thread$Caches;->subclassAudits:Ljava/util/concurrent/ConcurrentMap; -Ljava/lang/Thread$Caches;->subclassAuditsQueue:Ljava/lang/ref/ReferenceQueue; -Ljava/lang/Thread$ParkState;-><init>()V -Ljava/lang/Thread$ParkState;->PARKED:I -Ljava/lang/Thread$ParkState;->PREEMPTIVELY_UNPARKED:I -Ljava/lang/Thread$ParkState;->UNPARKED:I -Ljava/lang/Thread$WeakClassKey;-><init>(Ljava/lang/Class;Ljava/lang/ref/ReferenceQueue;)V -Ljava/lang/Thread$WeakClassKey;->hash:I -Ljava/lang/Thread;->auditSubclass(Ljava/lang/Class;)Z -Ljava/lang/Thread;->blockedOn(Lsun/nio/ch/Interruptible;)V -Ljava/lang/Thread;->blocker:Lsun/nio/ch/Interruptible; -Ljava/lang/Thread;->blockerLock:Ljava/lang/Object; -Ljava/lang/Thread;->defaultUncaughtExceptionHandler:Ljava/lang/Thread$UncaughtExceptionHandler; -Ljava/lang/Thread;->eetop:J -Ljava/lang/Thread;->EMPTY_STACK_TRACE:[Ljava/lang/StackTraceElement; -Ljava/lang/Thread;->exit()V -Ljava/lang/Thread;->init(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V -Ljava/lang/Thread;->init2(Ljava/lang/Thread;)V -Ljava/lang/Thread;->isCCLOverridden(Ljava/lang/Class;)Z -Ljava/lang/Thread;->NANOS_PER_MILLI:I -Ljava/lang/Thread;->nativeCreate(Ljava/lang/Thread;JZ)V -Ljava/lang/Thread;->nativeGetStatus(Z)I -Ljava/lang/Thread;->nativeHoldsLock(Ljava/lang/Object;)Z -Ljava/lang/Thread;->nativeInterrupt()V -Ljava/lang/Thread;->nativeParkEventPointer:J -Ljava/lang/Thread;->nativeSetName(Ljava/lang/String;)V -Ljava/lang/Thread;->nativeSetPriority(I)V -Ljava/lang/Thread;->nextThreadID()J -Ljava/lang/Thread;->nextThreadNum()I -Ljava/lang/Thread;->parkFor$(J)V -Ljava/lang/Thread;->parkState:I -Ljava/lang/Thread;->parkUntil$(J)V -Ljava/lang/Thread;->processQueue(Ljava/lang/ref/ReferenceQueue;Ljava/util/concurrent/ConcurrentMap;)V -Ljava/lang/Thread;->setUncaughtExceptionPreHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V -Ljava/lang/Thread;->single_step:Z -Ljava/lang/Thread;->sleep(Ljava/lang/Object;JI)V -Ljava/lang/Thread;->stackSize:J -Ljava/lang/Thread;->started:Z -Ljava/lang/Thread;->stillborn:Z -Ljava/lang/Thread;->SUBCLASS_IMPLEMENTATION_PERMISSION:Ljava/lang/RuntimePermission; -Ljava/lang/Thread;->threadInitNumber:I -Ljava/lang/Thread;->threadLocalRandomProbe:I -Ljava/lang/Thread;->threadLocalRandomSecondarySeed:I -Ljava/lang/Thread;->threadLocalRandomSeed:J -Ljava/lang/Thread;->threadQ:Ljava/lang/Thread; -Ljava/lang/Thread;->threadStatus:I -Ljava/lang/Thread;->tid:J -Ljava/lang/Thread;->uncaughtExceptionHandler:Ljava/lang/Thread$UncaughtExceptionHandler; -Ljava/lang/Thread;->uncaughtExceptionPreHandler:Ljava/lang/Thread$UncaughtExceptionHandler; -Ljava/lang/Thread;->unpark$()V -Ljava/lang/ThreadGroup;-><init>()V -Ljava/lang/ThreadGroup;-><init>(Ljava/lang/Void;Ljava/lang/ThreadGroup;Ljava/lang/String;)V -Ljava/lang/ThreadGroup;->add(Ljava/lang/ThreadGroup;)V -Ljava/lang/ThreadGroup;->addUnstarted()V -Ljava/lang/ThreadGroup;->checkParentAccess(Ljava/lang/ThreadGroup;)Ljava/lang/Void; -Ljava/lang/ThreadGroup;->daemon:Z -Ljava/lang/ThreadGroup;->destroyed:Z -Ljava/lang/ThreadGroup;->enumerate([Ljava/lang/Thread;IZ)I -Ljava/lang/ThreadGroup;->enumerate([Ljava/lang/ThreadGroup;IZ)I -Ljava/lang/ThreadGroup;->list(Ljava/io/PrintStream;I)V -Ljava/lang/ThreadGroup;->maxPriority:I -Ljava/lang/ThreadGroup;->nthreads:I -Ljava/lang/ThreadGroup;->nUnstartedThreads:I -Ljava/lang/ThreadGroup;->remove(Ljava/lang/Thread;)V -Ljava/lang/ThreadGroup;->remove(Ljava/lang/ThreadGroup;)V -Ljava/lang/ThreadGroup;->stopOrSuspend(Z)Z -Ljava/lang/ThreadGroup;->threads:[Ljava/lang/Thread; -Ljava/lang/ThreadGroup;->threadStartFailed(Ljava/lang/Thread;)V -Ljava/lang/ThreadGroup;->vmAllowSuspension:Z -Ljava/lang/ThreadLocal$SuppliedThreadLocal;-><init>(Ljava/util/function/Supplier;)V -Ljava/lang/ThreadLocal$SuppliedThreadLocal;->supplier:Ljava/util/function/Supplier; -Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;-><init>(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V -Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;->value:Ljava/lang/Object; -Ljava/lang/ThreadLocal$ThreadLocalMap;-><init>(Ljava/lang/ThreadLocal$ThreadLocalMap;)V -Ljava/lang/ThreadLocal$ThreadLocalMap;-><init>(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V -Ljava/lang/ThreadLocal$ThreadLocalMap;->cleanSomeSlots(II)Z -Ljava/lang/ThreadLocal$ThreadLocalMap;->expungeStaleEntries()V -Ljava/lang/ThreadLocal$ThreadLocalMap;->expungeStaleEntry(I)I -Ljava/lang/ThreadLocal$ThreadLocalMap;->getEntry(Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; -Ljava/lang/ThreadLocal$ThreadLocalMap;->getEntryAfterMiss(Ljava/lang/ThreadLocal;ILjava/lang/ThreadLocal$ThreadLocalMap$Entry;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; -Ljava/lang/ThreadLocal$ThreadLocalMap;->INITIAL_CAPACITY:I -Ljava/lang/ThreadLocal$ThreadLocalMap;->nextIndex(II)I -Ljava/lang/ThreadLocal$ThreadLocalMap;->prevIndex(II)I -Ljava/lang/ThreadLocal$ThreadLocalMap;->rehash()V -Ljava/lang/ThreadLocal$ThreadLocalMap;->remove(Ljava/lang/ThreadLocal;)V -Ljava/lang/ThreadLocal$ThreadLocalMap;->replaceStaleEntry(Ljava/lang/ThreadLocal;Ljava/lang/Object;I)V -Ljava/lang/ThreadLocal$ThreadLocalMap;->resize()V -Ljava/lang/ThreadLocal$ThreadLocalMap;->set(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V -Ljava/lang/ThreadLocal$ThreadLocalMap;->setThreshold(I)V -Ljava/lang/ThreadLocal$ThreadLocalMap;->size:I -Ljava/lang/ThreadLocal$ThreadLocalMap;->table:[Ljava/lang/ThreadLocal$ThreadLocalMap$Entry; -Ljava/lang/ThreadLocal$ThreadLocalMap;->threshold:I -Ljava/lang/ThreadLocal;->childValue(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/lang/ThreadLocal;->createInheritedMap(Ljava/lang/ThreadLocal$ThreadLocalMap;)Ljava/lang/ThreadLocal$ThreadLocalMap; -Ljava/lang/ThreadLocal;->createMap(Ljava/lang/Thread;Ljava/lang/Object;)V -Ljava/lang/ThreadLocal;->HASH_INCREMENT:I -Ljava/lang/ThreadLocal;->nextHashCode()I -Ljava/lang/ThreadLocal;->nextHashCode:Ljava/util/concurrent/atomic/AtomicInteger; -Ljava/lang/ThreadLocal;->setInitialValue()Ljava/lang/Object; -Ljava/lang/ThreadLocal;->threadLocalHashCode:I -Ljava/lang/Throwable$PrintStreamOrWriter;-><init>()V -Ljava/lang/Throwable$PrintStreamOrWriter;->lock()Ljava/lang/Object; -Ljava/lang/Throwable$PrintStreamOrWriter;->println(Ljava/lang/Object;)V -Ljava/lang/Throwable$SentinelHolder;-><init>()V -Ljava/lang/Throwable$SentinelHolder;->STACK_TRACE_ELEMENT_SENTINEL:Ljava/lang/StackTraceElement; -Ljava/lang/Throwable$SentinelHolder;->STACK_TRACE_SENTINEL:[Ljava/lang/StackTraceElement; -Ljava/lang/Throwable$WrappedPrintStream;-><init>(Ljava/io/PrintStream;)V -Ljava/lang/Throwable$WrappedPrintStream;->lock()Ljava/lang/Object; -Ljava/lang/Throwable$WrappedPrintStream;->println(Ljava/lang/Object;)V -Ljava/lang/Throwable$WrappedPrintStream;->printStream:Ljava/io/PrintStream; -Ljava/lang/Throwable$WrappedPrintWriter;-><init>(Ljava/io/PrintWriter;)V -Ljava/lang/Throwable$WrappedPrintWriter;->lock()Ljava/lang/Object; -Ljava/lang/Throwable$WrappedPrintWriter;->println(Ljava/lang/Object;)V -Ljava/lang/Throwable$WrappedPrintWriter;->printWriter:Ljava/io/PrintWriter; -Ljava/lang/Throwable;->CAUSE_CAPTION:Ljava/lang/String; -Ljava/lang/Throwable;->EMPTY_THROWABLE_ARRAY:[Ljava/lang/Throwable; -Ljava/lang/Throwable;->nativeGetStackTrace(Ljava/lang/Object;)[Ljava/lang/StackTraceElement; -Ljava/lang/Throwable;->NULL_CAUSE_MESSAGE:Ljava/lang/String; -Ljava/lang/Throwable;->printEnclosedStackTrace(Ljava/lang/Throwable$PrintStreamOrWriter;[Ljava/lang/StackTraceElement;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V -Ljava/lang/Throwable;->SELF_SUPPRESSION_MESSAGE:Ljava/lang/String; -Ljava/lang/Throwable;->SUPPRESSED_CAPTION:Ljava/lang/String; -Ljava/lang/TypeNotPresentException;->typeName:Ljava/lang/String; -Ljava/math/BigDecimal;-><init>(II)V -Ljava/math/BigDecimal;-><init>(JI)V -Ljava/math/BigDecimal;->addAndMult10(Ljava/math/BigDecimal;Ljava/math/BigDecimal;I)Ljava/math/BigDecimal; -Ljava/math/BigDecimal;->approxPrecision()I -Ljava/math/BigDecimal;->bitLength(I)I -Ljava/math/BigDecimal;->bitLength(J)I -Ljava/math/BigDecimal;->bitLength:I -Ljava/math/BigDecimal;->BI_SCALED_BY_ZERO:[Ljava/math/BigDecimal; -Ljava/math/BigDecimal;->BI_SCALED_BY_ZERO_LENGTH:I -Ljava/math/BigDecimal;->CH_ZEROS:[C -Ljava/math/BigDecimal;->compareAbsoluteValues(JJ)I -Ljava/math/BigDecimal;->compareForRounding(JJ)I -Ljava/math/BigDecimal;->decimalDigitsInLong(J)I -Ljava/math/BigDecimal;->divideBigIntegers(Ljava/math/BigInteger;Ljava/math/BigInteger;ILjava/math/RoundingMode;)Ljava/math/BigDecimal; -Ljava/math/BigDecimal;->dividePrimitiveLongs(JJILjava/math/RoundingMode;)Ljava/math/BigDecimal; -Ljava/math/BigDecimal;->FIVE_POW:[Ljava/math/BigInteger; -Ljava/math/BigDecimal;->getUnscaledValue()Ljava/math/BigInteger; -Ljava/math/BigDecimal;->hashCode:I -Ljava/math/BigDecimal;->inplaceRound(Ljava/math/MathContext;)V -Ljava/math/BigDecimal;->intVal:Ljava/math/BigInteger; -Ljava/math/BigDecimal;->isZero()Z -Ljava/math/BigDecimal;->LOG10_2:D -Ljava/math/BigDecimal;->LONG_FIVE_POW:[J -Ljava/math/BigDecimal;->LONG_FIVE_POW_BIT_LENGTH:[I -Ljava/math/BigDecimal;->LONG_POWERS_OF_TEN_BIT_LENGTH:[I -Ljava/math/BigDecimal;->movePoint(J)Ljava/math/BigDecimal; -Ljava/math/BigDecimal;->precision:I -Ljava/math/BigDecimal;->roundingBehavior(IILjava/math/RoundingMode;)I -Ljava/math/BigDecimal;->safeLongToInt(J)I -Ljava/math/BigDecimal;->scale:I -Ljava/math/BigDecimal;->setUnscaledValue(Ljava/math/BigInteger;)V -Ljava/math/BigDecimal;->smallRound(Ljava/math/MathContext;I)V -Ljava/math/BigDecimal;->smallValue:J -Ljava/math/BigDecimal;->TEN_POW:[Ljava/math/BigInteger; -Ljava/math/BigDecimal;->toStringImage:Ljava/lang/String; -Ljava/math/BigDecimal;->valueExact(I)J -Ljava/math/BigDecimal;->zeroScaledBy(J)Ljava/math/BigDecimal; -Ljava/math/BigDecimal;->ZERO_SCALED_BY:[Ljava/math/BigDecimal; -Ljava/math/BigInt;-><init>()V -Ljava/math/BigInt;->add(Ljava/math/BigInt;)V -Ljava/math/BigInt;->addition(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; -Ljava/math/BigInt;->addPositiveInt(I)V -Ljava/math/BigInt;->bigEndianMagnitude()[B -Ljava/math/BigInt;->bigExp(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; -Ljava/math/BigInt;->bignum:J -Ljava/math/BigInt;->bitLength()I -Ljava/math/BigInt;->checkString(Ljava/lang/String;I)Ljava/lang/String; -Ljava/math/BigInt;->cmp(Ljava/math/BigInt;Ljava/math/BigInt;)I -Ljava/math/BigInt;->copy()Ljava/math/BigInt; -Ljava/math/BigInt;->decString()Ljava/lang/String; -Ljava/math/BigInt;->division(Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;)V -Ljava/math/BigInt;->exp(Ljava/math/BigInt;I)Ljava/math/BigInt; -Ljava/math/BigInt;->gcd(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; -Ljava/math/BigInt;->generatePrimeDefault(I)Ljava/math/BigInt; -Ljava/math/BigInt;->hasNativeBignum()Z -Ljava/math/BigInt;->hexString()Ljava/lang/String; -Ljava/math/BigInt;->invalidBigInteger(Ljava/lang/String;)Ljava/lang/NumberFormatException; -Ljava/math/BigInt;->isBitSet(I)Z -Ljava/math/BigInt;->isPrime(I)Z -Ljava/math/BigInt;->littleEndianIntsMagnitude()[I -Ljava/math/BigInt;->longInt()J -Ljava/math/BigInt;->makeValid()V -Ljava/math/BigInt;->modExp(Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; -Ljava/math/BigInt;->modInverse(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; -Ljava/math/BigInt;->modulus(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; -Ljava/math/BigInt;->multiplyByPositiveInt(I)V -Ljava/math/BigInt;->newBigInt()Ljava/math/BigInt; -Ljava/math/BigInt;->product(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; -Ljava/math/BigInt;->putBigEndian([BZ)V -Ljava/math/BigInt;->putBigEndianTwosComplement([B)V -Ljava/math/BigInt;->putCopy(Ljava/math/BigInt;)V -Ljava/math/BigInt;->putDecString(Ljava/lang/String;)V -Ljava/math/BigInt;->putHexString(Ljava/lang/String;)V -Ljava/math/BigInt;->putLittleEndianInts([IZ)V -Ljava/math/BigInt;->putLongInt(J)V -Ljava/math/BigInt;->putULongInt(JZ)V -Ljava/math/BigInt;->registry:Llibcore/util/NativeAllocationRegistry; -Ljava/math/BigInt;->remainderByPositiveInt(Ljava/math/BigInt;I)I -Ljava/math/BigInt;->setSign(I)V -Ljava/math/BigInt;->shift(I)V -Ljava/math/BigInt;->shift(Ljava/math/BigInt;I)Ljava/math/BigInt; -Ljava/math/BigInt;->sign()I -Ljava/math/BigInt;->subtraction(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt; -Ljava/math/BigInt;->toAscii(Ljava/lang/String;I)Ljava/lang/String; -Ljava/math/BigInt;->twosCompFitsIntoBytes(I)Z -Ljava/math/BigInteger;-><init>(II[I)V -Ljava/math/BigInteger;-><init>(IJ)V -Ljava/math/BigInteger;-><init>(Ljava/math/BigInt;)V -Ljava/math/BigInteger;->bigInt:Ljava/math/BigInt; -Ljava/math/BigInteger;->copy()Ljava/math/BigInteger; -Ljava/math/BigInteger;->digits:[I -Ljava/math/BigInteger;->firstNonzeroDigit:I -Ljava/math/BigInteger;->getBigInt()Ljava/math/BigInt; -Ljava/math/BigInteger;->getFirstNonzeroDigit()I -Ljava/math/BigInteger;->hashCode:I -Ljava/math/BigInteger;->inplaceAdd([III)I -Ljava/math/BigInteger;->isSmallPrime(I)Z -Ljava/math/BigInteger;->javaIsValid:Z -Ljava/math/BigInteger;->magnitude:[B -Ljava/math/BigInteger;->MINUS_ONE:Ljava/math/BigInteger; -Ljava/math/BigInteger;->multiplyByInt([I[III)I -Ljava/math/BigInteger;->nativeIsValid:Z -Ljava/math/BigInteger;->numberLength:I -Ljava/math/BigInteger;->parseFromString(Ljava/math/BigInteger;Ljava/lang/String;I)V -Ljava/math/BigInteger;->prepareJavaRepresentation()V -Ljava/math/BigInteger;->setBigInt(Ljava/math/BigInt;)V -Ljava/math/BigInteger;->setJavaRepresentation(II[I)V -Ljava/math/BigInteger;->shiftLeftOneBit()Ljava/math/BigInteger; -Ljava/math/BigInteger;->sign:I -Ljava/math/BigInteger;->signum:I -Ljava/math/BigInteger;->SMALL_VALUES:[Ljava/math/BigInteger; -Ljava/math/BigInteger;->twosComplement()[B -Ljava/math/MathContext;->checkValid()V -Ljava/math/MathContext;->invalidMathContext(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/IllegalArgumentException; -Ljava/math/MathContext;->precision:I -Ljava/math/MathContext;->roundingMode:Ljava/math/RoundingMode; -Ljava/math/RoundingMode;->bigDecimalRM:I -Ljava/net/Authenticator;->requestingAuthType:Ljava/net/Authenticator$RequestorType; -Ljava/net/Authenticator;->requestingHost:Ljava/lang/String; -Ljava/net/Authenticator;->requestingPort:I -Ljava/net/Authenticator;->requestingPrompt:Ljava/lang/String; -Ljava/net/Authenticator;->requestingProtocol:Ljava/lang/String; -Ljava/net/Authenticator;->requestingScheme:Ljava/lang/String; -Ljava/net/Authenticator;->requestingSite:Ljava/net/InetAddress; -Ljava/net/Authenticator;->requestingURL:Ljava/net/URL; -Ljava/net/Authenticator;->reset()V -Ljava/net/BindException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V -Ljava/net/ConnectException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V -Ljava/net/CookieHandler;->cookieHandler:Ljava/net/CookieHandler; -Ljava/net/CookieManager$CookiePathComparator;-><init>()V -Ljava/net/CookieManager$CookiePathComparator;->compare(Ljava/net/HttpCookie;Ljava/net/HttpCookie;)I -Ljava/net/CookieManager;->cookieJar:Ljava/net/CookieStore; -Ljava/net/CookieManager;->isInPortList(Ljava/lang/String;I)Z -Ljava/net/CookieManager;->normalizePath(Ljava/lang/String;)Ljava/lang/String; -Ljava/net/CookieManager;->pathMatches(Ljava/net/URI;Ljava/net/HttpCookie;)Z -Ljava/net/CookieManager;->policyCallback:Ljava/net/CookiePolicy; -Ljava/net/CookieManager;->shouldAcceptInternal(Ljava/net/URI;Ljava/net/HttpCookie;)Z -Ljava/net/CookieManager;->sortByPath(Ljava/util/List;)Ljava/util/List; -Ljava/net/DatagramPacket;->address:Ljava/net/InetAddress; -Ljava/net/DatagramPacket;->buf:[B -Ljava/net/DatagramPacket;->bufLength:I -Ljava/net/DatagramPacket;->length:I -Ljava/net/DatagramPacket;->offset:I -Ljava/net/DatagramPacket;->port:I -Ljava/net/DatagramPacket;->setReceivedLength(I)V -Ljava/net/DatagramSocket;->bound:Z -Ljava/net/DatagramSocket;->bytesLeftToFilter:I -Ljava/net/DatagramSocket;->checkAddress(Ljava/net/InetAddress;Ljava/lang/String;)V -Ljava/net/DatagramSocket;->checkFiltering(Ljava/net/DatagramPacket;)Z -Ljava/net/DatagramSocket;->checkOldImpl()V -Ljava/net/DatagramSocket;->closed:Z -Ljava/net/DatagramSocket;->closeLock:Ljava/lang/Object; -Ljava/net/DatagramSocket;->connectedAddress:Ljava/net/InetAddress; -Ljava/net/DatagramSocket;->connectedPort:I -Ljava/net/DatagramSocket;->connectInternal(Ljava/net/InetAddress;I)V -Ljava/net/DatagramSocket;->connectState:I -Ljava/net/DatagramSocket;->created:Z -Ljava/net/DatagramSocket;->createImpl()V -Ljava/net/DatagramSocket;->explicitFilter:Z -Ljava/net/DatagramSocket;->factory:Ljava/net/DatagramSocketImplFactory; -Ljava/net/DatagramSocket;->getImpl()Ljava/net/DatagramSocketImpl; -Ljava/net/DatagramSocket;->implClass:Ljava/lang/Class; -Ljava/net/DatagramSocket;->oldImpl:Z -Ljava/net/DatagramSocket;->pendingConnectException:Ljava/net/SocketException; -Ljava/net/DatagramSocket;->ST_CONNECTED:I -Ljava/net/DatagramSocket;->ST_CONNECTED_NO_IMPL:I -Ljava/net/DatagramSocket;->ST_NOT_CONNECTED:I -Ljava/net/DatagramSocketImpl;->dataAvailable()I -Ljava/net/DatagramSocketImpl;->getDatagramSocket()Ljava/net/DatagramSocket; -Ljava/net/DatagramSocketImpl;->getOption(Ljava/net/SocketOption;)Ljava/lang/Object; -Ljava/net/DatagramSocketImpl;->setDatagramSocket(Ljava/net/DatagramSocket;)V -Ljava/net/DatagramSocketImpl;->setOption(Ljava/net/SocketOption;Ljava/lang/Object;)V -Ljava/net/DatagramSocketImpl;->socket:Ljava/net/DatagramSocket; -Ljava/net/HttpCookie$CookieAttributeAssignor;->assign(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V -Ljava/net/HttpCookie;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -Ljava/net/HttpCookie;->assignAttribute(Ljava/net/HttpCookie;Ljava/lang/String;Ljava/lang/String;)V -Ljava/net/HttpCookie;->equalsIgnoreCase(Ljava/lang/String;Ljava/lang/String;)Z -Ljava/net/HttpCookie;->GMT:Ljava/util/TimeZone; -Ljava/net/HttpCookie;->guessCookieVersion(Ljava/lang/String;)I -Ljava/net/HttpCookie;->header()Ljava/lang/String; -Ljava/net/HttpCookie;->isFullyQualifiedDomainName(Ljava/lang/String;I)Z -Ljava/net/HttpCookie;->isToken(Ljava/lang/String;)Z -Ljava/net/HttpCookie;->MAX_AGE_UNSPECIFIED:J -Ljava/net/HttpCookie;->parse(Ljava/lang/String;Z)Ljava/util/List; -Ljava/net/HttpCookie;->parseInternal(Ljava/lang/String;Z)Ljava/net/HttpCookie; -Ljava/net/HttpCookie;->RESERVED_NAMES:Ljava/util/Set; -Ljava/net/HttpCookie;->SET_COOKIE2:Ljava/lang/String; -Ljava/net/HttpCookie;->SET_COOKIE:Ljava/lang/String; -Ljava/net/HttpCookie;->splitMultiCookies(Ljava/lang/String;)Ljava/util/List; -Ljava/net/HttpCookie;->startsWithIgnoreCase(Ljava/lang/String;Ljava/lang/String;)Z -Ljava/net/HttpCookie;->stripOffSurroundingQuote(Ljava/lang/String;)Ljava/lang/String; -Ljava/net/HttpCookie;->toNetscapeHeaderString()Ljava/lang/String; -Ljava/net/HttpCookie;->toRFC2965HeaderString()Ljava/lang/String; -Ljava/net/HttpRetryException;->location:Ljava/lang/String; -Ljava/net/HttpRetryException;->responseCode:I -Ljava/net/HttpURLConnection;->DEFAULT_CHUNK_SIZE:I -Ljava/net/HttpURLConnection;->followRedirects:Z -Ljava/net/HttpURLConnection;->methods:[Ljava/lang/String; -Ljava/net/IDN;-><init>()V -Ljava/net/IDN;->convertFullStop(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer; -Ljava/net/IDN;->isLabelSeperator(C)Z -Ljava/net/Inet4Address;-><init>(Ljava/lang/String;I)V -Ljava/net/Inet4Address;-><init>(Ljava/lang/String;[B)V -Ljava/net/Inet4Address;->INADDRSZ:I -Ljava/net/Inet4Address;->LOOPBACK:Ljava/net/InetAddress; -Ljava/net/Inet4Address;->numericToTextFormat([B)Ljava/lang/String; -Ljava/net/Inet6Address$Inet6AddressHolder;->init([BI)V -Ljava/net/Inet6Address$Inet6AddressHolder;->init([BLjava/net/NetworkInterface;)V -Ljava/net/Inet6Address$Inet6AddressHolder;->isAnyLocalAddress()Z -Ljava/net/Inet6Address$Inet6AddressHolder;->isIPv4CompatibleAddress()Z -Ljava/net/Inet6Address$Inet6AddressHolder;->isLinkLocalAddress()Z -Ljava/net/Inet6Address$Inet6AddressHolder;->isLoopbackAddress()Z -Ljava/net/Inet6Address$Inet6AddressHolder;->isMCGlobal()Z -Ljava/net/Inet6Address$Inet6AddressHolder;->isMCLinkLocal()Z -Ljava/net/Inet6Address$Inet6AddressHolder;->isMCNodeLocal()Z -Ljava/net/Inet6Address$Inet6AddressHolder;->isMCOrgLocal()Z -Ljava/net/Inet6Address$Inet6AddressHolder;->isMCSiteLocal()Z -Ljava/net/Inet6Address$Inet6AddressHolder;->isMulticastAddress()Z -Ljava/net/Inet6Address$Inet6AddressHolder;->isSiteLocalAddress()Z -Ljava/net/Inet6Address$Inet6AddressHolder;->scope_ifname_set:Z -Ljava/net/Inet6Address$Inet6AddressHolder;->setAddr([B)V -Ljava/net/Inet6Address;-><init>(Ljava/lang/String;[B)V -Ljava/net/Inet6Address;-><init>(Ljava/lang/String;[BI)V -Ljava/net/Inet6Address;-><init>(Ljava/lang/String;[BLjava/lang/String;)V -Ljava/net/Inet6Address;-><init>(Ljava/lang/String;[BLjava/net/NetworkInterface;)V -Ljava/net/Inet6Address;->deriveNumericScope(Ljava/lang/String;)I -Ljava/net/Inet6Address;->deriveNumericScope([BLjava/net/NetworkInterface;)I -Ljava/net/Inet6Address;->FIELDS_OFFSET:J -Ljava/net/Inet6Address;->INADDRSZ:I -Ljava/net/Inet6Address;->initif(Ljava/lang/String;[BLjava/net/NetworkInterface;)V -Ljava/net/Inet6Address;->initstr(Ljava/lang/String;[BLjava/lang/String;)V -Ljava/net/Inet6Address;->INT16SZ:I -Ljava/net/Inet6Address;->isDifferentLocalAddressType([B[B)Z -Ljava/net/Inet6Address;->isLinkLocalAddress([B)Z -Ljava/net/Inet6Address;->isSiteLocalAddress([B)Z -Ljava/net/Inet6Address;->LOOPBACK:Ljava/net/InetAddress; -Ljava/net/Inet6Address;->numericToTextFormat([B)Ljava/lang/String; -Ljava/net/Inet6Address;->UNSAFE:Lsun/misc/Unsafe; -Ljava/net/InetAddress$InetAddressHolder;-><init>()V -Ljava/net/InetAddress$InetAddressHolder;-><init>(Ljava/lang/String;II)V -Ljava/net/InetAddress$InetAddressHolder;->getAddress()I -Ljava/net/InetAddress$InetAddressHolder;->getFamily()I -Ljava/net/InetAddress$InetAddressHolder;->getHostName()Ljava/lang/String; -Ljava/net/InetAddress$InetAddressHolder;->getOriginalHostName()Ljava/lang/String; -Ljava/net/InetAddress$InetAddressHolder;->init(Ljava/lang/String;I)V -Ljava/net/InetAddress;-><init>()V -Ljava/net/InetAddress;->anyLocalAddress()Ljava/net/InetAddress; -Ljava/net/InetAddress;->BOOT_CLASSLOADER:Ljava/lang/ClassLoader; -Ljava/net/InetAddress;->canonicalHostName:Ljava/lang/String; -Ljava/net/InetAddress;->disallowDeprecatedFormats(Ljava/lang/String;Ljava/net/InetAddress;)Ljava/net/InetAddress; -Ljava/net/InetAddress;->getAllByName0(Ljava/lang/String;Z)[Ljava/net/InetAddress; -Ljava/net/InetAddress;->getByAddress(Ljava/lang/String;[BI)Ljava/net/InetAddress; -Ljava/net/InetAddress;->getByNameOnNet(Ljava/lang/String;I)Ljava/net/InetAddress; -Ljava/net/InetAddress;->getHostFromNameService(Ljava/net/InetAddress;)Ljava/lang/String; -Ljava/net/InetAddress;->getHostName(Z)Ljava/lang/String; -Ljava/net/InetAddress;->impl:Ljava/net/InetAddressImpl; -Ljava/net/InetAddress;->isReachableByICMP(I)Z -Ljava/net/InetAddress;->nameService:Lsun/net/spi/nameservice/NameService; -Ljava/net/InetAddress;->NETID_UNSET:I -Ljava/net/InetAddress;->parseNumericAddressNoThrow(Ljava/lang/String;)Ljava/net/InetAddress; -Ljava/net/InetAddress;->readObjectNoData(Ljava/io/ObjectInputStream;)V -Ljava/net/InetAddressImpl;->anyLocalAddress()Ljava/net/InetAddress; -Ljava/net/InetAddressImpl;->clearAddressCache()V -Ljava/net/InetAddressImpl;->getHostByAddr([B)Ljava/lang/String; -Ljava/net/InetAddressImpl;->isReachable(Ljava/net/InetAddress;ILjava/net/NetworkInterface;I)Z -Ljava/net/InetAddressImpl;->lookupAllHostAddr(Ljava/lang/String;I)[Ljava/net/InetAddress; -Ljava/net/InetAddressImpl;->loopbackAddresses()[Ljava/net/InetAddress; -Ljava/net/InetSocketAddress$InetSocketAddressHolder;-><init>(Ljava/lang/String;Ljava/net/InetAddress;I)V -Ljava/net/InetSocketAddress$InetSocketAddressHolder;->addr:Ljava/net/InetAddress; -Ljava/net/InetSocketAddress$InetSocketAddressHolder;->getAddress()Ljava/net/InetAddress; -Ljava/net/InetSocketAddress$InetSocketAddressHolder;->getHostName()Ljava/lang/String; -Ljava/net/InetSocketAddress$InetSocketAddressHolder;->getHostString()Ljava/lang/String; -Ljava/net/InetSocketAddress$InetSocketAddressHolder;->getPort()I -Ljava/net/InetSocketAddress$InetSocketAddressHolder;->hostname:Ljava/lang/String; -Ljava/net/InetSocketAddress$InetSocketAddressHolder;->isUnresolved()Z -Ljava/net/InetSocketAddress$InetSocketAddressHolder;->port:I -Ljava/net/InetSocketAddress;-><init>()V -Ljava/net/InetSocketAddress;-><init>(ILjava/lang/String;)V -Ljava/net/InetSocketAddress;->checkHost(Ljava/lang/String;)Ljava/lang/String; -Ljava/net/InetSocketAddress;->checkPort(I)I -Ljava/net/InetSocketAddress;->FIELDS_OFFSET:J -Ljava/net/InetSocketAddress;->UNSAFE:Lsun/misc/Unsafe; -Ljava/net/InMemoryCookieStore;-><init>()V -Ljava/net/InMemoryCookieStore;-><init>(I)V -Ljava/net/InMemoryCookieStore;->addIndex(Ljava/util/Map;Ljava/lang/Object;Ljava/net/HttpCookie;)V -Ljava/net/InMemoryCookieStore;->applyMCompatibility:Z -Ljava/net/InMemoryCookieStore;->getEffectiveURI(Ljava/net/URI;)Ljava/net/URI; -Ljava/net/InMemoryCookieStore;->getInternal1(Ljava/util/List;Ljava/util/Map;Ljava/lang/String;)V -Ljava/net/InMemoryCookieStore;->getInternal2(Ljava/util/List;Ljava/util/Map;Ljava/lang/Comparable;)V -Ljava/net/InMemoryCookieStore;->lock:Ljava/util/concurrent/locks/ReentrantLock; -Ljava/net/InMemoryCookieStore;->netscapeDomainMatches(Ljava/lang/String;Ljava/lang/String;)Z -Ljava/net/InMemoryCookieStore;->uriIndex:Ljava/util/Map; -Ljava/net/InterfaceAddress;-><init>(Ljava/net/InetAddress;Ljava/net/Inet4Address;Ljava/net/InetAddress;)V -Ljava/net/InterfaceAddress;->address:Ljava/net/InetAddress; -Ljava/net/InterfaceAddress;->broadcast:Ljava/net/Inet4Address; -Ljava/net/InterfaceAddress;->countPrefixLength(Ljava/net/InetAddress;)S -Ljava/net/InterfaceAddress;->maskLength:S -Ljava/net/JarURLConnection;->entryName:Ljava/lang/String; -Ljava/net/JarURLConnection;->jarFileURL:Ljava/net/URL; -Ljava/net/JarURLConnection;->parseSpecs(Ljava/net/URL;)V -Ljava/net/MulticastSocket;->infAddress:Ljava/net/InetAddress; -Ljava/net/MulticastSocket;->infLock:Ljava/lang/Object; -Ljava/net/MulticastSocket;->interfaceSet:Z -Ljava/net/MulticastSocket;->ttlLock:Ljava/lang/Object; -Ljava/net/NetworkInterface;-><init>()V -Ljava/net/NetworkInterface;-><init>(Ljava/lang/String;I[Ljava/net/InetAddress;)V -Ljava/net/NetworkInterface;->addrs:[Ljava/net/InetAddress; -Ljava/net/NetworkInterface;->bindings:[Ljava/net/InterfaceAddress; -Ljava/net/NetworkInterface;->childs:Ljava/util/List; -Ljava/net/NetworkInterface;->defaultIndex:I -Ljava/net/NetworkInterface;->defaultInterface:Ljava/net/NetworkInterface; -Ljava/net/NetworkInterface;->displayName:Ljava/lang/String; -Ljava/net/NetworkInterface;->getAll()[Ljava/net/NetworkInterface; -Ljava/net/NetworkInterface;->getDefault()Ljava/net/NetworkInterface; -Ljava/net/NetworkInterface;->getFlags()I -Ljava/net/NetworkInterface;->hardwareAddr:[B -Ljava/net/NetworkInterface;->index:I -Ljava/net/NetworkInterface;->name:Ljava/lang/String; -Ljava/net/NetworkInterface;->parent:Ljava/net/NetworkInterface; -Ljava/net/NetworkInterface;->virtual:Z -Ljava/net/PasswordAuthentication;->password:[C -Ljava/net/PasswordAuthentication;->userName:Ljava/lang/String; -Ljava/net/PortUnreachableException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V -Ljava/net/ProtocolException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V -Ljava/net/Proxy;->sa:Ljava/net/SocketAddress; -Ljava/net/Proxy;->type:Ljava/net/Proxy$Type; -Ljava/net/ProxySelector;->theProxySelector:Ljava/net/ProxySelector; -Ljava/net/ResponseCache;->theResponseCache:Ljava/net/ResponseCache; -Ljava/net/ServerSocket;-><init>(Ljava/net/SocketImpl;)V -Ljava/net/ServerSocket;->bound:Z -Ljava/net/ServerSocket;->checkOldImpl()V -Ljava/net/ServerSocket;->closed:Z -Ljava/net/ServerSocket;->closeLock:Ljava/lang/Object; -Ljava/net/ServerSocket;->created:Z -Ljava/net/ServerSocket;->createImpl()V -Ljava/net/ServerSocket;->getFileDescriptor$()Ljava/io/FileDescriptor; -Ljava/net/ServerSocket;->getImpl()Ljava/net/SocketImpl; -Ljava/net/ServerSocket;->impl:Ljava/net/SocketImpl; -Ljava/net/ServerSocket;->oldImpl:Z -Ljava/net/ServerSocket;->setBound()V -Ljava/net/ServerSocket;->setCreated()V -Ljava/net/ServerSocket;->setImpl()V -Ljava/net/Socket;-><init>([Ljava/net/InetAddress;ILjava/net/SocketAddress;Z)V -Ljava/net/Socket;->bound:Z -Ljava/net/Socket;->checkAddress(Ljava/net/InetAddress;Ljava/lang/String;)V -Ljava/net/Socket;->checkOldImpl()V -Ljava/net/Socket;->closed:Z -Ljava/net/Socket;->closeLock:Ljava/lang/Object; -Ljava/net/Socket;->connected:Z -Ljava/net/Socket;->created:Z -Ljava/net/Socket;->createImpl(Z)V -Ljava/net/Socket;->getImpl()Ljava/net/SocketImpl; -Ljava/net/Socket;->nonNullAddress(Ljava/net/InetAddress;)[Ljava/net/InetAddress; -Ljava/net/Socket;->oldImpl:Z -Ljava/net/Socket;->postAccept()V -Ljava/net/Socket;->setBound()V -Ljava/net/Socket;->setConnected()V -Ljava/net/Socket;->setCreated()V -Ljava/net/Socket;->setImpl()V -Ljava/net/Socket;->shutIn:Z -Ljava/net/Socket;->shutOut:Z -Ljava/net/SocketException;-><init>(Ljava/lang/Throwable;)V -Ljava/net/SocketImpl;->getFD$()Ljava/io/FileDescriptor; -Ljava/net/SocketImpl;->getOption(Ljava/net/SocketOption;)Ljava/lang/Object; -Ljava/net/SocketImpl;->getServerSocket()Ljava/net/ServerSocket; -Ljava/net/SocketImpl;->getSocket()Ljava/net/Socket; -Ljava/net/SocketImpl;->reset()V -Ljava/net/SocketImpl;->setOption(Ljava/net/SocketOption;Ljava/lang/Object;)V -Ljava/net/SocketImpl;->setServerSocket(Ljava/net/ServerSocket;)V -Ljava/net/SocketImpl;->setSocket(Ljava/net/Socket;)V -Ljava/net/SocketTimeoutException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V -Ljava/net/SocketTimeoutException;-><init>(Ljava/lang/Throwable;)V -Ljava/net/StandardSocketOptions$StdSocketOption;-><init>(Ljava/lang/String;Ljava/lang/Class;)V -Ljava/net/StandardSocketOptions$StdSocketOption;->name:Ljava/lang/String; -Ljava/net/StandardSocketOptions$StdSocketOption;->type:Ljava/lang/Class; -Ljava/net/StandardSocketOptions;-><init>()V -Ljava/net/URI$Parser;->at(IIC)Z -Ljava/net/URI$Parser;->at(IILjava/lang/String;)Z -Ljava/net/URI$Parser;->charAt(I)C -Ljava/net/URI$Parser;->checkChar(IJJLjava/lang/String;)V -Ljava/net/URI$Parser;->checkChars(IIJJLjava/lang/String;)V -Ljava/net/URI$Parser;->fail(Ljava/lang/String;)V -Ljava/net/URI$Parser;->fail(Ljava/lang/String;I)V -Ljava/net/URI$Parser;->failExpecting(Ljava/lang/String;I)V -Ljava/net/URI$Parser;->failExpecting(Ljava/lang/String;Ljava/lang/String;I)V -Ljava/net/URI$Parser;->input:Ljava/lang/String; -Ljava/net/URI$Parser;->ipv6byteCount:I -Ljava/net/URI$Parser;->parse(Z)V -Ljava/net/URI$Parser;->parseAuthority(II)I -Ljava/net/URI$Parser;->parseHierarchical(II)I -Ljava/net/URI$Parser;->parseHostname(II)I -Ljava/net/URI$Parser;->parseIPv4Address(II)I -Ljava/net/URI$Parser;->parseIPv6Reference(II)I -Ljava/net/URI$Parser;->parseServer(II)I -Ljava/net/URI$Parser;->requireServerAuthority:Z -Ljava/net/URI$Parser;->scan(IIC)I -Ljava/net/URI$Parser;->scan(IIJJ)I -Ljava/net/URI$Parser;->scan(IILjava/lang/String;Ljava/lang/String;)I -Ljava/net/URI$Parser;->scanByte(II)I -Ljava/net/URI$Parser;->scanEscape(IIC)I -Ljava/net/URI$Parser;->scanHexPost(II)I -Ljava/net/URI$Parser;->scanHexSeq(II)I -Ljava/net/URI$Parser;->scanIPv4Address(IIZ)I -Ljava/net/URI$Parser;->substring(II)Ljava/lang/String; -Ljava/net/URI$Parser;->takeIPv4Address(IILjava/lang/String;)I -Ljava/net/URI;-><init>()V -Ljava/net/URI;->appendAuthority(Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V -Ljava/net/URI;->appendEncoded(Ljava/lang/StringBuffer;C)V -Ljava/net/URI;->appendEscape(Ljava/lang/StringBuffer;B)V -Ljava/net/URI;->appendFragment(Ljava/lang/StringBuffer;Ljava/lang/String;)V -Ljava/net/URI;->appendSchemeSpecificPart(Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V -Ljava/net/URI;->authority:Ljava/lang/String; -Ljava/net/URI;->checkPath(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -Ljava/net/URI;->compare(Ljava/lang/String;Ljava/lang/String;)I -Ljava/net/URI;->compareIgnoringCase(Ljava/lang/String;Ljava/lang/String;)I -Ljava/net/URI;->decode(C)I -Ljava/net/URI;->decode(CC)B -Ljava/net/URI;->decode(Ljava/lang/String;)Ljava/lang/String; -Ljava/net/URI;->decodedAuthority:Ljava/lang/String; -Ljava/net/URI;->decodedFragment:Ljava/lang/String; -Ljava/net/URI;->decodedPath:Ljava/lang/String; -Ljava/net/URI;->decodedQuery:Ljava/lang/String; -Ljava/net/URI;->decodedSchemeSpecificPart:Ljava/lang/String; -Ljava/net/URI;->decodedUserInfo:Ljava/lang/String; -Ljava/net/URI;->defineSchemeSpecificPart()V -Ljava/net/URI;->defineString()V -Ljava/net/URI;->encode(Ljava/lang/String;)Ljava/lang/String; -Ljava/net/URI;->equal(Ljava/lang/String;Ljava/lang/String;)Z -Ljava/net/URI;->equalIgnoringCase(Ljava/lang/String;Ljava/lang/String;)Z -Ljava/net/URI;->hash(ILjava/lang/String;)I -Ljava/net/URI;->hash:I -Ljava/net/URI;->hashIgnoringCase(ILjava/lang/String;)I -Ljava/net/URI;->hexDigits:[C -Ljava/net/URI;->highMask(CC)J -Ljava/net/URI;->highMask(Ljava/lang/String;)J -Ljava/net/URI;->H_ALPHA:J -Ljava/net/URI;->H_ALPHANUM:J -Ljava/net/URI;->H_DASH:J -Ljava/net/URI;->H_DIGIT:J -Ljava/net/URI;->H_DOT:J -Ljava/net/URI;->H_ESCAPED:J -Ljava/net/URI;->H_HEX:J -Ljava/net/URI;->H_LEFT_BRACKET:J -Ljava/net/URI;->H_LOWALPHA:J -Ljava/net/URI;->H_MARK:J -Ljava/net/URI;->H_PATH:J -Ljava/net/URI;->H_PCHAR:J -Ljava/net/URI;->H_REG_NAME:J -Ljava/net/URI;->H_RESERVED:J -Ljava/net/URI;->H_SCHEME:J -Ljava/net/URI;->H_SERVER:J -Ljava/net/URI;->H_SERVER_PERCENT:J -Ljava/net/URI;->H_UNDERSCORE:J -Ljava/net/URI;->H_UNRESERVED:J -Ljava/net/URI;->H_UPALPHA:J -Ljava/net/URI;->H_URIC:J -Ljava/net/URI;->H_URIC_NO_SLASH:J -Ljava/net/URI;->H_USERINFO:J -Ljava/net/URI;->join([C[I)I -Ljava/net/URI;->lowMask(CC)J -Ljava/net/URI;->lowMask(Ljava/lang/String;)J -Ljava/net/URI;->L_ALPHA:J -Ljava/net/URI;->L_ALPHANUM:J -Ljava/net/URI;->L_DASH:J -Ljava/net/URI;->L_DIGIT:J -Ljava/net/URI;->L_DOT:J -Ljava/net/URI;->L_ESCAPED:J -Ljava/net/URI;->L_HEX:J -Ljava/net/URI;->L_LEFT_BRACKET:J -Ljava/net/URI;->L_LOWALPHA:J -Ljava/net/URI;->L_MARK:J -Ljava/net/URI;->L_PATH:J -Ljava/net/URI;->L_PCHAR:J -Ljava/net/URI;->L_REG_NAME:J -Ljava/net/URI;->L_RESERVED:J -Ljava/net/URI;->L_SCHEME:J -Ljava/net/URI;->L_SERVER:J -Ljava/net/URI;->L_SERVER_PERCENT:J -Ljava/net/URI;->L_UNDERSCORE:J -Ljava/net/URI;->L_UNRESERVED:J -Ljava/net/URI;->L_UPALPHA:J -Ljava/net/URI;->L_URIC:J -Ljava/net/URI;->L_URIC_NO_SLASH:J -Ljava/net/URI;->L_USERINFO:J -Ljava/net/URI;->match(CJJ)Z -Ljava/net/URI;->maybeAddLeadingDot([C[I)V -Ljava/net/URI;->needsNormalization(Ljava/lang/String;)I -Ljava/net/URI;->normalize(Ljava/lang/String;)Ljava/lang/String; -Ljava/net/URI;->normalize(Ljava/lang/String;Z)Ljava/lang/String; -Ljava/net/URI;->normalize(Ljava/net/URI;)Ljava/net/URI; -Ljava/net/URI;->normalizedHash(ILjava/lang/String;)I -Ljava/net/URI;->path:Ljava/lang/String; -Ljava/net/URI;->quote(Ljava/lang/String;JJ)Ljava/lang/String; -Ljava/net/URI;->relativize(Ljava/net/URI;Ljava/net/URI;)Ljava/net/URI; -Ljava/net/URI;->removeDots([C[IZ)V -Ljava/net/URI;->resolve(Ljava/net/URI;Ljava/net/URI;)Ljava/net/URI; -Ljava/net/URI;->resolvePath(Ljava/lang/String;Ljava/lang/String;Z)Ljava/lang/String; -Ljava/net/URI;->scheme:Ljava/lang/String; -Ljava/net/URI;->schemeSpecificPart:Ljava/lang/String; -Ljava/net/URI;->split([C[I)V -Ljava/net/URI;->toLower(C)I -Ljava/net/URI;->toString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Ljava/net/URI;->toUpper(C)I -Ljava/net/URI;->userInfo:Ljava/lang/String; -Ljava/net/URISyntaxException;->index:I -Ljava/net/URISyntaxException;->input:Ljava/lang/String; -Ljava/net/URL;->authority:Ljava/lang/String; -Ljava/net/URL;->BUILTIN_HANDLER_CLASS_NAMES:Ljava/util/Set; -Ljava/net/URL;->checkSpecifyHandler(Ljava/lang/SecurityManager;)V -Ljava/net/URL;->createBuiltinHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler; -Ljava/net/URL;->createBuiltinHandlerClassNames()Ljava/util/Set; -Ljava/net/URL;->fabricateNewURL()Ljava/net/URL; -Ljava/net/URL;->file:Ljava/lang/String; -Ljava/net/URL;->getURLStreamHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler; -Ljava/net/URL;->hashCode:I -Ljava/net/URL;->host:Ljava/lang/String; -Ljava/net/URL;->hostAddress:Ljava/net/InetAddress; -Ljava/net/URL;->isBuiltinStreamHandler(Ljava/lang/String;)Z -Ljava/net/URL;->isValidProtocol(Ljava/lang/String;)Z -Ljava/net/URL;->path:Ljava/lang/String; -Ljava/net/URL;->port:I -Ljava/net/URL;->protocolPathProp:Ljava/lang/String; -Ljava/net/URL;->query:Ljava/lang/String; -Ljava/net/URL;->ref:Ljava/lang/String; -Ljava/net/URL;->resetState()V -Ljava/net/URL;->set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V -Ljava/net/URL;->set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -Ljava/net/URL;->setDeserializedFields(Ljava/net/URLStreamHandler;)Ljava/net/URL; -Ljava/net/URL;->setSerializedHashCode(I)V -Ljava/net/URL;->streamHandlerLock:Ljava/lang/Object; -Ljava/net/URL;->tempState:Ljava/net/UrlDeserializedState; -Ljava/net/URL;->userInfo:Ljava/lang/String; -Ljava/net/URLClassLoader;-><init>([Ljava/net/URL;Ljava/lang/ClassLoader;Ljava/security/AccessControlContext;)V -Ljava/net/URLClassLoader;-><init>([Ljava/net/URL;Ljava/security/AccessControlContext;)V -Ljava/net/URLClassLoader;->closeables:Ljava/util/WeakHashMap; -Ljava/net/URLClassLoader;->defineClass(Ljava/lang/String;Lsun/misc/Resource;)Ljava/lang/Class; -Ljava/net/URLClassLoader;->definePackageInternal(Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;)V -Ljava/net/URLClassLoader;->getAndVerifyPackage(Ljava/lang/String;Ljava/util/jar/Manifest;Ljava/net/URL;)Ljava/lang/Package; -Ljava/net/URLClassLoader;->isSealed(Ljava/lang/String;Ljava/util/jar/Manifest;)Z -Ljava/net/URLConnection;->checkfpx(Ljava/io/InputStream;)Z -Ljava/net/URLConnection;->connectTimeout:I -Ljava/net/URLConnection;->contentClassPrefix:Ljava/lang/String; -Ljava/net/URLConnection;->contentPathProp:Ljava/lang/String; -Ljava/net/URLConnection;->defaultAllowUserInteraction:Z -Ljava/net/URLConnection;->defaultUseCaches:Z -Ljava/net/URLConnection;->factory:Ljava/net/ContentHandlerFactory; -Ljava/net/URLConnection;->fileNameMap:Ljava/net/FileNameMap; -Ljava/net/URLConnection;->getContentHandler()Ljava/net/ContentHandler; -Ljava/net/URLConnection;->getContentHandlerPkgPrefixes()Ljava/lang/String; -Ljava/net/URLConnection;->handlers:Ljava/util/Hashtable; -Ljava/net/URLConnection;->lookupContentHandlerClassFor(Ljava/lang/String;)Ljava/net/ContentHandler; -Ljava/net/URLConnection;->readBytes([IILjava/io/InputStream;)I -Ljava/net/URLConnection;->readTimeout:I -Ljava/net/URLConnection;->requests:Lsun/net/www/MessageHeader; -Ljava/net/URLConnection;->skipForward(Ljava/io/InputStream;J)J -Ljava/net/URLConnection;->stripOffParameters(Ljava/lang/String;)Ljava/lang/String; -Ljava/net/URLConnection;->typeToPackageName(Ljava/lang/String;)Ljava/lang/String; -Ljava/net/URLDecoder;->dfltEncName:Ljava/lang/String; -Ljava/net/URLDecoder;->isValidHexChar(C)Z -Ljava/net/UrlDeserializedState;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V -Ljava/net/UrlDeserializedState;->authority:Ljava/lang/String; -Ljava/net/UrlDeserializedState;->file:Ljava/lang/String; -Ljava/net/UrlDeserializedState;->getAuthority()Ljava/lang/String; -Ljava/net/UrlDeserializedState;->getFile()Ljava/lang/String; -Ljava/net/UrlDeserializedState;->getHashCode()I -Ljava/net/UrlDeserializedState;->getHost()Ljava/lang/String; -Ljava/net/UrlDeserializedState;->getPort()I -Ljava/net/UrlDeserializedState;->getProtocol()Ljava/lang/String; -Ljava/net/UrlDeserializedState;->getRef()Ljava/lang/String; -Ljava/net/UrlDeserializedState;->hashCode:I -Ljava/net/UrlDeserializedState;->host:Ljava/lang/String; -Ljava/net/UrlDeserializedState;->port:I -Ljava/net/UrlDeserializedState;->protocol:Ljava/lang/String; -Ljava/net/UrlDeserializedState;->reconstituteUrlString()Ljava/lang/String; -Ljava/net/UrlDeserializedState;->ref:Ljava/lang/String; -Ljava/net/URLEncoder;-><init>()V -Ljava/net/URLEncoder;->caseDiff:I -Ljava/net/URLEncoder;->dfltEncName:Ljava/lang/String; -Ljava/net/URLEncoder;->dontNeedEncoding:Ljava/util/BitSet; -Ljava/nio/Buffer;-><init>(IIIII)V -Ljava/nio/Buffer;->checkBounds(III)V -Ljava/nio/Buffer;->checkIndex(I)I -Ljava/nio/Buffer;->checkIndex(II)I -Ljava/nio/Buffer;->discardMark()V -Ljava/nio/Buffer;->getElementSizeShift()I -Ljava/nio/Buffer;->mark:I -Ljava/nio/Buffer;->markValue()I -Ljava/nio/Buffer;->nextGetIndex()I -Ljava/nio/Buffer;->nextGetIndex(I)I -Ljava/nio/Buffer;->nextPutIndex()I -Ljava/nio/Buffer;->nextPutIndex(I)I -Ljava/nio/Buffer;->SPLITERATOR_CHARACTERISTICS:I -Ljava/nio/Buffer;->truncate()V -Ljava/nio/ByteBuffer;-><init>(IIII)V -Ljava/nio/ByteBuffer;-><init>(IIII[BI)V -Ljava/nio/ByteBuffer;->bigEndian:Z -Ljava/nio/ByteBuffer;->compare(BB)I -Ljava/nio/ByteBuffer;->equals(BB)Z -Ljava/nio/ByteBuffer;->getCharUnchecked(I)C -Ljava/nio/ByteBuffer;->getDoubleUnchecked(I)D -Ljava/nio/ByteBuffer;->getFloatUnchecked(I)F -Ljava/nio/ByteBuffer;->getIntUnchecked(I)I -Ljava/nio/ByteBuffer;->getLongUnchecked(I)J -Ljava/nio/ByteBuffer;->getShortUnchecked(I)S -Ljava/nio/ByteBuffer;->getUnchecked(I[CII)V -Ljava/nio/ByteBuffer;->getUnchecked(I[DII)V -Ljava/nio/ByteBuffer;->getUnchecked(I[FII)V -Ljava/nio/ByteBuffer;->getUnchecked(I[III)V -Ljava/nio/ByteBuffer;->getUnchecked(I[JII)V -Ljava/nio/ByteBuffer;->getUnchecked(I[SII)V -Ljava/nio/ByteBuffer;->isAccessible()Z -Ljava/nio/ByteBuffer;->nativeByteOrder:Z -Ljava/nio/ByteBuffer;->putCharUnchecked(IC)V -Ljava/nio/ByteBuffer;->putDoubleUnchecked(ID)V -Ljava/nio/ByteBuffer;->putFloatUnchecked(IF)V -Ljava/nio/ByteBuffer;->putIntUnchecked(II)V -Ljava/nio/ByteBuffer;->putLongUnchecked(IJ)V -Ljava/nio/ByteBuffer;->putShortUnchecked(IS)V -Ljava/nio/ByteBuffer;->putUnchecked(I[CII)V -Ljava/nio/ByteBuffer;->putUnchecked(I[DII)V -Ljava/nio/ByteBuffer;->putUnchecked(I[FII)V -Ljava/nio/ByteBuffer;->putUnchecked(I[III)V -Ljava/nio/ByteBuffer;->putUnchecked(I[JII)V -Ljava/nio/ByteBuffer;->putUnchecked(I[SII)V -Ljava/nio/ByteBuffer;->setAccessible(Z)V -Ljava/nio/ByteBuffer;->_get(I)B -Ljava/nio/ByteBuffer;->_put(IB)V -Ljava/nio/ByteOrder;-><init>(Ljava/lang/String;)V -Ljava/nio/ByteOrder;->name:Ljava/lang/String; -Ljava/nio/channels/AsynchronousChannelGroup;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider; -Ljava/nio/channels/AsynchronousFileChannel;->NO_ATTRIBUTES:[Ljava/nio/file/attribute/FileAttribute; -Ljava/nio/channels/AsynchronousServerSocketChannel;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider; -Ljava/nio/channels/AsynchronousSocketChannel;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider; -Ljava/nio/channels/Channels$ReadableByteChannelImpl;-><init>(Ljava/io/InputStream;)V -Ljava/nio/channels/Channels$ReadableByteChannelImpl;->buf:[B -Ljava/nio/channels/Channels$ReadableByteChannelImpl;->in:Ljava/io/InputStream; -Ljava/nio/channels/Channels$ReadableByteChannelImpl;->open:Z -Ljava/nio/channels/Channels$ReadableByteChannelImpl;->readLock:Ljava/lang/Object; -Ljava/nio/channels/Channels$ReadableByteChannelImpl;->TRANSFER_SIZE:I -Ljava/nio/channels/Channels$WritableByteChannelImpl;-><init>(Ljava/io/OutputStream;)V -Ljava/nio/channels/Channels$WritableByteChannelImpl;->buf:[B -Ljava/nio/channels/Channels$WritableByteChannelImpl;->open:Z -Ljava/nio/channels/Channels$WritableByteChannelImpl;->out:Ljava/io/OutputStream; -Ljava/nio/channels/Channels$WritableByteChannelImpl;->TRANSFER_SIZE:I -Ljava/nio/channels/Channels$WritableByteChannelImpl;->writeLock:Ljava/lang/Object; -Ljava/nio/channels/Channels;-><init>()V -Ljava/nio/channels/Channels;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V -Ljava/nio/channels/Channels;->writeFully(Ljava/nio/channels/WritableByteChannel;Ljava/nio/ByteBuffer;)V -Ljava/nio/channels/Channels;->writeFullyImpl(Ljava/nio/channels/WritableByteChannel;Ljava/nio/ByteBuffer;)V -Ljava/nio/channels/FileChannel$MapMode;-><init>(Ljava/lang/String;)V -Ljava/nio/channels/FileChannel$MapMode;->name:Ljava/lang/String; -Ljava/nio/channels/FileChannel;->NO_ATTRIBUTES:[Ljava/nio/file/attribute/FileAttribute; -Ljava/nio/channels/FileLock;->channel:Ljava/nio/channels/Channel; -Ljava/nio/channels/FileLock;->position:J -Ljava/nio/channels/FileLock;->shared:Z -Ljava/nio/channels/FileLock;->size:J -Ljava/nio/channels/SelectionKey;->attachment:Ljava/lang/Object; -Ljava/nio/channels/SelectionKey;->attachmentUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; -Ljava/nio/channels/spi/AbstractInterruptibleChannel;->blockedOn(Lsun/nio/ch/Interruptible;)V -Ljava/nio/channels/spi/AbstractInterruptibleChannel;->closeLock:Ljava/lang/Object; -Ljava/nio/channels/spi/AbstractInterruptibleChannel;->interrupted:Ljava/lang/Thread; -Ljava/nio/channels/spi/AbstractInterruptibleChannel;->interruptor:Lsun/nio/ch/Interruptible; -Ljava/nio/channels/spi/AbstractInterruptibleChannel;->open:Z -Ljava/nio/channels/spi/AbstractSelectableChannel;->addKey(Ljava/nio/channels/SelectionKey;)V -Ljava/nio/channels/spi/AbstractSelectableChannel;->blocking:Z -Ljava/nio/channels/spi/AbstractSelectableChannel;->findKey(Ljava/nio/channels/Selector;)Ljava/nio/channels/SelectionKey; -Ljava/nio/channels/spi/AbstractSelectableChannel;->haveValidKeys()Z -Ljava/nio/channels/spi/AbstractSelectableChannel;->keyCount:I -Ljava/nio/channels/spi/AbstractSelectableChannel;->keyLock:Ljava/lang/Object; -Ljava/nio/channels/spi/AbstractSelectableChannel;->keys:[Ljava/nio/channels/SelectionKey; -Ljava/nio/channels/spi/AbstractSelectableChannel;->provider:Ljava/nio/channels/spi/SelectorProvider; -Ljava/nio/channels/spi/AbstractSelectableChannel;->regLock:Ljava/lang/Object; -Ljava/nio/channels/spi/AbstractSelectableChannel;->removeKey(Ljava/nio/channels/SelectionKey;)V -Ljava/nio/channels/spi/AbstractSelectionKey;->invalidate()V -Ljava/nio/channels/spi/AbstractSelectionKey;->valid:Z -Ljava/nio/channels/spi/AbstractSelector;->cancel(Ljava/nio/channels/SelectionKey;)V -Ljava/nio/channels/spi/AbstractSelector;->cancelledKeys:Ljava/util/Set; -Ljava/nio/channels/spi/AbstractSelector;->interruptor:Lsun/nio/ch/Interruptible; -Ljava/nio/channels/spi/AbstractSelector;->provider:Ljava/nio/channels/spi/SelectorProvider; -Ljava/nio/channels/spi/AbstractSelector;->selectorOpen:Ljava/util/concurrent/atomic/AtomicBoolean; -Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;-><init>()V -Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->load()Ljava/nio/channels/spi/AsynchronousChannelProvider; -Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->loadProviderAsService()Ljava/nio/channels/spi/AsynchronousChannelProvider; -Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->loadProviderFromProperty()Ljava/nio/channels/spi/AsynchronousChannelProvider; -Ljava/nio/channels/spi/AsynchronousChannelProvider$ProviderHolder;->provider:Ljava/nio/channels/spi/AsynchronousChannelProvider; -Ljava/nio/channels/spi/AsynchronousChannelProvider;-><init>(Ljava/lang/Void;)V -Ljava/nio/channels/spi/AsynchronousChannelProvider;->checkPermission()Ljava/lang/Void; -Ljava/nio/channels/spi/SelectorProvider;->loadProviderAsService()Z -Ljava/nio/channels/spi/SelectorProvider;->loadProviderFromProperty()Z -Ljava/nio/channels/spi/SelectorProvider;->lock:Ljava/lang/Object; -Ljava/nio/channels/spi/SelectorProvider;->provider:Ljava/nio/channels/spi/SelectorProvider; -Ljava/nio/CharBuffer;-><init>(IIII)V -Ljava/nio/CharBuffer;-><init>(IIII[CI)V -Ljava/nio/CharBuffer;->compare(CC)I -Ljava/nio/CharBuffer;->equals(CC)Z -Ljava/nio/CharBuffer;->getUnchecked(I)C -Ljava/nio/CharBuffer;->hb:[C -Ljava/nio/CharBuffer;->isReadOnly:Z -Ljava/nio/CharBuffer;->offset:I -Ljava/nio/charset/Charset;->aliases:[Ljava/lang/String; -Ljava/nio/charset/Charset;->aliasSet:Ljava/util/Set; -Ljava/nio/charset/Charset;->atBugLevel(Ljava/lang/String;)Z -Ljava/nio/charset/Charset;->bugLevel:Ljava/lang/String; -Ljava/nio/charset/Charset;->cache(Ljava/lang/String;Ljava/nio/charset/Charset;)V -Ljava/nio/charset/Charset;->cache1:Ljava/util/Map$Entry; -Ljava/nio/charset/Charset;->cache2:Ljava/util/HashMap; -Ljava/nio/charset/Charset;->checkName(Ljava/lang/String;)V -Ljava/nio/charset/Charset;->forNameUEE(Ljava/lang/String;)Ljava/nio/charset/Charset; -Ljava/nio/charset/Charset;->gate:Ljava/lang/ThreadLocal; -Ljava/nio/charset/Charset;->lookup(Ljava/lang/String;)Ljava/nio/charset/Charset; -Ljava/nio/charset/Charset;->lookup2(Ljava/lang/String;)Ljava/nio/charset/Charset; -Ljava/nio/charset/Charset;->lookupViaProviders(Ljava/lang/String;)Ljava/nio/charset/Charset; -Ljava/nio/charset/Charset;->name:Ljava/lang/String; -Ljava/nio/charset/Charset;->providers()Ljava/util/Iterator; -Ljava/nio/charset/Charset;->put(Ljava/util/Iterator;Ljava/util/Map;)V -Ljava/nio/charset/CharsetDecoder;-><init>(Ljava/nio/charset/Charset;FFLjava/lang/String;)V -Ljava/nio/charset/CharsetDecoder;->averageCharsPerByte:F -Ljava/nio/charset/CharsetDecoder;->charset:Ljava/nio/charset/Charset; -Ljava/nio/charset/CharsetDecoder;->malformedInputAction:Ljava/nio/charset/CodingErrorAction; -Ljava/nio/charset/CharsetDecoder;->maxCharsPerByte:F -Ljava/nio/charset/CharsetDecoder;->replacement:Ljava/lang/String; -Ljava/nio/charset/CharsetDecoder;->state:I -Ljava/nio/charset/CharsetDecoder;->stateNames:[Ljava/lang/String; -Ljava/nio/charset/CharsetDecoder;->ST_CODING:I -Ljava/nio/charset/CharsetDecoder;->ST_END:I -Ljava/nio/charset/CharsetDecoder;->ST_FLUSHED:I -Ljava/nio/charset/CharsetDecoder;->ST_RESET:I -Ljava/nio/charset/CharsetDecoder;->throwIllegalStateException(II)V -Ljava/nio/charset/CharsetDecoder;->unmappableCharacterAction:Ljava/nio/charset/CodingErrorAction; -Ljava/nio/charset/CharsetEncoder;-><init>(Ljava/nio/charset/Charset;FF[BZ)V -Ljava/nio/charset/CharsetEncoder;->averageBytesPerChar:F -Ljava/nio/charset/CharsetEncoder;->cachedDecoder:Ljava/lang/ref/WeakReference; -Ljava/nio/charset/CharsetEncoder;->charset:Ljava/nio/charset/Charset; -Ljava/nio/charset/CharsetEncoder;->malformedInputAction:Ljava/nio/charset/CodingErrorAction; -Ljava/nio/charset/CharsetEncoder;->maxBytesPerChar:F -Ljava/nio/charset/CharsetEncoder;->replacement:[B -Ljava/nio/charset/CharsetEncoder;->state:I -Ljava/nio/charset/CharsetEncoder;->stateNames:[Ljava/lang/String; -Ljava/nio/charset/CharsetEncoder;->ST_CODING:I -Ljava/nio/charset/CharsetEncoder;->ST_END:I -Ljava/nio/charset/CharsetEncoder;->ST_FLUSHED:I -Ljava/nio/charset/CharsetEncoder;->ST_RESET:I -Ljava/nio/charset/CharsetEncoder;->throwIllegalStateException(II)V -Ljava/nio/charset/CharsetEncoder;->unmappableCharacterAction:Ljava/nio/charset/CodingErrorAction; -Ljava/nio/charset/CoderResult$Cache;-><init>()V -Ljava/nio/charset/CoderResult$Cache;->cache:Ljava/util/Map; -Ljava/nio/charset/CoderResult$Cache;->create(I)Ljava/nio/charset/CoderResult; -Ljava/nio/charset/CoderResult$Cache;->get(I)Ljava/nio/charset/CoderResult; -Ljava/nio/charset/CoderResult;-><init>(II)V -Ljava/nio/charset/CoderResult;->CR_ERROR_MIN:I -Ljava/nio/charset/CoderResult;->CR_MALFORMED:I -Ljava/nio/charset/CoderResult;->CR_OVERFLOW:I -Ljava/nio/charset/CoderResult;->CR_UNDERFLOW:I -Ljava/nio/charset/CoderResult;->CR_UNMAPPABLE:I -Ljava/nio/charset/CoderResult;->length:I -Ljava/nio/charset/CoderResult;->malformedCache:Ljava/nio/charset/CoderResult$Cache; -Ljava/nio/charset/CoderResult;->names:[Ljava/lang/String; -Ljava/nio/charset/CoderResult;->type:I -Ljava/nio/charset/CoderResult;->unmappableCache:Ljava/nio/charset/CoderResult$Cache; -Ljava/nio/charset/CodingErrorAction;-><init>(Ljava/lang/String;)V -Ljava/nio/charset/CodingErrorAction;->name:Ljava/lang/String; -Ljava/nio/charset/IllegalCharsetNameException;->charsetName:Ljava/lang/String; -Ljava/nio/charset/MalformedInputException;->inputLength:I -Ljava/nio/charset/ModifiedUtf8;-><init>()V -Ljava/nio/charset/ModifiedUtf8;->countBytes(Ljava/lang/String;Z)J -Ljava/nio/charset/ModifiedUtf8;->decode([B[CII)Ljava/lang/String; -Ljava/nio/charset/ModifiedUtf8;->encode(Ljava/lang/String;)[B -Ljava/nio/charset/ModifiedUtf8;->encode([BILjava/lang/String;)V -Ljava/nio/charset/StandardCharsets;-><init>()V -Ljava/nio/charset/UnmappableCharacterException;->inputLength:I -Ljava/nio/charset/UnsupportedCharsetException;->charsetName:Ljava/lang/String; -Ljava/nio/DirectByteBuffer$MemoryRef;-><init>(I)V -Ljava/nio/DirectByteBuffer$MemoryRef;-><init>(JLjava/lang/Object;)V -Ljava/nio/DirectByteBuffer$MemoryRef;->allocatedAddress:J -Ljava/nio/DirectByteBuffer$MemoryRef;->buffer:[B -Ljava/nio/DirectByteBuffer$MemoryRef;->free()V -Ljava/nio/DirectByteBuffer$MemoryRef;->isAccessible:Z -Ljava/nio/DirectByteBuffer$MemoryRef;->isFreed:Z -Ljava/nio/DirectByteBuffer$MemoryRef;->offset:I -Ljava/nio/DirectByteBuffer$MemoryRef;->originalBufferObject:Ljava/lang/Object; -Ljava/nio/DirectByteBuffer;-><init>(IJLjava/io/FileDescriptor;Ljava/lang/Runnable;Z)V -Ljava/nio/DirectByteBuffer;-><init>(ILjava/nio/DirectByteBuffer$MemoryRef;)V -Ljava/nio/DirectByteBuffer;-><init>(Ljava/nio/DirectByteBuffer$MemoryRef;IIIII)V -Ljava/nio/DirectByteBuffer;-><init>(Ljava/nio/DirectByteBuffer$MemoryRef;IIIIIZ)V -Ljava/nio/DirectByteBuffer;->cleaner:Lsun/misc/Cleaner; -Ljava/nio/DirectByteBuffer;->get(J)B -Ljava/nio/DirectByteBuffer;->getCharUnchecked(I)C -Ljava/nio/DirectByteBuffer;->getDouble(J)D -Ljava/nio/DirectByteBuffer;->getDoubleUnchecked(I)D -Ljava/nio/DirectByteBuffer;->getFloat(J)F -Ljava/nio/DirectByteBuffer;->getFloatUnchecked(I)F -Ljava/nio/DirectByteBuffer;->getInt(J)I -Ljava/nio/DirectByteBuffer;->getIntUnchecked(I)I -Ljava/nio/DirectByteBuffer;->getLong(J)J -Ljava/nio/DirectByteBuffer;->getLongUnchecked(I)J -Ljava/nio/DirectByteBuffer;->getShort(J)S -Ljava/nio/DirectByteBuffer;->getShortUnchecked(I)S -Ljava/nio/DirectByteBuffer;->getUnchecked(I[CII)V -Ljava/nio/DirectByteBuffer;->getUnchecked(I[DII)V -Ljava/nio/DirectByteBuffer;->getUnchecked(I[FII)V -Ljava/nio/DirectByteBuffer;->getUnchecked(I[III)V -Ljava/nio/DirectByteBuffer;->getUnchecked(I[JII)V -Ljava/nio/DirectByteBuffer;->getUnchecked(I[SII)V -Ljava/nio/DirectByteBuffer;->isAccessible()Z -Ljava/nio/DirectByteBuffer;->ix(I)J -Ljava/nio/DirectByteBuffer;->memoryRef:Ljava/nio/DirectByteBuffer$MemoryRef; -Ljava/nio/DirectByteBuffer;->put(JB)Ljava/nio/ByteBuffer; -Ljava/nio/DirectByteBuffer;->putChar(JC)Ljava/nio/ByteBuffer; -Ljava/nio/DirectByteBuffer;->putCharUnchecked(IC)V -Ljava/nio/DirectByteBuffer;->putDouble(JD)Ljava/nio/ByteBuffer; -Ljava/nio/DirectByteBuffer;->putDoubleUnchecked(ID)V -Ljava/nio/DirectByteBuffer;->putFloat(JF)Ljava/nio/ByteBuffer; -Ljava/nio/DirectByteBuffer;->putFloatUnchecked(IF)V -Ljava/nio/DirectByteBuffer;->putInt(JI)Ljava/nio/ByteBuffer; -Ljava/nio/DirectByteBuffer;->putIntUnchecked(II)V -Ljava/nio/DirectByteBuffer;->putLong(JJ)Ljava/nio/ByteBuffer; -Ljava/nio/DirectByteBuffer;->putLongUnchecked(IJ)V -Ljava/nio/DirectByteBuffer;->putShort(JS)Ljava/nio/ByteBuffer; -Ljava/nio/DirectByteBuffer;->putShortUnchecked(IS)V -Ljava/nio/DirectByteBuffer;->putUnchecked(I[CII)V -Ljava/nio/DirectByteBuffer;->putUnchecked(I[DII)V -Ljava/nio/DirectByteBuffer;->putUnchecked(I[FII)V -Ljava/nio/DirectByteBuffer;->putUnchecked(I[III)V -Ljava/nio/DirectByteBuffer;->putUnchecked(I[JII)V -Ljava/nio/DirectByteBuffer;->putUnchecked(I[SII)V -Ljava/nio/DirectByteBuffer;->setAccessible(Z)V -Ljava/nio/DirectByteBuffer;->_get(I)B -Ljava/nio/DirectByteBuffer;->_put(IB)V -Ljava/nio/DoubleBuffer;-><init>(IIII)V -Ljava/nio/DoubleBuffer;-><init>(IIII[DI)V -Ljava/nio/DoubleBuffer;->compare(DD)I -Ljava/nio/DoubleBuffer;->equals(DD)Z -Ljava/nio/DoubleBuffer;->hb:[D -Ljava/nio/DoubleBuffer;->isReadOnly:Z -Ljava/nio/DoubleBuffer;->offset:I -Ljava/nio/file/attribute/AclEntry$Builder;-><init>(Ljava/nio/file/attribute/AclEntryType;Ljava/nio/file/attribute/UserPrincipal;Ljava/util/Set;Ljava/util/Set;)V -Ljava/nio/file/attribute/AclEntry$Builder;->checkSet(Ljava/util/Set;Ljava/lang/Class;)V -Ljava/nio/file/attribute/AclEntry$Builder;->flags:Ljava/util/Set; -Ljava/nio/file/attribute/AclEntry$Builder;->perms:Ljava/util/Set; -Ljava/nio/file/attribute/AclEntry$Builder;->type:Ljava/nio/file/attribute/AclEntryType; -Ljava/nio/file/attribute/AclEntry$Builder;->who:Ljava/nio/file/attribute/UserPrincipal; -Ljava/nio/file/attribute/AclEntry;-><init>(Ljava/nio/file/attribute/AclEntryType;Ljava/nio/file/attribute/UserPrincipal;Ljava/util/Set;Ljava/util/Set;)V -Ljava/nio/file/attribute/AclEntry;->flags:Ljava/util/Set; -Ljava/nio/file/attribute/AclEntry;->hash(ILjava/lang/Object;)I -Ljava/nio/file/attribute/AclEntry;->hash:I -Ljava/nio/file/attribute/AclEntry;->perms:Ljava/util/Set; -Ljava/nio/file/attribute/AclEntry;->type:Ljava/nio/file/attribute/AclEntryType; -Ljava/nio/file/attribute/AclEntry;->who:Ljava/nio/file/attribute/UserPrincipal; -Ljava/nio/file/attribute/FileTime;-><init>(JLjava/util/concurrent/TimeUnit;Ljava/time/Instant;)V -Ljava/nio/file/attribute/FileTime;->append(Ljava/lang/StringBuilder;II)Ljava/lang/StringBuilder; -Ljava/nio/file/attribute/FileTime;->DAYS_PER_10000_YEARS:J -Ljava/nio/file/attribute/FileTime;->HOURS_PER_DAY:J -Ljava/nio/file/attribute/FileTime;->instant:Ljava/time/Instant; -Ljava/nio/file/attribute/FileTime;->MAX_SECOND:J -Ljava/nio/file/attribute/FileTime;->MICROS_PER_SECOND:J -Ljava/nio/file/attribute/FileTime;->MILLIS_PER_SECOND:J -Ljava/nio/file/attribute/FileTime;->MINUTES_PER_HOUR:J -Ljava/nio/file/attribute/FileTime;->MIN_SECOND:J -Ljava/nio/file/attribute/FileTime;->NANOS_PER_MICRO:I -Ljava/nio/file/attribute/FileTime;->NANOS_PER_MILLI:I -Ljava/nio/file/attribute/FileTime;->NANOS_PER_SECOND:J -Ljava/nio/file/attribute/FileTime;->scale(JJJ)J -Ljava/nio/file/attribute/FileTime;->SECONDS_0000_TO_1970:J -Ljava/nio/file/attribute/FileTime;->SECONDS_PER_10000_YEARS:J -Ljava/nio/file/attribute/FileTime;->SECONDS_PER_DAY:J -Ljava/nio/file/attribute/FileTime;->SECONDS_PER_HOUR:J -Ljava/nio/file/attribute/FileTime;->SECONDS_PER_MINUTE:J -Ljava/nio/file/attribute/FileTime;->toDays()J -Ljava/nio/file/attribute/FileTime;->toExcessNanos(J)J -Ljava/nio/file/attribute/FileTime;->unit:Ljava/util/concurrent/TimeUnit; -Ljava/nio/file/attribute/FileTime;->value:J -Ljava/nio/file/attribute/FileTime;->valueAsString:Ljava/lang/String; -Ljava/nio/file/attribute/PosixFilePermissions;-><init>()V -Ljava/nio/file/attribute/PosixFilePermissions;->isR(C)Z -Ljava/nio/file/attribute/PosixFilePermissions;->isSet(CC)Z -Ljava/nio/file/attribute/PosixFilePermissions;->isW(C)Z -Ljava/nio/file/attribute/PosixFilePermissions;->isX(C)Z -Ljava/nio/file/attribute/PosixFilePermissions;->writeBits(Ljava/lang/StringBuilder;ZZZ)V -Ljava/nio/file/attribute/UserPrincipalNotFoundException;->name:Ljava/lang/String; -Ljava/nio/file/Files$AcceptAllFilter;-><init>()V -Ljava/nio/file/Files$AcceptAllFilter;->accept(Ljava/nio/file/Path;)Z -Ljava/nio/file/Files$AcceptAllFilter;->FILTER:Ljava/nio/file/Files$AcceptAllFilter; -Ljava/nio/file/Files$FileTypeDetectors;-><init>()V -Ljava/nio/file/Files$FileTypeDetectors;->createDefaultFileTypeDetector()Ljava/nio/file/spi/FileTypeDetector; -Ljava/nio/file/Files$FileTypeDetectors;->defaultFileTypeDetector:Ljava/nio/file/spi/FileTypeDetector; -Ljava/nio/file/Files$FileTypeDetectors;->installeDetectors:Ljava/util/List; -Ljava/nio/file/Files$FileTypeDetectors;->loadInstalledDetectors()Ljava/util/List; -Ljava/nio/file/Files;-><init>()V -Ljava/nio/file/Files;->asUncheckedRunnable(Ljava/io/Closeable;)Ljava/lang/Runnable; -Ljava/nio/file/Files;->BUFFER_SIZE:I -Ljava/nio/file/Files;->copy(Ljava/io/InputStream;Ljava/io/OutputStream;)J -Ljava/nio/file/Files;->MAX_BUFFER_SIZE:I -Ljava/nio/file/Files;->provider(Ljava/nio/file/Path;)Ljava/nio/file/spi/FileSystemProvider; -Ljava/nio/file/Files;->read(Ljava/io/InputStream;I)[B -Ljava/nio/file/FileSystemException;->file:Ljava/lang/String; -Ljava/nio/file/FileSystemException;->other:Ljava/lang/String; -Ljava/nio/file/FileSystems$DefaultFileSystemHolder;-><init>()V -Ljava/nio/file/FileSystems$DefaultFileSystemHolder;->defaultFileSystem()Ljava/nio/file/FileSystem; -Ljava/nio/file/FileSystems$DefaultFileSystemHolder;->defaultFileSystem:Ljava/nio/file/FileSystem; -Ljava/nio/file/FileSystems$DefaultFileSystemHolder;->getDefaultProvider()Ljava/nio/file/spi/FileSystemProvider; -Ljava/nio/file/FileSystems;-><init>()V -Ljava/nio/file/InvalidPathException;->index:I -Ljava/nio/file/InvalidPathException;->input:Ljava/lang/String; -Ljava/nio/file/LinkPermission;->checkName(Ljava/lang/String;)V -Ljava/nio/file/Paths;-><init>()V -Ljava/nio/file/spi/FileSystemProvider;-><init>(Ljava/lang/Void;)V -Ljava/nio/file/spi/FileSystemProvider;->checkPermission()Ljava/lang/Void; -Ljava/nio/file/spi/FileSystemProvider;->installedProviders:Ljava/util/List; -Ljava/nio/file/spi/FileSystemProvider;->loadingProviders:Z -Ljava/nio/file/spi/FileSystemProvider;->loadInstalledProviders()Ljava/util/List; -Ljava/nio/file/spi/FileSystemProvider;->lock:Ljava/lang/Object; -Ljava/nio/file/spi/FileTypeDetector;-><init>(Ljava/lang/Void;)V -Ljava/nio/file/spi/FileTypeDetector;->checkPermission()Ljava/lang/Void; -Ljava/nio/file/StandardWatchEventKinds$StdWatchEventKind;-><init>(Ljava/lang/String;Ljava/lang/Class;)V -Ljava/nio/file/StandardWatchEventKinds$StdWatchEventKind;->name:Ljava/lang/String; -Ljava/nio/file/StandardWatchEventKinds$StdWatchEventKind;->type:Ljava/lang/Class; -Ljava/nio/file/StandardWatchEventKinds;-><init>()V -Ljava/nio/FloatBuffer;-><init>(IIII)V -Ljava/nio/FloatBuffer;-><init>(IIII[FI)V -Ljava/nio/FloatBuffer;->compare(FF)I -Ljava/nio/FloatBuffer;->equals(FF)Z -Ljava/nio/FloatBuffer;->hb:[F -Ljava/nio/FloatBuffer;->isReadOnly:Z -Ljava/nio/FloatBuffer;->offset:I -Ljava/nio/IntBuffer;-><init>(IIII)V -Ljava/nio/IntBuffer;-><init>(IIII[II)V -Ljava/nio/IntBuffer;->compare(II)I -Ljava/nio/IntBuffer;->equals(II)Z -Ljava/nio/IntBuffer;->hb:[I -Ljava/nio/IntBuffer;->isReadOnly:Z -Ljava/nio/IntBuffer;->offset:I -Ljava/nio/LongBuffer;-><init>(IIII)V -Ljava/nio/LongBuffer;-><init>(IIII[JI)V -Ljava/nio/LongBuffer;->compare(JJ)I -Ljava/nio/LongBuffer;->equals(JJ)Z -Ljava/nio/LongBuffer;->hb:[J -Ljava/nio/LongBuffer;->isReadOnly:Z -Ljava/nio/LongBuffer;->offset:I -Ljava/nio/MappedByteBuffer;-><init>(IIII)V -Ljava/nio/MappedByteBuffer;-><init>(IIIILjava/io/FileDescriptor;)V -Ljava/nio/MappedByteBuffer;-><init>(IIII[BI)V -Ljava/nio/MappedByteBuffer;->checkMapped()V -Ljava/nio/MappedByteBuffer;->fd:Ljava/io/FileDescriptor; -Ljava/nio/MappedByteBuffer;->force0(Ljava/io/FileDescriptor;JJ)V -Ljava/nio/MappedByteBuffer;->isLoaded0(JJI)Z -Ljava/nio/MappedByteBuffer;->load0(JJ)V -Ljava/nio/MappedByteBuffer;->mappingAddress(J)J -Ljava/nio/MappedByteBuffer;->mappingLength(J)J -Ljava/nio/MappedByteBuffer;->mappingOffset()J -Ljava/nio/MappedByteBuffer;->unused:B -Ljava/nio/NIOAccess;-><init>()V -Ljava/nio/NioUtils;-><init>()V -Ljava/nio/NioUtils;->getFD(Ljava/nio/channels/FileChannel;)Ljava/io/FileDescriptor; -Ljava/nio/NioUtils;->newFileChannel(Ljava/io/Closeable;Ljava/io/FileDescriptor;I)Ljava/nio/channels/FileChannel; -Ljava/nio/ShortBuffer;-><init>(IIII)V -Ljava/nio/ShortBuffer;-><init>(IIII[SI)V -Ljava/nio/ShortBuffer;->compare(SS)I -Ljava/nio/ShortBuffer;->equals(SS)Z -Ljava/nio/ShortBuffer;->hb:[S -Ljava/nio/ShortBuffer;->isReadOnly:Z -Ljava/nio/ShortBuffer;->offset:I -Ljava/security/AccessControlException;->perm:Ljava/security/Permission; -Ljava/security/AccessController;-><init>()V -Ljava/security/AlgorithmParameterGenerator;->algorithm:Ljava/lang/String; -Ljava/security/AlgorithmParameterGenerator;->paramGenSpi:Ljava/security/AlgorithmParameterGeneratorSpi; -Ljava/security/AlgorithmParameterGenerator;->provider:Ljava/security/Provider; -Ljava/security/AlgorithmParameters;->algorithm:Ljava/lang/String; -Ljava/security/AlgorithmParameters;->initialized:Z -Ljava/security/AlgorithmParameters;->paramSpi:Ljava/security/AlgorithmParametersSpi; -Ljava/security/AlgorithmParameters;->provider:Ljava/security/Provider; -Ljava/security/cert/Certificate$CertificateRep;->data:[B -Ljava/security/cert/Certificate$CertificateRep;->type:Ljava/lang/String; -Ljava/security/cert/Certificate;->hash:I -Ljava/security/cert/Certificate;->type:Ljava/lang/String; -Ljava/security/cert/CertificateFactory;->certFacSpi:Ljava/security/cert/CertificateFactorySpi; -Ljava/security/cert/CertificateFactory;->provider:Ljava/security/Provider; -Ljava/security/cert/CertificateFactory;->type:Ljava/lang/String; -Ljava/security/cert/CertificateRevokedException;->authority:Ljavax/security/auth/x500/X500Principal; -Ljava/security/cert/CertificateRevokedException;->extensions:Ljava/util/Map; -Ljava/security/cert/CertificateRevokedException;->reason:Ljava/security/cert/CRLReason; -Ljava/security/cert/CertificateRevokedException;->revocationDate:Ljava/util/Date; -Ljava/security/cert/CertPath$CertPathRep;->data:[B -Ljava/security/cert/CertPath$CertPathRep;->type:Ljava/lang/String; -Ljava/security/cert/CertPath;->type:Ljava/lang/String; -Ljava/security/cert/CertPathBuilder;->algorithm:Ljava/lang/String; -Ljava/security/cert/CertPathBuilder;->builderSpi:Ljava/security/cert/CertPathBuilderSpi; -Ljava/security/cert/CertPathBuilder;->CPB_TYPE:Ljava/lang/String; -Ljava/security/cert/CertPathBuilder;->provider:Ljava/security/Provider; -Ljava/security/cert/CertPathValidator;->algorithm:Ljava/lang/String; -Ljava/security/cert/CertPathValidator;->CPV_TYPE:Ljava/lang/String; -Ljava/security/cert/CertPathValidator;->provider:Ljava/security/Provider; -Ljava/security/cert/CertPathValidator;->validatorSpi:Ljava/security/cert/CertPathValidatorSpi; -Ljava/security/cert/CertPathValidatorException;->certPath:Ljava/security/cert/CertPath; -Ljava/security/cert/CertPathValidatorException;->index:I -Ljava/security/cert/CertPathValidatorException;->reason:Ljava/security/cert/CertPathValidatorException$Reason; -Ljava/security/cert/CertStore;->CERTSTORE_TYPE:Ljava/lang/String; -Ljava/security/cert/CertStore;->handleException(Ljava/security/NoSuchAlgorithmException;)Ljava/security/cert/CertStore; -Ljava/security/cert/CertStore;->params:Ljava/security/cert/CertStoreParameters; -Ljava/security/cert/CertStore;->provider:Ljava/security/Provider; -Ljava/security/cert/CertStore;->storeSpi:Ljava/security/cert/CertStoreSpi; -Ljava/security/cert/CertStore;->type:Ljava/lang/String; -Ljava/security/cert/CollectionCertStoreParameters;->coll:Ljava/util/Collection; -Ljava/security/cert/CRL;->type:Ljava/lang/String; -Ljava/security/cert/LDAPCertStoreParameters;->LDAP_DEFAULT_PORT:I -Ljava/security/cert/LDAPCertStoreParameters;->port:I -Ljava/security/cert/LDAPCertStoreParameters;->serverName:Ljava/lang/String; -Ljava/security/cert/PKIXBuilderParameters;->maxPathLength:I -Ljava/security/cert/PKIXCertPathBuilderResult;->certPath:Ljava/security/cert/CertPath; -Ljava/security/cert/PKIXCertPathValidatorResult;->policyTree:Ljava/security/cert/PolicyNode; -Ljava/security/cert/PKIXCertPathValidatorResult;->subjectPublicKey:Ljava/security/PublicKey; -Ljava/security/cert/PKIXCertPathValidatorResult;->trustAnchor:Ljava/security/cert/TrustAnchor; -Ljava/security/cert/PKIXParameters;->anyPolicyInhibited:Z -Ljava/security/cert/PKIXParameters;->certPathCheckers:Ljava/util/List; -Ljava/security/cert/PKIXParameters;->certSelector:Ljava/security/cert/CertSelector; -Ljava/security/cert/PKIXParameters;->certStores:Ljava/util/List; -Ljava/security/cert/PKIXParameters;->date:Ljava/util/Date; -Ljava/security/cert/PKIXParameters;->explicitPolicyRequired:Z -Ljava/security/cert/PKIXParameters;->policyMappingInhibited:Z -Ljava/security/cert/PKIXParameters;->policyQualifiersRejected:Z -Ljava/security/cert/PKIXParameters;->revocationEnabled:Z -Ljava/security/cert/PKIXParameters;->sigProvider:Ljava/lang/String; -Ljava/security/cert/PKIXParameters;->unmodInitialPolicies:Ljava/util/Set; -Ljava/security/cert/PKIXParameters;->unmodTrustAnchors:Ljava/util/Set; -Ljava/security/cert/PKIXRevocationChecker;->ocspExtensions:Ljava/util/List; -Ljava/security/cert/PKIXRevocationChecker;->ocspResponder:Ljava/net/URI; -Ljava/security/cert/PKIXRevocationChecker;->ocspResponderCert:Ljava/security/cert/X509Certificate; -Ljava/security/cert/PKIXRevocationChecker;->ocspResponses:Ljava/util/Map; -Ljava/security/cert/PKIXRevocationChecker;->options:Ljava/util/Set; -Ljava/security/cert/PolicyQualifierInfo;->mData:[B -Ljava/security/cert/PolicyQualifierInfo;->mEncoded:[B -Ljava/security/cert/PolicyQualifierInfo;->mId:Ljava/lang/String; -Ljava/security/cert/PolicyQualifierInfo;->pqiString:Ljava/lang/String; -Ljava/security/cert/TrustAnchor;->caName:Ljava/lang/String; -Ljava/security/cert/TrustAnchor;->caPrincipal:Ljavax/security/auth/x500/X500Principal; -Ljava/security/cert/TrustAnchor;->nc:Lsun/security/x509/NameConstraintsExtension; -Ljava/security/cert/TrustAnchor;->ncBytes:[B -Ljava/security/cert/TrustAnchor;->pubKey:Ljava/security/PublicKey; -Ljava/security/cert/TrustAnchor;->setNameConstraints([B)V -Ljava/security/cert/TrustAnchor;->trustedCert:Ljava/security/cert/X509Certificate; -Ljava/security/cert/X509Certificate;->issuerX500Principal:Ljavax/security/auth/x500/X500Principal; -Ljava/security/cert/X509Certificate;->subjectX500Principal:Ljavax/security/auth/x500/X500Principal; -Ljava/security/cert/X509CertSelector;->addPathToNameInternal(ILjava/lang/Object;)V -Ljava/security/cert/X509CertSelector;->addSubjectAlternativeNameInternal(ILjava/lang/Object;)V -Ljava/security/cert/X509CertSelector;->ANY_EXTENDED_KEY_USAGE:Lsun/security/util/ObjectIdentifier; -Ljava/security/cert/X509CertSelector;->authorityKeyID:[B -Ljava/security/cert/X509CertSelector;->basicConstraints:I -Ljava/security/cert/X509CertSelector;->certificateValid:Ljava/util/Date; -Ljava/security/cert/X509CertSelector;->CERT_POLICIES_ID:I -Ljava/security/cert/X509CertSelector;->cloneAndCheckNames(Ljava/util/Collection;)Ljava/util/Set; -Ljava/security/cert/X509CertSelector;->cloneNames(Ljava/util/Collection;)Ljava/util/Set; -Ljava/security/cert/X509CertSelector;->cloneSet(Ljava/util/Set;)Ljava/util/Set; -Ljava/security/cert/X509CertSelector;->debug:Lsun/security/util/Debug; -Ljava/security/cert/X509CertSelector;->equalNames(Ljava/util/Collection;Ljava/util/Collection;)Z -Ljava/security/cert/X509CertSelector;->EXTENDED_KEY_USAGE_ID:I -Ljava/security/cert/X509CertSelector;->EXTENSION_OIDS:[Ljava/lang/String; -Ljava/security/cert/X509CertSelector;->FALSE:Ljava/lang/Boolean; -Ljava/security/cert/X509CertSelector;->getExtensionObject(Ljava/security/cert/X509Certificate;I)Ljava/security/cert/Extension; -Ljava/security/cert/X509CertSelector;->issuer:Ljavax/security/auth/x500/X500Principal; -Ljava/security/cert/X509CertSelector;->keyPurposeOIDSet:Ljava/util/Set; -Ljava/security/cert/X509CertSelector;->keyPurposeSet:Ljava/util/Set; -Ljava/security/cert/X509CertSelector;->keyUsage:[Z -Ljava/security/cert/X509CertSelector;->keyUsageToString([Z)Ljava/lang/String; -Ljava/security/cert/X509CertSelector;->makeGeneralNameInterface(ILjava/lang/Object;)Lsun/security/x509/GeneralNameInterface; -Ljava/security/cert/X509CertSelector;->matchAllSubjectAltNames:Z -Ljava/security/cert/X509CertSelector;->matchAuthorityKeyID(Ljava/security/cert/X509Certificate;)Z -Ljava/security/cert/X509CertSelector;->matchBasicConstraints(Ljava/security/cert/X509Certificate;)Z -Ljava/security/cert/X509CertSelector;->matchExcluded(Lsun/security/x509/GeneralSubtrees;)Z -Ljava/security/cert/X509CertSelector;->matchExtendedKeyUsage(Ljava/security/cert/X509Certificate;)Z -Ljava/security/cert/X509CertSelector;->matchKeyUsage(Ljava/security/cert/X509Certificate;)Z -Ljava/security/cert/X509CertSelector;->matchNameConstraints(Ljava/security/cert/X509Certificate;)Z -Ljava/security/cert/X509CertSelector;->matchPathToNames(Ljava/security/cert/X509Certificate;)Z -Ljava/security/cert/X509CertSelector;->matchPermitted(Lsun/security/x509/GeneralSubtrees;)Z -Ljava/security/cert/X509CertSelector;->matchPolicy(Ljava/security/cert/X509Certificate;)Z -Ljava/security/cert/X509CertSelector;->matchPrivateKeyValid(Ljava/security/cert/X509Certificate;)Z -Ljava/security/cert/X509CertSelector;->matchSubjectAlternativeNames(Ljava/security/cert/X509Certificate;)Z -Ljava/security/cert/X509CertSelector;->matchSubjectKeyID(Ljava/security/cert/X509Certificate;)Z -Ljava/security/cert/X509CertSelector;->matchSubjectPublicKeyAlgID(Ljava/security/cert/X509Certificate;)Z -Ljava/security/cert/X509CertSelector;->NAME_ANY:I -Ljava/security/cert/X509CertSelector;->NAME_CONSTRAINTS_ID:I -Ljava/security/cert/X509CertSelector;->NAME_DIRECTORY:I -Ljava/security/cert/X509CertSelector;->NAME_DNS:I -Ljava/security/cert/X509CertSelector;->NAME_EDI:I -Ljava/security/cert/X509CertSelector;->NAME_IP:I -Ljava/security/cert/X509CertSelector;->NAME_OID:I -Ljava/security/cert/X509CertSelector;->NAME_RFC822:I -Ljava/security/cert/X509CertSelector;->NAME_URI:I -Ljava/security/cert/X509CertSelector;->NAME_X400:I -Ljava/security/cert/X509CertSelector;->nc:Lsun/security/x509/NameConstraintsExtension; -Ljava/security/cert/X509CertSelector;->ncBytes:[B -Ljava/security/cert/X509CertSelector;->NUM_OF_EXTENSIONS:I -Ljava/security/cert/X509CertSelector;->parseNames(Ljava/util/Collection;)Ljava/util/Set; -Ljava/security/cert/X509CertSelector;->pathToGeneralNames:Ljava/util/Set; -Ljava/security/cert/X509CertSelector;->pathToNames:Ljava/util/Set; -Ljava/security/cert/X509CertSelector;->policy:Lsun/security/x509/CertificatePolicySet; -Ljava/security/cert/X509CertSelector;->policySet:Ljava/util/Set; -Ljava/security/cert/X509CertSelector;->privateKeyValid:Ljava/util/Date; -Ljava/security/cert/X509CertSelector;->PRIVATE_KEY_USAGE_ID:I -Ljava/security/cert/X509CertSelector;->serialNumber:Ljava/math/BigInteger; -Ljava/security/cert/X509CertSelector;->setPathToNamesInternal(Ljava/util/Set;)V -Ljava/security/cert/X509CertSelector;->subject:Ljavax/security/auth/x500/X500Principal; -Ljava/security/cert/X509CertSelector;->subjectAlternativeGeneralNames:Ljava/util/Set; -Ljava/security/cert/X509CertSelector;->subjectAlternativeNames:Ljava/util/Set; -Ljava/security/cert/X509CertSelector;->subjectKeyID:[B -Ljava/security/cert/X509CertSelector;->subjectPublicKey:Ljava/security/PublicKey; -Ljava/security/cert/X509CertSelector;->subjectPublicKeyAlgID:Lsun/security/util/ObjectIdentifier; -Ljava/security/cert/X509CertSelector;->subjectPublicKeyBytes:[B -Ljava/security/cert/X509CertSelector;->SUBJECT_ALT_NAME_ID:I -Ljava/security/cert/X509CertSelector;->x509Cert:Ljava/security/cert/X509Certificate; -Ljava/security/cert/X509CRL;->issuerPrincipal:Ljavax/security/auth/x500/X500Principal; -Ljava/security/cert/X509CRLSelector;->addIssuerNameInternal(Ljava/lang/Object;Ljavax/security/auth/x500/X500Principal;)V -Ljava/security/cert/X509CRLSelector;->certChecking:Ljava/security/cert/X509Certificate; -Ljava/security/cert/X509CRLSelector;->cloneAndCheckIssuerNames(Ljava/util/Collection;)Ljava/util/HashSet; -Ljava/security/cert/X509CRLSelector;->cloneIssuerNames(Ljava/util/Collection;)Ljava/util/HashSet; -Ljava/security/cert/X509CRLSelector;->dateAndTime:Ljava/util/Date; -Ljava/security/cert/X509CRLSelector;->debug:Lsun/security/util/Debug; -Ljava/security/cert/X509CRLSelector;->issuerNames:Ljava/util/HashSet; -Ljava/security/cert/X509CRLSelector;->issuerX500Principals:Ljava/util/HashSet; -Ljava/security/cert/X509CRLSelector;->maxCRL:Ljava/math/BigInteger; -Ljava/security/cert/X509CRLSelector;->minCRL:Ljava/math/BigInteger; -Ljava/security/cert/X509CRLSelector;->parseIssuerNames(Ljava/util/Collection;)Ljava/util/HashSet; -Ljava/security/cert/X509CRLSelector;->setDateAndTime(Ljava/util/Date;J)V -Ljava/security/cert/X509CRLSelector;->skew:J -Ljava/security/CodeSigner;->myhash:I -Ljava/security/CodeSigner;->signerCertPath:Ljava/security/cert/CertPath; -Ljava/security/CodeSigner;->timestamp:Ljava/security/Timestamp; -Ljava/security/CodeSource;->location:Ljava/net/URL; -Ljava/security/DigestInputStream;->on:Z -Ljava/security/DigestOutputStream;->on:Z -Ljava/security/DomainLoadStoreParameter;->configuration:Ljava/net/URI; -Ljava/security/DomainLoadStoreParameter;->protectionParams:Ljava/util/Map; -Ljava/security/GuardedObject;->guard:Ljava/security/Guard; -Ljava/security/GuardedObject;->object:Ljava/lang/Object; -Ljava/security/Identity;->certificates:Ljava/util/Vector; -Ljava/security/Identity;->check(Ljava/lang/String;)V -Ljava/security/Identity;->fullName()Ljava/lang/String; -Ljava/security/Identity;->info:Ljava/lang/String; -Ljava/security/Identity;->keyEquals(Ljava/security/PublicKey;Ljava/security/PublicKey;)Z -Ljava/security/Identity;->name:Ljava/lang/String; -Ljava/security/Identity;->printCertificates()Ljava/lang/String; -Ljava/security/Identity;->printKeys()Ljava/lang/String; -Ljava/security/Identity;->publicKey:Ljava/security/PublicKey; -Ljava/security/Identity;->scope:Ljava/security/IdentityScope; -Ljava/security/IdentityScope;->check(Ljava/lang/String;)V -Ljava/security/IdentityScope;->initializeSystemScope()V -Ljava/security/IdentityScope;->scope:Ljava/security/IdentityScope; -Ljava/security/KeyFactory;-><init>(Ljava/lang/String;)V -Ljava/security/KeyFactory;->algorithm:Ljava/lang/String; -Ljava/security/KeyFactory;->debug:Lsun/security/util/Debug; -Ljava/security/KeyFactory;->lock:Ljava/lang/Object; -Ljava/security/KeyFactory;->nextSpi(Ljava/security/KeyFactorySpi;)Ljava/security/KeyFactorySpi; -Ljava/security/KeyFactory;->provider:Ljava/security/Provider; -Ljava/security/KeyFactory;->serviceIterator:Ljava/util/Iterator; -Ljava/security/KeyFactory;->spi:Ljava/security/KeyFactorySpi; -Ljava/security/KeyPair;->privateKey:Ljava/security/PrivateKey; -Ljava/security/KeyPair;->publicKey:Ljava/security/PublicKey; -Ljava/security/KeyPairGenerator$Delegate;-><init>(Ljava/security/KeyPairGeneratorSpi;Ljava/lang/String;)V -Ljava/security/KeyPairGenerator$Delegate;-><init>(Lsun/security/jca/GetInstance$Instance;Ljava/util/Iterator;Ljava/lang/String;)V -Ljava/security/KeyPairGenerator$Delegate;->disableFailover()V -Ljava/security/KeyPairGenerator$Delegate;->initKeySize:I -Ljava/security/KeyPairGenerator$Delegate;->initParams:Ljava/security/spec/AlgorithmParameterSpec; -Ljava/security/KeyPairGenerator$Delegate;->initRandom:Ljava/security/SecureRandom; -Ljava/security/KeyPairGenerator$Delegate;->initType:I -Ljava/security/KeyPairGenerator$Delegate;->I_NONE:I -Ljava/security/KeyPairGenerator$Delegate;->I_PARAMS:I -Ljava/security/KeyPairGenerator$Delegate;->I_SIZE:I -Ljava/security/KeyPairGenerator$Delegate;->lock:Ljava/lang/Object; -Ljava/security/KeyPairGenerator$Delegate;->nextSpi(Ljava/security/KeyPairGeneratorSpi;Z)Ljava/security/KeyPairGeneratorSpi; -Ljava/security/KeyPairGenerator$Delegate;->serviceIterator:Ljava/util/Iterator; -Ljava/security/KeyPairGenerator$Delegate;->spi:Ljava/security/KeyPairGeneratorSpi; -Ljava/security/KeyPairGenerator;->algorithm:Ljava/lang/String; -Ljava/security/KeyPairGenerator;->disableFailover()V -Ljava/security/KeyPairGenerator;->provider:Ljava/security/Provider; -Ljava/security/KeyRep;->algorithm:Ljava/lang/String; -Ljava/security/KeyRep;->encoded:[B -Ljava/security/KeyRep;->format:Ljava/lang/String; -Ljava/security/KeyRep;->PKCS8:Ljava/lang/String; -Ljava/security/KeyRep;->RAW:Ljava/lang/String; -Ljava/security/KeyRep;->type:Ljava/security/KeyRep$Type; -Ljava/security/KeyRep;->X509:Ljava/lang/String; -Ljava/security/KeyStore$Builder$FileBuilder;-><init>(Ljava/lang/String;Ljava/security/Provider;Ljava/io/File;Ljava/security/KeyStore$ProtectionParameter;Ljava/security/AccessControlContext;)V -Ljava/security/KeyStore$Builder$FileBuilder;->context:Ljava/security/AccessControlContext; -Ljava/security/KeyStore$Builder$FileBuilder;->file:Ljava/io/File; -Ljava/security/KeyStore$Builder$FileBuilder;->keyProtection:Ljava/security/KeyStore$ProtectionParameter; -Ljava/security/KeyStore$Builder$FileBuilder;->keyStore:Ljava/security/KeyStore; -Ljava/security/KeyStore$Builder$FileBuilder;->oldException:Ljava/lang/Throwable; -Ljava/security/KeyStore$Builder$FileBuilder;->protection:Ljava/security/KeyStore$ProtectionParameter; -Ljava/security/KeyStore$Builder$FileBuilder;->provider:Ljava/security/Provider; -Ljava/security/KeyStore$Builder$FileBuilder;->type:Ljava/lang/String; -Ljava/security/KeyStore$Builder;->MAX_CALLBACK_TRIES:I -Ljava/security/KeyStore$CallbackHandlerProtection;->handler:Ljavax/security/auth/callback/CallbackHandler; -Ljava/security/KeyStore$PasswordProtection;->destroyed:Z -Ljava/security/KeyStore$PasswordProtection;->password:[C -Ljava/security/KeyStore$PasswordProtection;->protectionAlgorithm:Ljava/lang/String; -Ljava/security/KeyStore$PasswordProtection;->protectionParameters:Ljava/security/spec/AlgorithmParameterSpec; -Ljava/security/KeyStore$PrivateKeyEntry;->attributes:Ljava/util/Set; -Ljava/security/KeyStore$PrivateKeyEntry;->chain:[Ljava/security/cert/Certificate; -Ljava/security/KeyStore$PrivateKeyEntry;->privKey:Ljava/security/PrivateKey; -Ljava/security/KeyStore$SecretKeyEntry;->attributes:Ljava/util/Set; -Ljava/security/KeyStore$SecretKeyEntry;->sKey:Ljavax/crypto/SecretKey; -Ljava/security/KeyStore$SimpleLoadStoreParameter;-><init>(Ljava/security/KeyStore$ProtectionParameter;)V -Ljava/security/KeyStore$SimpleLoadStoreParameter;->protection:Ljava/security/KeyStore$ProtectionParameter; -Ljava/security/KeyStore$TrustedCertificateEntry;->attributes:Ljava/util/Set; -Ljava/security/KeyStore$TrustedCertificateEntry;->cert:Ljava/security/cert/Certificate; -Ljava/security/KeyStore;->initialized:Z -Ljava/security/KeyStore;->KEYSTORE_TYPE:Ljava/lang/String; -Ljava/security/KeyStore;->provider:Ljava/security/Provider; -Ljava/security/KeyStore;->type:Ljava/lang/String; -Ljava/security/MessageDigest$Delegate;-><init>(Ljava/security/MessageDigestSpi;Ljava/lang/String;)V -Ljava/security/MessageDigest$Delegate;->digestSpi:Ljava/security/MessageDigestSpi; -Ljava/security/MessageDigest;->algorithm:Ljava/lang/String; -Ljava/security/MessageDigest;->INITIAL:I -Ljava/security/MessageDigest;->IN_PROGRESS:I -Ljava/security/MessageDigest;->provider:Ljava/security/Provider; -Ljava/security/MessageDigest;->state:I -Ljava/security/MessageDigestSpi;->tempArray:[B -Ljava/security/Permission;->name:Ljava/lang/String; -Ljava/security/PKCS12Attribute;->COLON_SEPARATED_HEX_PAIRS:Ljava/util/regex/Pattern; -Ljava/security/PKCS12Attribute;->encode(Lsun/security/util/ObjectIdentifier;[Ljava/lang/String;)[B -Ljava/security/PKCS12Attribute;->encoded:[B -Ljava/security/PKCS12Attribute;->hashValue:I -Ljava/security/PKCS12Attribute;->name:Ljava/lang/String; -Ljava/security/PKCS12Attribute;->parse([B)V -Ljava/security/PKCS12Attribute;->value:Ljava/lang/String; -Ljava/security/Policy$UnsupportedEmptyCollection;-><init>()V -Ljava/security/PrivilegedActionException;->exception:Ljava/lang/Exception; -Ljava/security/Provider$EngineDescription;-><init>(Ljava/lang/String;ZLjava/lang/String;)V -Ljava/security/Provider$EngineDescription;->constructorParameterClass:Ljava/lang/Class; -Ljava/security/Provider$EngineDescription;->constructorParameterClassName:Ljava/lang/String; -Ljava/security/Provider$EngineDescription;->getConstructorParameterClass()Ljava/lang/Class; -Ljava/security/Provider$EngineDescription;->name:Ljava/lang/String; -Ljava/security/Provider$EngineDescription;->supportsParameter:Z -Ljava/security/Provider$Service;-><init>(Ljava/security/Provider;)V -Ljava/security/Provider$Service;->addAlias(Ljava/lang/String;)V -Ljava/security/Provider$Service;->addAttribute(Ljava/lang/String;Ljava/lang/String;)V -Ljava/security/Provider$Service;->algorithm:Ljava/lang/String; -Ljava/security/Provider$Service;->aliases:Ljava/util/List; -Ljava/security/Provider$Service;->attributes:Ljava/util/Map; -Ljava/security/Provider$Service;->CLASS0:[Ljava/lang/Class; -Ljava/security/Provider$Service;->className:Ljava/lang/String; -Ljava/security/Provider$Service;->classRef:Ljava/lang/ref/Reference; -Ljava/security/Provider$Service;->getAliases()Ljava/util/List; -Ljava/security/Provider$Service;->getImplClass()Ljava/lang/Class; -Ljava/security/Provider$Service;->getKeyClass(Ljava/lang/String;)Ljava/lang/Class; -Ljava/security/Provider$Service;->hasKeyAttributes()Z -Ljava/security/Provider$Service;->hasKeyAttributes:Ljava/lang/Boolean; -Ljava/security/Provider$Service;->isValid()Z -Ljava/security/Provider$Service;->newInstanceGeneric(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/security/Provider$Service;->provider:Ljava/security/Provider; -Ljava/security/Provider$Service;->registered:Z -Ljava/security/Provider$Service;->supportedClasses:[Ljava/lang/Class; -Ljava/security/Provider$Service;->supportedFormats:[Ljava/lang/String; -Ljava/security/Provider$Service;->supportsKeyClass(Ljava/security/Key;)Z -Ljava/security/Provider$Service;->supportsKeyFormat(Ljava/security/Key;)Z -Ljava/security/Provider$Service;->type:Ljava/lang/String; -Ljava/security/Provider$ServiceKey;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V -Ljava/security/Provider$ServiceKey;->algorithm:Ljava/lang/String; -Ljava/security/Provider$ServiceKey;->matches(Ljava/lang/String;Ljava/lang/String;)Z -Ljava/security/Provider$ServiceKey;->originalAlgorithm:Ljava/lang/String; -Ljava/security/Provider$ServiceKey;->type:Ljava/lang/String; -Ljava/security/Provider$UString;-><init>(Ljava/lang/String;)V -Ljava/security/Provider$UString;->lowerString:Ljava/lang/String; -Ljava/security/Provider$UString;->string:Ljava/lang/String; -Ljava/security/Provider;->addEngine(Ljava/lang/String;ZLjava/lang/String;)V -Ljava/security/Provider;->ALIAS_LENGTH:I -Ljava/security/Provider;->ALIAS_PREFIX:Ljava/lang/String; -Ljava/security/Provider;->ALIAS_PREFIX_LOWER:Ljava/lang/String; -Ljava/security/Provider;->check(Ljava/lang/String;)V -Ljava/security/Provider;->checkInitialized()V -Ljava/security/Provider;->checkLegacy(Ljava/lang/Object;)Z -Ljava/security/Provider;->debug:Lsun/security/util/Debug; -Ljava/security/Provider;->ensureLegacyParsed()V -Ljava/security/Provider;->entrySet:Ljava/util/Set; -Ljava/security/Provider;->entrySetCallCount:I -Ljava/security/Provider;->getEngineName(Ljava/lang/String;)Ljava/lang/String; -Ljava/security/Provider;->getTypeAndAlgorithm(Ljava/lang/String;)[Ljava/lang/String; -Ljava/security/Provider;->implClear()V -Ljava/security/Provider;->implCompute(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object; -Ljava/security/Provider;->implComputeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object; -Ljava/security/Provider;->implComputeIfPresent(Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object; -Ljava/security/Provider;->implMerge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object; -Ljava/security/Provider;->implPut(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -Ljava/security/Provider;->implPutAll(Ljava/util/Map;)V -Ljava/security/Provider;->implPutIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -Ljava/security/Provider;->implRemove(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/security/Provider;->implRemove(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/security/Provider;->implRemoveService(Ljava/security/Provider$Service;)V -Ljava/security/Provider;->implReplace(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -Ljava/security/Provider;->implReplace(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/security/Provider;->implReplaceAll(Ljava/util/function/BiFunction;)V -Ljava/security/Provider;->info:Ljava/lang/String; -Ljava/security/Provider;->initialized:Z -Ljava/security/Provider;->isRegistered()Z -Ljava/security/Provider;->knownEngines:Ljava/util/Map; -Ljava/security/Provider;->legacyChanged:Z -Ljava/security/Provider;->legacyMap:Ljava/util/Map; -Ljava/security/Provider;->legacyStrings:Ljava/util/Map; -Ljava/security/Provider;->name:Ljava/lang/String; -Ljava/security/Provider;->parseLegacyPut(Ljava/lang/String;Ljava/lang/String;)V -Ljava/security/Provider;->previousKey:Ljava/security/Provider$ServiceKey; -Ljava/security/Provider;->putId()V -Ljava/security/Provider;->putPropertyStrings(Ljava/security/Provider$Service;)V -Ljava/security/Provider;->registered:Z -Ljava/security/Provider;->removeInvalidServices(Ljava/util/Map;)V -Ljava/security/Provider;->removePropertyStrings(Ljava/security/Provider$Service;)V -Ljava/security/Provider;->serviceMap:Ljava/util/Map; -Ljava/security/Provider;->servicesChanged:Z -Ljava/security/Provider;->serviceSet:Ljava/util/Set; -Ljava/security/Provider;->setRegistered()V -Ljava/security/Provider;->setUnregistered()V -Ljava/security/Provider;->version:D -Ljava/security/Provider;->warmUpServiceProvision()V -Ljava/security/SecureClassLoader;->check()V -Ljava/security/SecureClassLoader;->debug:Lsun/security/util/Debug; -Ljava/security/SecureClassLoader;->getProtectionDomain(Ljava/security/CodeSource;)Ljava/security/ProtectionDomain; -Ljava/security/SecureClassLoader;->initialized:Z -Ljava/security/SecureClassLoader;->pdcache:Ljava/util/HashMap; -Ljava/security/SecureRandom$StrongPatternHolder;-><init>()V -Ljava/security/SecureRandom$StrongPatternHolder;->pattern:Ljava/util/regex/Pattern; -Ljava/security/SecureRandom;-><init>(Ljava/security/SecureRandomSpi;Ljava/security/Provider;Ljava/lang/String;)V -Ljava/security/SecureRandom;->algorithm:Ljava/lang/String; -Ljava/security/SecureRandom;->counter:J -Ljava/security/SecureRandom;->digest:Ljava/security/MessageDigest; -Ljava/security/SecureRandom;->getDefaultPRNG(Z[B)V -Ljava/security/SecureRandom;->getPrngAlgorithm()Ljava/lang/String; -Ljava/security/SecureRandom;->getSecureRandomSpi()Ljava/security/SecureRandomSpi; -Ljava/security/SecureRandom;->longToByteArray(J)[B -Ljava/security/SecureRandom;->provider:Ljava/security/Provider; -Ljava/security/SecureRandom;->randomBytes:[B -Ljava/security/SecureRandom;->randomBytesUsed:I -Ljava/security/SecureRandom;->secureRandomSpi:Ljava/security/SecureRandomSpi; -Ljava/security/SecureRandom;->seedGenerator:Ljava/security/SecureRandom; -Ljava/security/SecureRandom;->state:[B -Ljava/security/Security$ProviderProperty;-><init>()V -Ljava/security/Security$ProviderProperty;->className:Ljava/lang/String; -Ljava/security/Security$ProviderProperty;->provider:Ljava/security/Provider; -Ljava/security/Security;-><init>()V -Ljava/security/Security;->getAllQualifyingCandidates(Ljava/lang/String;Ljava/lang/String;[Ljava/security/Provider;)Ljava/util/LinkedHashSet; -Ljava/security/Security;->getFilterComponents(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String; -Ljava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Object; -Ljava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)[Ljava/lang/Object; -Ljava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;)[Ljava/lang/Object; -Ljava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;Ljava/lang/Object;)[Ljava/lang/Object; -Ljava/security/Security;->getProviderProperty(Ljava/lang/String;)Ljava/security/Security$ProviderProperty; -Ljava/security/Security;->getProviderProperty(Ljava/lang/String;Ljava/security/Provider;)Ljava/lang/String; -Ljava/security/Security;->getProvidersNotUsingCache(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/security/Provider;)Ljava/util/LinkedHashSet; -Ljava/security/Security;->getSpiClass(Ljava/lang/String;)Ljava/lang/Class; -Ljava/security/Security;->getVersion()I -Ljava/security/Security;->increaseVersion()V -Ljava/security/Security;->initializeStatic()V -Ljava/security/Security;->invalidateSMCache(Ljava/lang/String;)V -Ljava/security/Security;->isConstraintSatisfied(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z -Ljava/security/Security;->isCriterionSatisfied(Ljava/security/Provider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z -Ljava/security/Security;->isStandardAttr(Ljava/lang/String;)Z -Ljava/security/Security;->props:Ljava/util/Properties; -Ljava/security/Security;->spiMap:Ljava/util/Map; -Ljava/security/Security;->version:Ljava/util/concurrent/atomic/AtomicInteger; -Ljava/security/Signature$CipherAdapter;-><init>(Ljavax/crypto/Cipher;)V -Ljava/security/Signature$CipherAdapter;->cipher:Ljavax/crypto/Cipher; -Ljava/security/Signature$CipherAdapter;->data:Ljava/io/ByteArrayOutputStream; -Ljava/security/Signature$Delegate;-><init>(Ljava/lang/String;)V -Ljava/security/Signature$Delegate;-><init>(Ljava/security/SignatureSpi;Ljava/lang/String;)V -Ljava/security/Signature$Delegate;->chooseFirstProvider()V -Ljava/security/Signature$Delegate;->chooseProvider(ILjava/security/Key;Ljava/security/SecureRandom;)V -Ljava/security/Signature$Delegate;->getCurrentSpi()Ljava/security/SignatureSpi; -Ljava/security/Signature$Delegate;->init(Ljava/security/SignatureSpi;ILjava/security/Key;Ljava/security/SecureRandom;)V -Ljava/security/Signature$Delegate;->I_PRIV:I -Ljava/security/Signature$Delegate;->I_PRIV_SR:I -Ljava/security/Signature$Delegate;->I_PUB:I -Ljava/security/Signature$Delegate;->lock:Ljava/lang/Object; -Ljava/security/Signature$Delegate;->newInstance(Ljava/security/Provider$Service;)Ljava/security/SignatureSpi; -Ljava/security/Signature$Delegate;->sigSpi:Ljava/security/SignatureSpi; -Ljava/security/Signature$Delegate;->warnCount:I -Ljava/security/Signature;->algorithm:Ljava/lang/String; -Ljava/security/Signature;->chooseFirstProvider()V -Ljava/security/Signature;->getCurrentSpi()Ljava/security/SignatureSpi; -Ljava/security/Signature;->getInstanceRSA(Ljava/security/Provider;)Ljava/security/Signature; -Ljava/security/Signature;->isSpi(Ljava/security/Provider$Service;)Z -Ljava/security/Signature;->provider:Ljava/security/Provider; -Ljava/security/Signature;->rsaIds:Ljava/util/List; -Ljava/security/Signature;->RSA_CIPHER:Ljava/lang/String; -Ljava/security/Signature;->RSA_SIGNATURE:Ljava/lang/String; -Ljava/security/Signature;->signatureInfo:Ljava/util/Map; -Ljava/security/SignedObject;->content:[B -Ljava/security/SignedObject;->sign(Ljava/security/PrivateKey;Ljava/security/Signature;)V -Ljava/security/SignedObject;->signature:[B -Ljava/security/SignedObject;->thealgorithm:Ljava/lang/String; -Ljava/security/Signer;->check(Ljava/lang/String;)V -Ljava/security/Signer;->printKeys()Ljava/lang/String; -Ljava/security/Signer;->privateKey:Ljava/security/PrivateKey; -Ljava/security/spec/DSAParameterSpec;->g:Ljava/math/BigInteger; -Ljava/security/spec/DSAParameterSpec;->p:Ljava/math/BigInteger; -Ljava/security/spec/DSAParameterSpec;->q:Ljava/math/BigInteger; -Ljava/security/spec/DSAPrivateKeySpec;->g:Ljava/math/BigInteger; -Ljava/security/spec/DSAPrivateKeySpec;->p:Ljava/math/BigInteger; -Ljava/security/spec/DSAPrivateKeySpec;->q:Ljava/math/BigInteger; -Ljava/security/spec/DSAPrivateKeySpec;->x:Ljava/math/BigInteger; -Ljava/security/spec/DSAPublicKeySpec;->g:Ljava/math/BigInteger; -Ljava/security/spec/DSAPublicKeySpec;->p:Ljava/math/BigInteger; -Ljava/security/spec/DSAPublicKeySpec;->q:Ljava/math/BigInteger; -Ljava/security/spec/DSAPublicKeySpec;->y:Ljava/math/BigInteger; -Ljava/security/spec/ECFieldF2m;->ks:[I -Ljava/security/spec/ECFieldF2m;->m:I -Ljava/security/spec/ECFieldF2m;->rp:Ljava/math/BigInteger; -Ljava/security/spec/ECFieldFp;->p:Ljava/math/BigInteger; -Ljava/security/spec/ECGenParameterSpec;->name:Ljava/lang/String; -Ljava/security/spec/ECParameterSpec;->curve:Ljava/security/spec/EllipticCurve; -Ljava/security/spec/ECParameterSpec;->curveName:Ljava/lang/String; -Ljava/security/spec/ECParameterSpec;->g:Ljava/security/spec/ECPoint; -Ljava/security/spec/ECParameterSpec;->h:I -Ljava/security/spec/ECParameterSpec;->n:Ljava/math/BigInteger; -Ljava/security/spec/ECPoint;-><init>()V -Ljava/security/spec/ECPoint;->x:Ljava/math/BigInteger; -Ljava/security/spec/ECPoint;->y:Ljava/math/BigInteger; -Ljava/security/spec/ECPrivateKeySpec;->params:Ljava/security/spec/ECParameterSpec; -Ljava/security/spec/ECPrivateKeySpec;->s:Ljava/math/BigInteger; -Ljava/security/spec/ECPublicKeySpec;->params:Ljava/security/spec/ECParameterSpec; -Ljava/security/spec/ECPublicKeySpec;->w:Ljava/security/spec/ECPoint; -Ljava/security/spec/EllipticCurve;->a:Ljava/math/BigInteger; -Ljava/security/spec/EllipticCurve;->b:Ljava/math/BigInteger; -Ljava/security/spec/EllipticCurve;->checkValidity(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/lang/String;)V -Ljava/security/spec/EllipticCurve;->field:Ljava/security/spec/ECField; -Ljava/security/spec/EllipticCurve;->seed:[B -Ljava/security/spec/EncodedKeySpec;->encodedKey:[B -Ljava/security/spec/MGF1ParameterSpec;->mdName:Ljava/lang/String; -Ljava/security/spec/PSSParameterSpec;-><init>()V -Ljava/security/spec/PSSParameterSpec;->mdName:Ljava/lang/String; -Ljava/security/spec/PSSParameterSpec;->mgfName:Ljava/lang/String; -Ljava/security/spec/PSSParameterSpec;->mgfSpec:Ljava/security/spec/AlgorithmParameterSpec; -Ljava/security/spec/PSSParameterSpec;->saltLen:I -Ljava/security/spec/PSSParameterSpec;->trailerField:I -Ljava/security/spec/RSAKeyGenParameterSpec;->keysize:I -Ljava/security/spec/RSAKeyGenParameterSpec;->publicExponent:Ljava/math/BigInteger; -Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->crtCoefficient:Ljava/math/BigInteger; -Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->otherPrimeInfo:[Ljava/security/spec/RSAOtherPrimeInfo; -Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->primeExponentP:Ljava/math/BigInteger; -Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->primeExponentQ:Ljava/math/BigInteger; -Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->primeP:Ljava/math/BigInteger; -Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->primeQ:Ljava/math/BigInteger; -Ljava/security/spec/RSAMultiPrimePrivateCrtKeySpec;->publicExponent:Ljava/math/BigInteger; -Ljava/security/spec/RSAOtherPrimeInfo;->crtCoefficient:Ljava/math/BigInteger; -Ljava/security/spec/RSAOtherPrimeInfo;->prime:Ljava/math/BigInteger; -Ljava/security/spec/RSAOtherPrimeInfo;->primeExponent:Ljava/math/BigInteger; -Ljava/security/spec/RSAPrivateCrtKeySpec;->crtCoefficient:Ljava/math/BigInteger; -Ljava/security/spec/RSAPrivateCrtKeySpec;->primeExponentP:Ljava/math/BigInteger; -Ljava/security/spec/RSAPrivateCrtKeySpec;->primeExponentQ:Ljava/math/BigInteger; -Ljava/security/spec/RSAPrivateCrtKeySpec;->primeP:Ljava/math/BigInteger; -Ljava/security/spec/RSAPrivateCrtKeySpec;->primeQ:Ljava/math/BigInteger; -Ljava/security/spec/RSAPrivateCrtKeySpec;->publicExponent:Ljava/math/BigInteger; -Ljava/security/spec/RSAPrivateKeySpec;->modulus:Ljava/math/BigInteger; -Ljava/security/spec/RSAPrivateKeySpec;->privateExponent:Ljava/math/BigInteger; -Ljava/security/spec/RSAPublicKeySpec;->modulus:Ljava/math/BigInteger; -Ljava/security/spec/RSAPublicKeySpec;->publicExponent:Ljava/math/BigInteger; -Ljava/security/Timestamp;->myhash:I -Ljava/security/Timestamp;->signerCertPath:Ljava/security/cert/CertPath; -Ljava/security/Timestamp;->timestamp:Ljava/util/Date; -Ljava/sql/BatchUpdateException;->updateCounts:[I -Ljava/sql/DataTruncation;->dataSize:I -Ljava/sql/DataTruncation;->index:I -Ljava/sql/DataTruncation;->parameter:Z -Ljava/sql/DataTruncation;->read:Z -Ljava/sql/DataTruncation;->transferSize:I -Ljava/sql/DriverInfo;-><init>(Ljava/sql/Driver;)V -Ljava/sql/DriverInfo;->driver:Ljava/sql/Driver; -Ljava/sql/DriverManager;-><init>()V -Ljava/sql/DriverManager;->getConnection(Ljava/lang/String;Ljava/util/Properties;Ljava/lang/ClassLoader;)Ljava/sql/Connection; -Ljava/sql/DriverManager;->isDriverAllowed(Ljava/sql/Driver;Ljava/lang/ClassLoader;)Z -Ljava/sql/DriverManager;->loadInitialDrivers()V -Ljava/sql/DriverManager;->loginTimeout:I -Ljava/sql/DriverManager;->logStream:Ljava/io/PrintStream; -Ljava/sql/DriverManager;->logSync:Ljava/lang/Object; -Ljava/sql/DriverManager;->logWriter:Ljava/io/PrintWriter; -Ljava/sql/DriverManager;->registeredDrivers:Ljava/util/concurrent/CopyOnWriteArrayList; -Ljava/sql/DriverManager;->SET_LOG_PERMISSION:Ljava/sql/SQLPermission; -Ljava/sql/SQLClientInfoException;->failedProperties:Ljava/util/Map; -Ljava/sql/SQLException;->next:Ljava/sql/SQLException; -Ljava/sql/SQLException;->nextUpdater:Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater; -Ljava/sql/SQLException;->SQLState:Ljava/lang/String; -Ljava/sql/SQLException;->vendorCode:I -Ljava/sql/Timestamp;->nanos:I -Ljava/sql/Types;-><init>()V -Ljava/text/Annotation;->value:Ljava/lang/Object; -Ljava/text/AttributedCharacterIterator$Attribute;->instanceMap:Ljava/util/Map; -Ljava/text/AttributedCharacterIterator$Attribute;->name:Ljava/lang/String; -Ljava/text/AttributedString$AttributedStringIterator;->beginIndex:I -Ljava/text/AttributedString$AttributedStringIterator;->currentIndex:I -Ljava/text/AttributedString$AttributedStringIterator;->currentRunIndex:I -Ljava/text/AttributedString$AttributedStringIterator;->currentRunLimit:I -Ljava/text/AttributedString$AttributedStringIterator;->currentRunStart:I -Ljava/text/AttributedString$AttributedStringIterator;->endIndex:I -Ljava/text/AttributedString$AttributedStringIterator;->getString()Ljava/text/AttributedString; -Ljava/text/AttributedString$AttributedStringIterator;->internalSetIndex(I)C -Ljava/text/AttributedString$AttributedStringIterator;->relevantAttributes:[Ljava/text/AttributedCharacterIterator$Attribute; -Ljava/text/AttributedString$AttributedStringIterator;->updateRunInfo()V -Ljava/text/AttributedString$AttributeMap;->beginIndex:I -Ljava/text/AttributedString$AttributeMap;->endIndex:I -Ljava/text/AttributedString$AttributeMap;->runIndex:I -Ljava/text/AttributedString;-><init>([Ljava/text/AttributedCharacterIterator;)V -Ljava/text/AttributedString;->addAttributeImpl(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V -Ljava/text/AttributedString;->addAttributeRunData(Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;II)V -Ljava/text/AttributedString;->appendContents(Ljava/lang/StringBuffer;Ljava/text/CharacterIterator;)V -Ljava/text/AttributedString;->ARRAY_SIZE_INCREMENT:I -Ljava/text/AttributedString;->attributeValuesMatch(Ljava/util/Set;II)Z -Ljava/text/AttributedString;->charAt(I)C -Ljava/text/AttributedString;->createRunAttributeDataVectors()V -Ljava/text/AttributedString;->ensureRunBreak(I)I -Ljava/text/AttributedString;->ensureRunBreak(IZ)I -Ljava/text/AttributedString;->getAttribute(Ljava/text/AttributedCharacterIterator$Attribute;I)Ljava/lang/Object; -Ljava/text/AttributedString;->getAttributeCheckRange(Ljava/text/AttributedCharacterIterator$Attribute;III)Ljava/lang/Object; -Ljava/text/AttributedString;->length()I -Ljava/text/AttributedString;->mapsDiffer(Ljava/util/Map;Ljava/util/Map;)Z -Ljava/text/AttributedString;->runArraySize:I -Ljava/text/AttributedString;->runAttributes:[Ljava/util/Vector; -Ljava/text/AttributedString;->runAttributeValues:[Ljava/util/Vector; -Ljava/text/AttributedString;->runCount:I -Ljava/text/AttributedString;->runStarts:[I -Ljava/text/AttributedString;->setAttributes(Ljava/util/Map;I)V -Ljava/text/AttributedString;->text:Ljava/lang/String; -Ljava/text/AttributedString;->valuesMatch(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/text/Bidi;-><init>(Landroid/icu/text/Bidi;)V -Ljava/text/Bidi;->bidiBase:Landroid/icu/text/Bidi; -Ljava/text/Bidi;->translateConstToIcu(I)I -Ljava/text/CalendarBuilder;-><init>()V -Ljava/text/CalendarBuilder;->addYear(I)Ljava/text/CalendarBuilder; -Ljava/text/CalendarBuilder;->clear(I)Ljava/text/CalendarBuilder; -Ljava/text/CalendarBuilder;->COMPUTED:I -Ljava/text/CalendarBuilder;->establish(Ljava/util/Calendar;)Ljava/util/Calendar; -Ljava/text/CalendarBuilder;->field:[I -Ljava/text/CalendarBuilder;->ISO_DAY_OF_WEEK:I -Ljava/text/CalendarBuilder;->isSet(I)Z -Ljava/text/CalendarBuilder;->isValidDayOfWeek(I)Z -Ljava/text/CalendarBuilder;->maxFieldIndex:I -Ljava/text/CalendarBuilder;->MAX_FIELD:I -Ljava/text/CalendarBuilder;->MINIMUM_USER_STAMP:I -Ljava/text/CalendarBuilder;->nextStamp:I -Ljava/text/CalendarBuilder;->set(II)Ljava/text/CalendarBuilder; -Ljava/text/CalendarBuilder;->toCalendarDayOfWeek(I)I -Ljava/text/CalendarBuilder;->toISODayOfWeek(I)I -Ljava/text/CalendarBuilder;->UNSET:I -Ljava/text/CalendarBuilder;->WEEK_YEAR:I -Ljava/text/ChoiceFormat;->choiceFormats:[Ljava/lang/String; -Ljava/text/ChoiceFormat;->choiceLimits:[D -Ljava/text/ChoiceFormat;->doubleArraySize([D)[D -Ljava/text/ChoiceFormat;->doubleArraySize([Ljava/lang/String;)[Ljava/lang/String; -Ljava/text/ChoiceFormat;->EXPONENT:J -Ljava/text/ChoiceFormat;->POSITIVEINFINITY:J -Ljava/text/ChoiceFormat;->SIGN:J -Ljava/text/CollationElementIterator;-><init>(Landroid/icu/text/CollationElementIterator;)V -Ljava/text/CollationElementIterator;->icuIterator:Landroid/icu/text/CollationElementIterator; -Ljava/text/CollationKey;->source:Ljava/lang/String; -Ljava/text/Collator;-><init>(Landroid/icu/text/Collator;)V -Ljava/text/Collator;->decompositionMode_ICU_Java(I)I -Ljava/text/Collator;->decompositionMode_Java_ICU(I)I -Ljava/text/DateFormat$Field;->calendarField:I -Ljava/text/DateFormat$Field;->calendarToFieldMapping:[Ljava/text/DateFormat$Field; -Ljava/text/DateFormat$Field;->instanceMap:Ljava/util/Map; -Ljava/text/DateFormat;->get(IIILjava/util/Locale;)Ljava/text/DateFormat; -Ljava/text/DateFormat;->set24HourTimePref(Ljava/lang/Boolean;)V -Ljava/text/DateFormatSymbols;->ampms:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->cachedHashCode:I -Ljava/text/DateFormatSymbols;->cachedInstances:Ljava/util/concurrent/ConcurrentMap; -Ljava/text/DateFormatSymbols;->copyMembers(Ljava/text/DateFormatSymbols;Ljava/text/DateFormatSymbols;)V -Ljava/text/DateFormatSymbols;->currentSerialVersion:I -Ljava/text/DateFormatSymbols;->eras:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->getCachedInstance(Ljava/util/Locale;)Ljava/text/DateFormatSymbols; -Ljava/text/DateFormatSymbols;->getInstanceRef(Ljava/util/Locale;)Ljava/text/DateFormatSymbols; -Ljava/text/DateFormatSymbols;->getShortStandAloneMonths()[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->getShortStandAloneWeekdays()[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->getStandAloneMonths()[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->getStandAloneWeekdays()[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->getTinyMonths()[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->getTinyStandAloneMonths()[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->getTinyStandAloneWeekdays()[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->getTinyWeekdays()[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->getZoneIndex(Ljava/lang/String;)I -Ljava/text/DateFormatSymbols;->getZoneStringsImpl(Z)[[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->getZoneStringsWrapper()[[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->initializeData(Ljava/util/Locale;)V -Ljava/text/DateFormatSymbols;->initializeSupplementaryData(Llibcore/icu/LocaleData;)V -Ljava/text/DateFormatSymbols;->internalZoneStrings()[[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->isSubclassObject()Z -Ljava/text/DateFormatSymbols;->isZoneStringsSet:Z -Ljava/text/DateFormatSymbols;->lastZoneIndex:I -Ljava/text/DateFormatSymbols;->locale:Ljava/util/Locale; -Ljava/text/DateFormatSymbols;->localPatternChars:Ljava/lang/String; -Ljava/text/DateFormatSymbols;->millisPerHour:I -Ljava/text/DateFormatSymbols;->months:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->patternChars:Ljava/lang/String; -Ljava/text/DateFormatSymbols;->PATTERN_AM_PM:I -Ljava/text/DateFormatSymbols;->PATTERN_DAY_OF_MONTH:I -Ljava/text/DateFormatSymbols;->PATTERN_DAY_OF_WEEK:I -Ljava/text/DateFormatSymbols;->PATTERN_DAY_OF_WEEK_IN_MONTH:I -Ljava/text/DateFormatSymbols;->PATTERN_DAY_OF_YEAR:I -Ljava/text/DateFormatSymbols;->PATTERN_DAY_PERIOD:I -Ljava/text/DateFormatSymbols;->PATTERN_ERA:I -Ljava/text/DateFormatSymbols;->PATTERN_FLEXIBLE_DAY_PERIOD:I -Ljava/text/DateFormatSymbols;->PATTERN_HOUR0:I -Ljava/text/DateFormatSymbols;->PATTERN_HOUR1:I -Ljava/text/DateFormatSymbols;->PATTERN_HOUR_OF_DAY0:I -Ljava/text/DateFormatSymbols;->PATTERN_HOUR_OF_DAY1:I -Ljava/text/DateFormatSymbols;->PATTERN_ISO_DAY_OF_WEEK:I -Ljava/text/DateFormatSymbols;->PATTERN_ISO_ZONE:I -Ljava/text/DateFormatSymbols;->PATTERN_MILLISECOND:I -Ljava/text/DateFormatSymbols;->PATTERN_MINUTE:I -Ljava/text/DateFormatSymbols;->PATTERN_MONTH:I -Ljava/text/DateFormatSymbols;->PATTERN_MONTH_STANDALONE:I -Ljava/text/DateFormatSymbols;->PATTERN_SECOND:I -Ljava/text/DateFormatSymbols;->PATTERN_STANDALONE_DAY_OF_WEEK:I -Ljava/text/DateFormatSymbols;->PATTERN_WEEK_OF_MONTH:I -Ljava/text/DateFormatSymbols;->PATTERN_WEEK_OF_YEAR:I -Ljava/text/DateFormatSymbols;->PATTERN_WEEK_YEAR:I -Ljava/text/DateFormatSymbols;->PATTERN_YEAR:I -Ljava/text/DateFormatSymbols;->PATTERN_ZONE_NAME:I -Ljava/text/DateFormatSymbols;->PATTERN_ZONE_VALUE:I -Ljava/text/DateFormatSymbols;->serialVersionOnStream:I -Ljava/text/DateFormatSymbols;->shortMonths:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->shortStandAloneMonths:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->shortStandAloneWeekdays:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->shortWeekdays:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->standAloneMonths:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->standAloneWeekdays:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->tinyMonths:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->tinyStandAloneMonths:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->tinyStandAloneWeekdays:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->tinyWeekdays:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->weekdays:[Ljava/lang/String; -Ljava/text/DateFormatSymbols;->zoneStrings:[[Ljava/lang/String; -Ljava/text/DecimalFormat;->adjustForCurrencyDefaultFractionDigits()V -Ljava/text/DecimalFormat;->compareIcuRoundingIncrement(Landroid/icu/text/DecimalFormat_ICU58_Android;)Z -Ljava/text/DecimalFormat;->convertRoundingMode(Ljava/math/RoundingMode;)I -Ljava/text/DecimalFormat;->currentSerialVersion:I -Ljava/text/DecimalFormat;->DOUBLE_FRACTION_DIGITS:I -Ljava/text/DecimalFormat;->DOUBLE_INTEGER_DIGITS:I -Ljava/text/DecimalFormat;->format(Ljava/math/BigDecimal;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; -Ljava/text/DecimalFormat;->format(Ljava/math/BigInteger;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer; -Ljava/text/DecimalFormat;->getIcuFieldPosition(Ljava/text/FieldPosition;)Ljava/text/FieldPosition; -Ljava/text/DecimalFormat;->icuDecimalFormat:Landroid/icu/text/DecimalFormat_ICU58_Android; -Ljava/text/DecimalFormat;->initPattern(Ljava/lang/String;)V -Ljava/text/DecimalFormat;->maximumFractionDigits:I -Ljava/text/DecimalFormat;->maximumIntegerDigits:I -Ljava/text/DecimalFormat;->MAXIMUM_FRACTION_DIGITS:I -Ljava/text/DecimalFormat;->MAXIMUM_INTEGER_DIGITS:I -Ljava/text/DecimalFormat;->minimumFractionDigits:I -Ljava/text/DecimalFormat;->minimumIntegerDigits:I -Ljava/text/DecimalFormat;->roundingMode:Ljava/math/RoundingMode; -Ljava/text/DecimalFormat;->symbols:Ljava/text/DecimalFormatSymbols; -Ljava/text/DecimalFormat;->toJavaFieldAttribute(Ljava/text/AttributedCharacterIterator$Attribute;)Ljava/text/NumberFormat$Field; -Ljava/text/DecimalFormat;->updateFieldsFromIcu()V -Ljava/text/DecimalFormatSymbols;->cachedIcuDFS:Landroid/icu/text/DecimalFormatSymbols; -Ljava/text/DecimalFormatSymbols;->currency:Ljava/util/Currency; -Ljava/text/DecimalFormatSymbols;->currencySymbol:Ljava/lang/String; -Ljava/text/DecimalFormatSymbols;->currentSerialVersion:I -Ljava/text/DecimalFormatSymbols;->decimalSeparator:C -Ljava/text/DecimalFormatSymbols;->digit:C -Ljava/text/DecimalFormatSymbols;->exponential:C -Ljava/text/DecimalFormatSymbols;->exponentialSeparator:Ljava/lang/String; -Ljava/text/DecimalFormatSymbols;->fromIcuInstance(Landroid/icu/text/DecimalFormatSymbols;)Ljava/text/DecimalFormatSymbols; -Ljava/text/DecimalFormatSymbols;->getExponentialSymbol()C -Ljava/text/DecimalFormatSymbols;->getIcuDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols; -Ljava/text/DecimalFormatSymbols;->getMinusSignString()Ljava/lang/String; -Ljava/text/DecimalFormatSymbols;->groupingSeparator:C -Ljava/text/DecimalFormatSymbols;->infinity:Ljava/lang/String; -Ljava/text/DecimalFormatSymbols;->initialize(Ljava/util/Locale;)V -Ljava/text/DecimalFormatSymbols;->intlCurrencySymbol:Ljava/lang/String; -Ljava/text/DecimalFormatSymbols;->locale:Ljava/util/Locale; -Ljava/text/DecimalFormatSymbols;->maybeStripMarkers(Ljava/lang/String;C)C -Ljava/text/DecimalFormatSymbols;->minusSign:C -Ljava/text/DecimalFormatSymbols;->monetarySeparator:C -Ljava/text/DecimalFormatSymbols;->NaN:Ljava/lang/String; -Ljava/text/DecimalFormatSymbols;->patternSeparator:C -Ljava/text/DecimalFormatSymbols;->percent:C -Ljava/text/DecimalFormatSymbols;->perMill:C -Ljava/text/DecimalFormatSymbols;->serialVersionOnStream:I -Ljava/text/DecimalFormatSymbols;->setExponentialSymbol(C)V -Ljava/text/DecimalFormatSymbols;->zeroDigit:C -Ljava/text/FieldPosition$Delegate;->encounteredField:Z -Ljava/text/FieldPosition$Delegate;->formatted(ILjava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V -Ljava/text/FieldPosition$Delegate;->formatted(Ljava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V -Ljava/text/FieldPosition;->attribute:Ljava/text/Format$Field; -Ljava/text/FieldPosition;->beginIndex:I -Ljava/text/FieldPosition;->endIndex:I -Ljava/text/FieldPosition;->field:I -Ljava/text/FieldPosition;->getFieldDelegate()Ljava/text/Format$FieldDelegate; -Ljava/text/FieldPosition;->matchesField(Ljava/text/Format$Field;)Z -Ljava/text/FieldPosition;->matchesField(Ljava/text/Format$Field;I)Z -Ljava/text/Format$FieldDelegate;->formatted(ILjava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V -Ljava/text/Format$FieldDelegate;->formatted(Ljava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V -Ljava/text/Format;->createAttributedCharacterIterator(Ljava/lang/String;)Ljava/text/AttributedCharacterIterator; -Ljava/text/Format;->createAttributedCharacterIterator(Ljava/lang/String;Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;)Ljava/text/AttributedCharacterIterator; -Ljava/text/Format;->createAttributedCharacterIterator(Ljava/text/AttributedCharacterIterator;Ljava/text/AttributedCharacterIterator$Attribute;Ljava/lang/Object;)Ljava/text/AttributedCharacterIterator; -Ljava/text/Format;->createAttributedCharacterIterator([Ljava/text/AttributedCharacterIterator;)Ljava/text/AttributedCharacterIterator; -Ljava/text/MessageFormat;->append(Ljava/lang/StringBuffer;Ljava/text/CharacterIterator;)V -Ljava/text/MessageFormat;->argumentNumbers:[I -Ljava/text/MessageFormat;->copyAndFixQuotes(Ljava/lang/String;IILjava/lang/StringBuilder;)V -Ljava/text/MessageFormat;->DATE_TIME_MODIFIERS:[I -Ljava/text/MessageFormat;->DATE_TIME_MODIFIER_KEYWORDS:[Ljava/lang/String; -Ljava/text/MessageFormat;->findKeyword(Ljava/lang/String;[Ljava/lang/String;)I -Ljava/text/MessageFormat;->formats:[Ljava/text/Format; -Ljava/text/MessageFormat;->INITIAL_FORMATS:I -Ljava/text/MessageFormat;->locale:Ljava/util/Locale; -Ljava/text/MessageFormat;->makeFormat(II[Ljava/lang/StringBuilder;)V -Ljava/text/MessageFormat;->maxOffset:I -Ljava/text/MessageFormat;->MODIFIER_CURRENCY:I -Ljava/text/MessageFormat;->MODIFIER_DEFAULT:I -Ljava/text/MessageFormat;->MODIFIER_FULL:I -Ljava/text/MessageFormat;->MODIFIER_INTEGER:I -Ljava/text/MessageFormat;->MODIFIER_LONG:I -Ljava/text/MessageFormat;->MODIFIER_MEDIUM:I -Ljava/text/MessageFormat;->MODIFIER_PERCENT:I -Ljava/text/MessageFormat;->MODIFIER_SHORT:I -Ljava/text/MessageFormat;->NUMBER_MODIFIER_KEYWORDS:[Ljava/lang/String; -Ljava/text/MessageFormat;->offsets:[I -Ljava/text/MessageFormat;->pattern:Ljava/lang/String; -Ljava/text/MessageFormat;->SEG_INDEX:I -Ljava/text/MessageFormat;->SEG_MODIFIER:I -Ljava/text/MessageFormat;->SEG_RAW:I -Ljava/text/MessageFormat;->SEG_TYPE:I -Ljava/text/MessageFormat;->subformat([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer; -Ljava/text/MessageFormat;->TYPE_CHOICE:I -Ljava/text/MessageFormat;->TYPE_DATE:I -Ljava/text/MessageFormat;->TYPE_KEYWORDS:[Ljava/lang/String; -Ljava/text/MessageFormat;->TYPE_NULL:I -Ljava/text/MessageFormat;->TYPE_NUMBER:I -Ljava/text/MessageFormat;->TYPE_TIME:I -Ljava/text/Normalizer$Form;->icuMode:Landroid/icu/text/Normalizer$Mode; -Ljava/text/Normalizer;-><init>()V -Ljava/text/NumberFormat$Field;->instanceMap:Ljava/util/Map; -Ljava/text/NumberFormat;->CURRENCYSTYLE:I -Ljava/text/NumberFormat;->currentSerialVersion:I -Ljava/text/NumberFormat;->groupingUsed:Z -Ljava/text/NumberFormat;->INTEGERSTYLE:I -Ljava/text/NumberFormat;->maxFractionDigits:B -Ljava/text/NumberFormat;->maximumFractionDigits:I -Ljava/text/NumberFormat;->maximumIntegerDigits:I -Ljava/text/NumberFormat;->maxIntegerDigits:B -Ljava/text/NumberFormat;->minFractionDigits:B -Ljava/text/NumberFormat;->minimumFractionDigits:I -Ljava/text/NumberFormat;->minimumIntegerDigits:I -Ljava/text/NumberFormat;->minIntegerDigits:B -Ljava/text/NumberFormat;->NUMBERSTYLE:I -Ljava/text/NumberFormat;->parseIntegerOnly:Z -Ljava/text/NumberFormat;->PERCENTSTYLE:I -Ljava/text/NumberFormat;->serialVersionOnStream:I -Ljava/text/ParseException;->errorOffset:I -Ljava/text/ParsePosition;->errorIndex:I -Ljava/text/ParsePosition;->index:I -Ljava/text/RuleBasedCollator;-><init>(Landroid/icu/text/RuleBasedCollator;)V -Ljava/text/RuleBasedCollator;->collAsICU()Landroid/icu/text/RuleBasedCollator; -Ljava/text/SimpleDateFormat;-><init>(IILjava/util/Locale;)V -Ljava/text/SimpleDateFormat;->cachedNumberFormatData:Ljava/util/concurrent/ConcurrentMap; -Ljava/text/SimpleDateFormat;->checkNegativeNumberExpression()V -Ljava/text/SimpleDateFormat;->compile(Ljava/lang/String;)[C -Ljava/text/SimpleDateFormat;->compiledPattern:[C -Ljava/text/SimpleDateFormat;->currentSerialVersion:I -Ljava/text/SimpleDateFormat;->defaultCenturyStart:Ljava/util/Date; -Ljava/text/SimpleDateFormat;->defaultCenturyStartYear:I -Ljava/text/SimpleDateFormat;->DST_NAME_TYPES:Ljava/util/Set; -Ljava/text/SimpleDateFormat;->encode(IILjava/lang/StringBuilder;)V -Ljava/text/SimpleDateFormat;->format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/Format$FieldDelegate;)Ljava/lang/StringBuffer; -Ljava/text/SimpleDateFormat;->formatData:Ljava/text/DateFormatSymbols; -Ljava/text/SimpleDateFormat;->formatMonth(IIILjava/lang/StringBuffer;ZZ)Ljava/lang/String; -Ljava/text/SimpleDateFormat;->formatWeekday(IIZZ)Ljava/lang/String; -Ljava/text/SimpleDateFormat;->getCalendarName()Ljava/lang/String; -Ljava/text/SimpleDateFormat;->getDateTimeFormat(IILjava/util/Locale;)Ljava/lang/String; -Ljava/text/SimpleDateFormat;->getTimeZoneNames()Landroid/icu/text/TimeZoneNames; -Ljava/text/SimpleDateFormat;->GMT:Ljava/lang/String; -Ljava/text/SimpleDateFormat;->hasFollowingMinusSign:Z -Ljava/text/SimpleDateFormat;->initialize(Ljava/util/Locale;)V -Ljava/text/SimpleDateFormat;->initializeCalendar(Ljava/util/Locale;)V -Ljava/text/SimpleDateFormat;->initializeDefaultCentury()V -Ljava/text/SimpleDateFormat;->isDigit(C)Z -Ljava/text/SimpleDateFormat;->isGregorianCalendar()Z -Ljava/text/SimpleDateFormat;->locale:Ljava/util/Locale; -Ljava/text/SimpleDateFormat;->matchString(Ljava/lang/String;IILjava/util/Map;Ljava/text/CalendarBuilder;)I -Ljava/text/SimpleDateFormat;->matchString(Ljava/lang/String;II[Ljava/lang/String;Ljava/text/CalendarBuilder;)I -Ljava/text/SimpleDateFormat;->matchZoneString(Ljava/lang/String;I[Ljava/lang/String;)I -Ljava/text/SimpleDateFormat;->MILLIS_PER_MINUTE:I -Ljava/text/SimpleDateFormat;->minusSign:C -Ljava/text/SimpleDateFormat;->NAME_TYPES:Ljava/util/EnumSet; -Ljava/text/SimpleDateFormat;->originalNumberFormat:Ljava/text/NumberFormat; -Ljava/text/SimpleDateFormat;->originalNumberPattern:Ljava/lang/String; -Ljava/text/SimpleDateFormat;->parseAmbiguousDatesAsAfter(Ljava/util/Date;)V -Ljava/text/SimpleDateFormat;->parseInternal(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date; -Ljava/text/SimpleDateFormat;->parseMonth(Ljava/lang/String;IIIILjava/text/ParsePosition;ZZLjava/text/CalendarBuilder;)I -Ljava/text/SimpleDateFormat;->parseWeekday(Ljava/lang/String;IIZZLjava/text/CalendarBuilder;)I -Ljava/text/SimpleDateFormat;->pattern:Ljava/lang/String; -Ljava/text/SimpleDateFormat;->PATTERN_INDEX_TO_CALENDAR_FIELD:[I -Ljava/text/SimpleDateFormat;->PATTERN_INDEX_TO_DATE_FORMAT_FIELD:[I -Ljava/text/SimpleDateFormat;->PATTERN_INDEX_TO_DATE_FORMAT_FIELD_ID:[Ljava/text/DateFormat$Field; -Ljava/text/SimpleDateFormat;->serialVersionOnStream:I -Ljava/text/SimpleDateFormat;->subFormat(IILjava/text/Format$FieldDelegate;Ljava/lang/StringBuffer;Z)V -Ljava/text/SimpleDateFormat;->subParse(Ljava/lang/String;IIIZ[ZLjava/text/ParsePosition;ZLjava/text/CalendarBuilder;)I -Ljava/text/SimpleDateFormat;->subParseNumericZone(Ljava/lang/String;IIIZLjava/text/CalendarBuilder;)I -Ljava/text/SimpleDateFormat;->subParseZoneString(Ljava/lang/String;ILjava/text/CalendarBuilder;)I -Ljava/text/SimpleDateFormat;->subParseZoneStringFromICU(Ljava/lang/String;ILjava/text/CalendarBuilder;)I -Ljava/text/SimpleDateFormat;->subParseZoneStringFromSymbols(Ljava/lang/String;ILjava/text/CalendarBuilder;)I -Ljava/text/SimpleDateFormat;->TAG_QUOTE_ASCII_CHAR:I -Ljava/text/SimpleDateFormat;->TAG_QUOTE_CHARS:I -Ljava/text/SimpleDateFormat;->timeZoneNames:Landroid/icu/text/TimeZoneNames; -Ljava/text/SimpleDateFormat;->translatePattern(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Ljava/text/SimpleDateFormat;->useDateFormatSymbols()Z -Ljava/text/SimpleDateFormat;->useDateFormatSymbols:Z -Ljava/text/SimpleDateFormat;->zeroDigit:C -Ljava/text/SimpleDateFormat;->zeroPaddingNumber(IIILjava/lang/StringBuffer;)V -Ljava/text/StringCharacterIterator;->begin:I -Ljava/text/StringCharacterIterator;->end:I -Ljava/text/StringCharacterIterator;->pos:I -Ljava/text/StringCharacterIterator;->text:Ljava/lang/String; -Ljava/time/chrono/AbstractChronology;->addFieldValue(Ljava/util/Map;Ljava/time/temporal/ChronoField;J)V -Ljava/time/chrono/AbstractChronology;->CHRONOS_BY_ID:Ljava/util/concurrent/ConcurrentHashMap; -Ljava/time/chrono/AbstractChronology;->CHRONOS_BY_TYPE:Ljava/util/concurrent/ConcurrentHashMap; -Ljava/time/chrono/AbstractChronology;->DATE_ORDER:Ljava/util/Comparator; -Ljava/time/chrono/AbstractChronology;->DATE_TIME_ORDER:Ljava/util/Comparator; -Ljava/time/chrono/AbstractChronology;->getAvailableChronologies()Ljava/util/Set; -Ljava/time/chrono/AbstractChronology;->initCache()Z -Ljava/time/chrono/AbstractChronology;->INSTANT_ORDER:Ljava/util/Comparator; -Ljava/time/chrono/AbstractChronology;->of(Ljava/lang/String;)Ljava/time/chrono/Chronology; -Ljava/time/chrono/AbstractChronology;->of0(Ljava/lang/String;)Ljava/time/chrono/Chronology; -Ljava/time/chrono/AbstractChronology;->ofLocale(Ljava/util/Locale;)Ljava/time/chrono/Chronology; -Ljava/time/chrono/AbstractChronology;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/Chronology; -Ljava/time/chrono/AbstractChronology;->registerChrono(Ljava/time/chrono/Chronology;)Ljava/time/chrono/Chronology; -Ljava/time/chrono/AbstractChronology;->registerChrono(Ljava/time/chrono/Chronology;Ljava/lang/String;)Ljava/time/chrono/Chronology; -Ljava/time/chrono/AbstractChronology;->resolveAligned(Ljava/time/chrono/ChronoLocalDate;JJJ)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/AbstractChronology;->resolveProlepticMonth(Ljava/util/Map;Ljava/time/format/ResolverStyle;)V -Ljava/time/chrono/AbstractChronology;->resolveYAA(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/AbstractChronology;->resolveYAD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/AbstractChronology;->resolveYD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/AbstractChronology;->resolveYearOfEra(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/AbstractChronology;->resolveYMAA(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/AbstractChronology;->resolveYMAD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/AbstractChronology;->resolveYMD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/AbstractChronology;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/chrono/ChronoLocalDateImpl;-><init>()V -Ljava/time/chrono/ChronoLocalDateImpl;->daysUntil(Ljava/time/chrono/ChronoLocalDate;)J -Ljava/time/chrono/ChronoLocalDateImpl;->ensureValid(Ljava/time/chrono/Chronology;Ljava/time/temporal/Temporal;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/ChronoLocalDateImpl;->minusDays(J)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/ChronoLocalDateImpl;->minusMonths(J)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/ChronoLocalDateImpl;->minusWeeks(J)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/ChronoLocalDateImpl;->minusYears(J)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/ChronoLocalDateImpl;->monthsUntil(Ljava/time/chrono/ChronoLocalDate;)J -Ljava/time/chrono/ChronoLocalDateImpl;->plusDays(J)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/ChronoLocalDateImpl;->plusMonths(J)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/ChronoLocalDateImpl;->plusWeeks(J)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/ChronoLocalDateImpl;->plusYears(J)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/HijrahChronology;-><init>(Ljava/lang/String;)V -Ljava/time/chrono/HijrahChronology;->calendarProperties:Ljava/util/Properties; -Ljava/time/chrono/HijrahChronology;->calendarType:Ljava/lang/String; -Ljava/time/chrono/HijrahChronology;->checkCalendarInit()V -Ljava/time/chrono/HijrahChronology;->checkValidDayOfYear(I)V -Ljava/time/chrono/HijrahChronology;->checkValidMonth(I)V -Ljava/time/chrono/HijrahChronology;->checkValidYear(J)I -Ljava/time/chrono/HijrahChronology;->createEpochMonths(IIILjava/util/Map;)[I -Ljava/time/chrono/HijrahChronology;->epochDayToEpochMonth(I)I -Ljava/time/chrono/HijrahChronology;->epochMonthLength(I)I -Ljava/time/chrono/HijrahChronology;->epochMonthToEpochDay(I)I -Ljava/time/chrono/HijrahChronology;->epochMonthToMonth(I)I -Ljava/time/chrono/HijrahChronology;->epochMonthToYear(I)I -Ljava/time/chrono/HijrahChronology;->getDayOfYear(II)I -Ljava/time/chrono/HijrahChronology;->getEpochDay(III)J -Ljava/time/chrono/HijrahChronology;->getHijrahDateInfo(I)[I -Ljava/time/chrono/HijrahChronology;->getMaximumDayOfYear()I -Ljava/time/chrono/HijrahChronology;->getMaximumMonthLength()I -Ljava/time/chrono/HijrahChronology;->getMaximumYear()I -Ljava/time/chrono/HijrahChronology;->getMinimumMonthLength()I -Ljava/time/chrono/HijrahChronology;->getMinimumYear()I -Ljava/time/chrono/HijrahChronology;->getMonthLength(II)I -Ljava/time/chrono/HijrahChronology;->getSmallestMaximumDayOfYear()I -Ljava/time/chrono/HijrahChronology;->getYearLength(I)I -Ljava/time/chrono/HijrahChronology;->hijrahEpochMonthStartDays:[I -Ljava/time/chrono/HijrahChronology;->hijrahStartEpochMonth:I -Ljava/time/chrono/HijrahChronology;->initComplete:Z -Ljava/time/chrono/HijrahChronology;->KEY_ID:Ljava/lang/String; -Ljava/time/chrono/HijrahChronology;->KEY_ISO_START:Ljava/lang/String; -Ljava/time/chrono/HijrahChronology;->KEY_TYPE:Ljava/lang/String; -Ljava/time/chrono/HijrahChronology;->KEY_VERSION:Ljava/lang/String; -Ljava/time/chrono/HijrahChronology;->loadCalendarData()V -Ljava/time/chrono/HijrahChronology;->maxEpochDay:I -Ljava/time/chrono/HijrahChronology;->maxMonthLength:I -Ljava/time/chrono/HijrahChronology;->maxYearLength:I -Ljava/time/chrono/HijrahChronology;->minEpochDay:I -Ljava/time/chrono/HijrahChronology;->minMonthLength:I -Ljava/time/chrono/HijrahChronology;->minYearLength:I -Ljava/time/chrono/HijrahChronology;->parseMonths(Ljava/lang/String;)[I -Ljava/time/chrono/HijrahChronology;->parseYMD(Ljava/lang/String;)[I -Ljava/time/chrono/HijrahChronology;->PROP_PREFIX:Ljava/lang/String; -Ljava/time/chrono/HijrahChronology;->PROP_TYPE_SUFFIX:Ljava/lang/String; -Ljava/time/chrono/HijrahChronology;->readConfigProperties(Ljava/lang/String;)Ljava/util/Properties; -Ljava/time/chrono/HijrahChronology;->registerVariants()V -Ljava/time/chrono/HijrahChronology;->typeId:Ljava/lang/String; -Ljava/time/chrono/HijrahChronology;->yearMonthToDayOfYear(II)I -Ljava/time/chrono/HijrahChronology;->yearToEpochMonth(I)I -Ljava/time/chrono/HijrahDate;-><init>(Ljava/time/chrono/HijrahChronology;III)V -Ljava/time/chrono/HijrahDate;-><init>(Ljava/time/chrono/HijrahChronology;J)V -Ljava/time/chrono/HijrahDate;->chrono:Ljava/time/chrono/HijrahChronology; -Ljava/time/chrono/HijrahDate;->dayOfMonth:I -Ljava/time/chrono/HijrahDate;->getDayOfWeek()I -Ljava/time/chrono/HijrahDate;->getDayOfYear()I -Ljava/time/chrono/HijrahDate;->getEraValue()I -Ljava/time/chrono/HijrahDate;->getProlepticMonth()J -Ljava/time/chrono/HijrahDate;->minusDays(J)Ljava/time/chrono/HijrahDate; -Ljava/time/chrono/HijrahDate;->minusMonths(J)Ljava/time/chrono/HijrahDate; -Ljava/time/chrono/HijrahDate;->minusWeeks(J)Ljava/time/chrono/HijrahDate; -Ljava/time/chrono/HijrahDate;->minusYears(J)Ljava/time/chrono/HijrahDate; -Ljava/time/chrono/HijrahDate;->monthOfYear:I -Ljava/time/chrono/HijrahDate;->of(Ljava/time/chrono/HijrahChronology;III)Ljava/time/chrono/HijrahDate; -Ljava/time/chrono/HijrahDate;->ofEpochDay(Ljava/time/chrono/HijrahChronology;J)Ljava/time/chrono/HijrahDate; -Ljava/time/chrono/HijrahDate;->plusDays(J)Ljava/time/chrono/HijrahDate; -Ljava/time/chrono/HijrahDate;->plusMonths(J)Ljava/time/chrono/HijrahDate; -Ljava/time/chrono/HijrahDate;->plusWeeks(J)Ljava/time/chrono/HijrahDate; -Ljava/time/chrono/HijrahDate;->plusYears(J)Ljava/time/chrono/HijrahDate; -Ljava/time/chrono/HijrahDate;->prolepticYear:I -Ljava/time/chrono/HijrahDate;->readExternal(Ljava/io/ObjectInput;)Ljava/time/chrono/HijrahDate; -Ljava/time/chrono/HijrahDate;->resolvePreviousValid(III)Ljava/time/chrono/HijrahDate; -Ljava/time/chrono/HijrahDate;->writeExternal(Ljava/io/ObjectOutput;)V -Ljava/time/chrono/IsoChronology;-><init>()V -Ljava/time/chrono/IsoChronology;->resolveProlepticMonth(Ljava/util/Map;Ljava/time/format/ResolverStyle;)V -Ljava/time/chrono/IsoChronology;->resolveYearOfEra(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/LocalDate; -Ljava/time/chrono/IsoChronology;->resolveYMD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/LocalDate; -Ljava/time/chrono/JapaneseChronology;-><init>()V -Ljava/time/chrono/JapaneseChronology;->createCalendar()Ljava/util/Calendar; -Ljava/time/chrono/JapaneseChronology;->getCurrentEra()Ljava/time/chrono/JapaneseEra; -Ljava/time/chrono/JapaneseChronology;->JCAL:Lsun/util/calendar/LocalGregorianCalendar; -Ljava/time/chrono/JapaneseChronology;->LOCALE:Ljava/util/Locale; -Ljava/time/chrono/JapaneseChronology;->prolepticYearLenient(Ljava/time/chrono/JapaneseEra;I)I -Ljava/time/chrono/JapaneseChronology;->resolveYD(Ljava/time/chrono/JapaneseEra;ILjava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/JapaneseChronology;->resolveYearOfEra(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/JapaneseChronology;->resolveYMD(Ljava/time/chrono/JapaneseEra;ILjava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/chrono/JapaneseDate;-><init>(Ljava/time/chrono/JapaneseEra;ILjava/time/LocalDate;)V -Ljava/time/chrono/JapaneseDate;-><init>(Ljava/time/LocalDate;)V -Ljava/time/chrono/JapaneseDate;->era:Ljava/time/chrono/JapaneseEra; -Ljava/time/chrono/JapaneseDate;->isoDate:Ljava/time/LocalDate; -Ljava/time/chrono/JapaneseDate;->MEIJI_6_ISODATE:Ljava/time/LocalDate; -Ljava/time/chrono/JapaneseDate;->minusDays(J)Ljava/time/chrono/JapaneseDate; -Ljava/time/chrono/JapaneseDate;->minusMonths(J)Ljava/time/chrono/JapaneseDate; -Ljava/time/chrono/JapaneseDate;->minusWeeks(J)Ljava/time/chrono/JapaneseDate; -Ljava/time/chrono/JapaneseDate;->minusYears(J)Ljava/time/chrono/JapaneseDate; -Ljava/time/chrono/JapaneseDate;->ofYearDay(Ljava/time/chrono/JapaneseEra;II)Ljava/time/chrono/JapaneseDate; -Ljava/time/chrono/JapaneseDate;->plusDays(J)Ljava/time/chrono/JapaneseDate; -Ljava/time/chrono/JapaneseDate;->plusMonths(J)Ljava/time/chrono/JapaneseDate; -Ljava/time/chrono/JapaneseDate;->plusWeeks(J)Ljava/time/chrono/JapaneseDate; -Ljava/time/chrono/JapaneseDate;->plusYears(J)Ljava/time/chrono/JapaneseDate; -Ljava/time/chrono/JapaneseDate;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/JapaneseDate; -Ljava/time/chrono/JapaneseDate;->toPrivateJapaneseDate(Ljava/time/LocalDate;)Lsun/util/calendar/LocalGregorianCalendar$Date; -Ljava/time/chrono/JapaneseDate;->with(Ljava/time/LocalDate;)Ljava/time/chrono/JapaneseDate; -Ljava/time/chrono/JapaneseDate;->withYear(I)Ljava/time/chrono/JapaneseDate; -Ljava/time/chrono/JapaneseDate;->withYear(Ljava/time/chrono/JapaneseEra;I)Ljava/time/chrono/JapaneseDate; -Ljava/time/chrono/JapaneseDate;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/chrono/JapaneseDate;->yearOfEra:I -Ljava/time/chrono/JapaneseEra;-><init>(ILjava/time/LocalDate;)V -Ljava/time/chrono/JapaneseEra;->eraValue:I -Ljava/time/chrono/JapaneseEra;->ERA_CONFIG:[Lsun/util/calendar/Era; -Ljava/time/chrono/JapaneseEra;->ERA_OFFSET:I -Ljava/time/chrono/JapaneseEra;->from(Ljava/time/LocalDate;)Ljava/time/chrono/JapaneseEra; -Ljava/time/chrono/JapaneseEra;->getAbbreviation()Ljava/lang/String; -Ljava/time/chrono/JapaneseEra;->getName()Ljava/lang/String; -Ljava/time/chrono/JapaneseEra;->getPrivateEra()Lsun/util/calendar/Era; -Ljava/time/chrono/JapaneseEra;->KNOWN_ERAS:[Ljava/time/chrono/JapaneseEra; -Ljava/time/chrono/JapaneseEra;->N_ERA_CONSTANTS:I -Ljava/time/chrono/JapaneseEra;->ordinal(I)I -Ljava/time/chrono/JapaneseEra;->privateEraFrom(Ljava/time/LocalDate;)Lsun/util/calendar/Era; -Ljava/time/chrono/JapaneseEra;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/JapaneseEra; -Ljava/time/chrono/JapaneseEra;->since:Ljava/time/LocalDate; -Ljava/time/chrono/JapaneseEra;->toJapaneseEra(Lsun/util/calendar/Era;)Ljava/time/chrono/JapaneseEra; -Ljava/time/chrono/JapaneseEra;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/chrono/MinguoChronology;-><init>()V -Ljava/time/chrono/MinguoChronology;->YEARS_DIFFERENCE:I -Ljava/time/chrono/MinguoDate;-><init>(Ljava/time/LocalDate;)V -Ljava/time/chrono/MinguoDate;->getProlepticMonth()J -Ljava/time/chrono/MinguoDate;->getProlepticYear()I -Ljava/time/chrono/MinguoDate;->isoDate:Ljava/time/LocalDate; -Ljava/time/chrono/MinguoDate;->minusDays(J)Ljava/time/chrono/MinguoDate; -Ljava/time/chrono/MinguoDate;->minusMonths(J)Ljava/time/chrono/MinguoDate; -Ljava/time/chrono/MinguoDate;->minusWeeks(J)Ljava/time/chrono/MinguoDate; -Ljava/time/chrono/MinguoDate;->minusYears(J)Ljava/time/chrono/MinguoDate; -Ljava/time/chrono/MinguoDate;->plusDays(J)Ljava/time/chrono/MinguoDate; -Ljava/time/chrono/MinguoDate;->plusMonths(J)Ljava/time/chrono/MinguoDate; -Ljava/time/chrono/MinguoDate;->plusWeeks(J)Ljava/time/chrono/MinguoDate; -Ljava/time/chrono/MinguoDate;->plusYears(J)Ljava/time/chrono/MinguoDate; -Ljava/time/chrono/MinguoDate;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/MinguoDate; -Ljava/time/chrono/MinguoDate;->with(Ljava/time/LocalDate;)Ljava/time/chrono/MinguoDate; -Ljava/time/chrono/MinguoDate;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/chrono/ThaiBuddhistChronology;-><init>()V -Ljava/time/chrono/ThaiBuddhistChronology;->ERA_FULL_NAMES:Ljava/util/HashMap; -Ljava/time/chrono/ThaiBuddhistChronology;->ERA_NARROW_NAMES:Ljava/util/HashMap; -Ljava/time/chrono/ThaiBuddhistChronology;->ERA_SHORT_NAMES:Ljava/util/HashMap; -Ljava/time/chrono/ThaiBuddhistChronology;->FALLBACK_LANGUAGE:Ljava/lang/String; -Ljava/time/chrono/ThaiBuddhistChronology;->TARGET_LANGUAGE:Ljava/lang/String; -Ljava/time/chrono/ThaiBuddhistChronology;->YEARS_DIFFERENCE:I -Ljava/time/chrono/ThaiBuddhistDate;-><init>(Ljava/time/LocalDate;)V -Ljava/time/chrono/ThaiBuddhistDate;->getProlepticMonth()J -Ljava/time/chrono/ThaiBuddhistDate;->getProlepticYear()I -Ljava/time/chrono/ThaiBuddhistDate;->isoDate:Ljava/time/LocalDate; -Ljava/time/chrono/ThaiBuddhistDate;->minusDays(J)Ljava/time/chrono/ThaiBuddhistDate; -Ljava/time/chrono/ThaiBuddhistDate;->minusMonths(J)Ljava/time/chrono/ThaiBuddhistDate; -Ljava/time/chrono/ThaiBuddhistDate;->minusWeeks(J)Ljava/time/chrono/ThaiBuddhistDate; -Ljava/time/chrono/ThaiBuddhistDate;->minusYears(J)Ljava/time/chrono/ThaiBuddhistDate; -Ljava/time/chrono/ThaiBuddhistDate;->plusDays(J)Ljava/time/chrono/ThaiBuddhistDate; -Ljava/time/chrono/ThaiBuddhistDate;->plusMonths(J)Ljava/time/chrono/ThaiBuddhistDate; -Ljava/time/chrono/ThaiBuddhistDate;->plusWeeks(J)Ljava/time/chrono/ThaiBuddhistDate; -Ljava/time/chrono/ThaiBuddhistDate;->plusYears(J)Ljava/time/chrono/ThaiBuddhistDate; -Ljava/time/chrono/ThaiBuddhistDate;->readExternal(Ljava/io/DataInput;)Ljava/time/chrono/ThaiBuddhistDate; -Ljava/time/chrono/ThaiBuddhistDate;->with(Ljava/time/LocalDate;)Ljava/time/chrono/ThaiBuddhistDate; -Ljava/time/chrono/ThaiBuddhistDate;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/Clock$FixedClock;-><init>(Ljava/time/Instant;Ljava/time/ZoneId;)V -Ljava/time/Clock$FixedClock;->instant:Ljava/time/Instant; -Ljava/time/Clock$FixedClock;->zone:Ljava/time/ZoneId; -Ljava/time/Clock$OffsetClock;-><init>(Ljava/time/Clock;Ljava/time/Duration;)V -Ljava/time/Clock$OffsetClock;->baseClock:Ljava/time/Clock; -Ljava/time/Clock$OffsetClock;->offset:Ljava/time/Duration; -Ljava/time/Clock$SystemClock;-><init>(Ljava/time/ZoneId;)V -Ljava/time/Clock$SystemClock;->zone:Ljava/time/ZoneId; -Ljava/time/Clock$TickClock;-><init>(Ljava/time/Clock;J)V -Ljava/time/Clock$TickClock;->baseClock:Ljava/time/Clock; -Ljava/time/Clock$TickClock;->tickNanos:J -Ljava/time/DayOfWeek;->ENUMS:[Ljava/time/DayOfWeek; -Ljava/time/Duration$DurationUnits;-><init>()V -Ljava/time/Duration$DurationUnits;->UNITS:Ljava/util/List; -Ljava/time/Duration;-><init>(JI)V -Ljava/time/Duration;->BI_NANOS_PER_SECOND:Ljava/math/BigInteger; -Ljava/time/Duration;->create(JI)Ljava/time/Duration; -Ljava/time/Duration;->create(Ljava/math/BigDecimal;)Ljava/time/Duration; -Ljava/time/Duration;->create(ZJJJJI)Ljava/time/Duration; -Ljava/time/Duration;->nanos:I -Ljava/time/Duration;->parseFraction(Ljava/lang/CharSequence;Ljava/lang/String;I)I -Ljava/time/Duration;->parseNumber(Ljava/lang/CharSequence;Ljava/lang/String;ILjava/lang/String;)J -Ljava/time/Duration;->PATTERN:Ljava/util/regex/Pattern; -Ljava/time/Duration;->plus(JJ)Ljava/time/Duration; -Ljava/time/Duration;->readExternal(Ljava/io/DataInput;)Ljava/time/Duration; -Ljava/time/Duration;->seconds:J -Ljava/time/Duration;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/format/DateTimeFormatter$ClassicFormat;-><init>(Ljava/time/format/DateTimeFormatter;Ljava/time/temporal/TemporalQuery;)V -Ljava/time/format/DateTimeFormatter$ClassicFormat;->formatter:Ljava/time/format/DateTimeFormatter; -Ljava/time/format/DateTimeFormatter$ClassicFormat;->parseType:Ljava/time/temporal/TemporalQuery; -Ljava/time/format/DateTimeFormatter;-><init>(Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;Ljava/util/Locale;Ljava/time/format/DecimalStyle;Ljava/time/format/ResolverStyle;Ljava/util/Set;Ljava/time/chrono/Chronology;Ljava/time/ZoneId;)V -Ljava/time/format/DateTimeFormatter;->chrono:Ljava/time/chrono/Chronology; -Ljava/time/format/DateTimeFormatter;->createError(Ljava/lang/CharSequence;Ljava/lang/RuntimeException;)Ljava/time/format/DateTimeParseException; -Ljava/time/format/DateTimeFormatter;->decimalStyle:Ljava/time/format/DecimalStyle; -Ljava/time/format/DateTimeFormatter;->locale:Ljava/util/Locale; -Ljava/time/format/DateTimeFormatter;->PARSED_EXCESS_DAYS:Ljava/time/temporal/TemporalQuery; -Ljava/time/format/DateTimeFormatter;->PARSED_LEAP_SECOND:Ljava/time/temporal/TemporalQuery; -Ljava/time/format/DateTimeFormatter;->parseResolved0(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/time/temporal/TemporalAccessor; -Ljava/time/format/DateTimeFormatter;->parseUnresolved0(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/time/format/DateTimeParseContext; -Ljava/time/format/DateTimeFormatter;->printerParser:Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser; -Ljava/time/format/DateTimeFormatter;->resolverFields:Ljava/util/Set; -Ljava/time/format/DateTimeFormatter;->resolverStyle:Ljava/time/format/ResolverStyle; -Ljava/time/format/DateTimeFormatter;->toPrinterParser(Z)Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser; -Ljava/time/format/DateTimeFormatter;->zone:Ljava/time/ZoneId; -Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;-><init>(C)V -Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->literal:C -Ljava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;-><init>(Ljava/time/format/TextStyle;)V -Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->getChronologyName(Ljava/time/chrono/Chronology;Ljava/util/Locale;)Ljava/lang/String; -Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$ChronoPrinterParser;->textStyle:Ljava/time/format/TextStyle; -Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;-><init>(Ljava/util/List;Z)V -Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;-><init>([Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;Z)V -Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->optional:Z -Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->printerParsers:[Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser; -Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->withOptional(Z)Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser; -Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;-><init>(Ljava/time/temporal/TemporalField;J)V -Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->field:Ljava/time/temporal/TemporalField; -Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$DefaultValueParser;->value:J -Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIZ)V -Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->convertFromFraction(Ljava/math/BigDecimal;)J -Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->convertToFraction(J)Ljava/math/BigDecimal; -Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->decimalPoint:Z -Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->field:Ljava/time/temporal/TemporalField; -Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->maxWidth:I -Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->minWidth:I -Ljava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;-><init>(I)V -Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->fractionalDigits:I -Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->SECONDS_0000_TO_1970:J -Ljava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->SECONDS_PER_10000_YEARS:J -Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;-><init>(Ljava/time/format/TextStyle;)V -Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->appendHMS(Ljava/lang/StringBuilder;I)Ljava/lang/StringBuilder; -Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->getDigit(Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$LocalizedOffsetIdPrinterParser;->style:Ljava/time/format/TextStyle; -Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;-><init>(Ljava/time/format/FormatStyle;Ljava/time/format/FormatStyle;)V -Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->dateStyle:Ljava/time/format/FormatStyle; -Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->formatter(Ljava/util/Locale;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter; -Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->FORMATTER_CACHE:Ljava/util/concurrent/ConcurrentMap; -Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$LocalizedPrinterParser;->timeStyle:Ljava/time/format/FormatStyle; -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IILjava/time/format/SignStyle;)V -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IILjava/time/format/SignStyle;I)V -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->EXCEED_POINTS:[J -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->field:Ljava/time/temporal/TemporalField; -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->getValue(Ljava/time/format/DateTimePrintContext;J)J -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->isFixedWidth(Ljava/time/format/DateTimeParseContext;)Z -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->maxWidth:I -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->minWidth:I -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->setValue(Ljava/time/format/DateTimeParseContext;JII)I -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->signStyle:Ljava/time/format/SignStyle; -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->subsequentWidth:I -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->withFixedWidth()Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser; -Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->withSubsequentWidth(I)Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser; -Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->checkPattern(Ljava/lang/String;)I -Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->INSTANCE_ID_Z:Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser; -Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->INSTANCE_ID_ZERO:Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser; -Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->noOffsetText:Ljava/lang/String; -Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->parseNumber([IILjava/lang/CharSequence;Z)Z -Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->PATTERNS:[Ljava/lang/String; -Ljava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->type:I -Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;-><init>(Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;IC)V -Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->padChar:C -Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->padWidth:I -Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$PadPrinterParserDecorator;->printerParser:Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)V -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;->isEqual(CC)Z -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;->newNode(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI;->prefixOf(Ljava/lang/CharSequence;II)Z -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)V -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->isLenientChar(C)Z -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->match(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/lang/String; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->newNode(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$CI; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree$LENIENT;->toKey(Ljava/lang/String;)Ljava/lang/String; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)V -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->add(Ljava/lang/String;Ljava/lang/String;)Z -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->add0(Ljava/lang/String;Ljava/lang/String;)Z -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->c0:C -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->child:Ljava/time/format/DateTimeFormatterBuilder$PrefixTree; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->copyTree()Ljava/time/format/DateTimeFormatterBuilder$PrefixTree; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->isEqual(CC)Z -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->key:Ljava/lang/String; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->match(Ljava/lang/CharSequence;II)Ljava/lang/String; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->match(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/lang/String; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->newNode(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->newTree(Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->newTree(Ljava/util/Set;Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->prefixLength(Ljava/lang/String;)I -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->prefixOf(Ljava/lang/CharSequence;II)Z -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->sibling:Ljava/time/format/DateTimeFormatterBuilder$PrefixTree; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->toKey(Ljava/lang/String;)Ljava/lang/String; -Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;->value:Ljava/lang/String; -Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIILjava/time/chrono/ChronoLocalDate;)V -Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIILjava/time/chrono/ChronoLocalDate;I)V -Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->baseDate:Ljava/time/chrono/ChronoLocalDate; -Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->baseValue:I -Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->BASE_DATE:Ljava/time/LocalDate; -Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->getValue(Ljava/time/format/DateTimePrintContext;J)J -Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->isFixedWidth(Ljava/time/format/DateTimeParseContext;)Z -Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->setValue(Ljava/time/format/DateTimeParseContext;JII)I -Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->withFixedWidth()Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser; -Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser;->withSubsequentWidth(I)Ljava/time/format/DateTimeFormatterBuilder$ReducedPrinterParser; -Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->INSENSITIVE:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser; -Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->LENIENT:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser; -Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->SENSITIVE:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser; -Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->STRICT:Ljava/time/format/DateTimeFormatterBuilder$SettingsParser; -Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->valueOf(Ljava/lang/String;)Ljava/time/format/DateTimeFormatterBuilder$SettingsParser; -Ljava/time/format/DateTimeFormatterBuilder$SettingsParser;->values()[Ljava/time/format/DateTimeFormatterBuilder$SettingsParser; -Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;-><init>(Ljava/lang/String;)V -Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;->literal:Ljava/lang/String; -Ljava/time/format/DateTimeFormatterBuilder$StringLiteralPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;-><init>(Ljava/time/temporal/TemporalField;Ljava/time/format/TextStyle;Ljava/time/format/DateTimeTextProvider;)V -Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->field:Ljava/time/temporal/TemporalField; -Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->numberPrinterParser()Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser; -Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->numberPrinterParser:Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser; -Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->provider:Ljava/time/format/DateTimeTextProvider; -Ljava/time/format/DateTimeFormatterBuilder$TextPrinterParser;->textStyle:Ljava/time/format/TextStyle; -Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;-><init>(CI)V -Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->chr:C -Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->count:I -Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$WeekBasedFieldPrinterParser;->printerParser(Ljava/util/Locale;)Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser; -Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;-><init>(Ljava/time/temporal/TemporalQuery;Ljava/lang/String;)V -Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->cachedPrefixTree:Ljava/util/Map$Entry; -Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->cachedPrefixTreeCI:Ljava/util/Map$Entry; -Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->description:Ljava/lang/String; -Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->getTree(Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree; -Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I -Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->parseOffsetBased(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;IILjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;)I -Ljava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->query:Ljava/time/temporal/TemporalQuery; -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;-><init>(Ljava/time/format/TextStyle;Ljava/util/Set;)V -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->cache:Ljava/util/Map; -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->cachedTree:Ljava/util/Map; -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->cachedTreeCI:Ljava/util/Map; -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->DST:I -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->FULL_TYPES:[Landroid/icu/text/TimeZoneNames$NameType; -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->GENERIC:I -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->getDisplayName(Ljava/lang/String;ILjava/util/Locale;)Ljava/lang/String; -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->getTree(Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree; -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->preferredZones:Ljava/util/Set; -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->SHORT_TYPES:[Landroid/icu/text/TimeZoneNames$NameType; -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->STD:I -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->textStyle:Ljava/time/format/TextStyle; -Ljava/time/format/DateTimeFormatterBuilder$ZoneTextPrinterParser;->TYPES:[Landroid/icu/text/TimeZoneNames$NameType; -Ljava/time/format/DateTimeFormatterBuilder;-><init>(Ljava/time/format/DateTimeFormatterBuilder;Z)V -Ljava/time/format/DateTimeFormatterBuilder;->active:Ljava/time/format/DateTimeFormatterBuilder; -Ljava/time/format/DateTimeFormatterBuilder;->appendInternal(Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;)I -Ljava/time/format/DateTimeFormatterBuilder;->appendValue(Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;)Ljava/time/format/DateTimeFormatterBuilder; -Ljava/time/format/DateTimeFormatterBuilder;->convertStyle(Ljava/time/format/FormatStyle;)I -Ljava/time/format/DateTimeFormatterBuilder;->FIELD_MAP:Ljava/util/Map; -Ljava/time/format/DateTimeFormatterBuilder;->LENGTH_SORT:Ljava/util/Comparator; -Ljava/time/format/DateTimeFormatterBuilder;->optional:Z -Ljava/time/format/DateTimeFormatterBuilder;->padNextChar:C -Ljava/time/format/DateTimeFormatterBuilder;->padNextWidth:I -Ljava/time/format/DateTimeFormatterBuilder;->parent:Ljava/time/format/DateTimeFormatterBuilder; -Ljava/time/format/DateTimeFormatterBuilder;->parseField(CILjava/time/temporal/TemporalField;)V -Ljava/time/format/DateTimeFormatterBuilder;->parsePattern(Ljava/lang/String;)V -Ljava/time/format/DateTimeFormatterBuilder;->printerParsers:Ljava/util/List; -Ljava/time/format/DateTimeFormatterBuilder;->QUERY_REGION_ONLY:Ljava/time/temporal/TemporalQuery; -Ljava/time/format/DateTimeFormatterBuilder;->toFormatter(Ljava/time/format/ResolverStyle;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter; -Ljava/time/format/DateTimeFormatterBuilder;->toFormatter(Ljava/util/Locale;Ljava/time/format/ResolverStyle;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter; -Ljava/time/format/DateTimeFormatterBuilder;->valueParserIndex:I -Ljava/time/format/DateTimeParseContext;-><init>(Ljava/time/format/DateTimeFormatter;)V -Ljava/time/format/DateTimeParseContext;->addChronoChangedListener(Ljava/util/function/Consumer;)V -Ljava/time/format/DateTimeParseContext;->caseSensitive:Z -Ljava/time/format/DateTimeParseContext;->charEquals(CC)Z -Ljava/time/format/DateTimeParseContext;->charEqualsIgnoreCase(CC)Z -Ljava/time/format/DateTimeParseContext;->chronoListeners:Ljava/util/ArrayList; -Ljava/time/format/DateTimeParseContext;->copy()Ljava/time/format/DateTimeParseContext; -Ljava/time/format/DateTimeParseContext;->currentParsed()Ljava/time/format/Parsed; -Ljava/time/format/DateTimeParseContext;->endOptional(Z)V -Ljava/time/format/DateTimeParseContext;->formatter:Ljava/time/format/DateTimeFormatter; -Ljava/time/format/DateTimeParseContext;->getDecimalStyle()Ljava/time/format/DecimalStyle; -Ljava/time/format/DateTimeParseContext;->getEffectiveChronology()Ljava/time/chrono/Chronology; -Ljava/time/format/DateTimeParseContext;->getLocale()Ljava/util/Locale; -Ljava/time/format/DateTimeParseContext;->getParsed(Ljava/time/temporal/TemporalField;)Ljava/lang/Long; -Ljava/time/format/DateTimeParseContext;->isCaseSensitive()Z -Ljava/time/format/DateTimeParseContext;->isStrict()Z -Ljava/time/format/DateTimeParseContext;->parsed:Ljava/util/ArrayList; -Ljava/time/format/DateTimeParseContext;->setCaseSensitive(Z)V -Ljava/time/format/DateTimeParseContext;->setParsed(Ljava/time/chrono/Chronology;)V -Ljava/time/format/DateTimeParseContext;->setParsed(Ljava/time/ZoneId;)V -Ljava/time/format/DateTimeParseContext;->setParsedField(Ljava/time/temporal/TemporalField;JII)I -Ljava/time/format/DateTimeParseContext;->setParsedLeapSecond()V -Ljava/time/format/DateTimeParseContext;->setStrict(Z)V -Ljava/time/format/DateTimeParseContext;->startOptional()V -Ljava/time/format/DateTimeParseContext;->strict:Z -Ljava/time/format/DateTimeParseContext;->subSequenceEquals(Ljava/lang/CharSequence;ILjava/lang/CharSequence;II)Z -Ljava/time/format/DateTimeParseContext;->toResolved(Ljava/time/format/ResolverStyle;Ljava/util/Set;)Ljava/time/temporal/TemporalAccessor; -Ljava/time/format/DateTimeParseContext;->toUnresolved()Ljava/time/format/Parsed; -Ljava/time/format/DateTimeParseException;->errorIndex:I -Ljava/time/format/DateTimeParseException;->parsedString:Ljava/lang/String; -Ljava/time/format/DateTimePrintContext;-><init>(Ljava/time/temporal/TemporalAccessor;Ljava/time/format/DateTimeFormatter;)V -Ljava/time/format/DateTimePrintContext;->adjust(Ljava/time/temporal/TemporalAccessor;Ljava/time/format/DateTimeFormatter;)Ljava/time/temporal/TemporalAccessor; -Ljava/time/format/DateTimePrintContext;->endOptional()V -Ljava/time/format/DateTimePrintContext;->formatter:Ljava/time/format/DateTimeFormatter; -Ljava/time/format/DateTimePrintContext;->getDecimalStyle()Ljava/time/format/DecimalStyle; -Ljava/time/format/DateTimePrintContext;->getLocale()Ljava/util/Locale; -Ljava/time/format/DateTimePrintContext;->getTemporal()Ljava/time/temporal/TemporalAccessor; -Ljava/time/format/DateTimePrintContext;->getValue(Ljava/time/temporal/TemporalField;)Ljava/lang/Long; -Ljava/time/format/DateTimePrintContext;->getValue(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object; -Ljava/time/format/DateTimePrintContext;->optional:I -Ljava/time/format/DateTimePrintContext;->startOptional()V -Ljava/time/format/DateTimePrintContext;->temporal:Ljava/time/temporal/TemporalAccessor; -Ljava/time/format/DateTimeTextProvider$LocaleStore;-><init>(Ljava/util/Map;)V -Ljava/time/format/DateTimeTextProvider$LocaleStore;->getText(JLjava/time/format/TextStyle;)Ljava/lang/String; -Ljava/time/format/DateTimeTextProvider$LocaleStore;->getTextIterator(Ljava/time/format/TextStyle;)Ljava/util/Iterator; -Ljava/time/format/DateTimeTextProvider$LocaleStore;->parsable:Ljava/util/Map; -Ljava/time/format/DateTimeTextProvider$LocaleStore;->valueTextMap:Ljava/util/Map; -Ljava/time/format/DateTimeTextProvider;-><init>()V -Ljava/time/format/DateTimeTextProvider;->CACHE:Ljava/util/concurrent/ConcurrentMap; -Ljava/time/format/DateTimeTextProvider;->COMPARATOR:Ljava/util/Comparator; -Ljava/time/format/DateTimeTextProvider;->createEntry(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map$Entry; -Ljava/time/format/DateTimeTextProvider;->createStore(Ljava/time/temporal/TemporalField;Ljava/util/Locale;)Ljava/lang/Object; -Ljava/time/format/DateTimeTextProvider;->extractQuarters(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)Ljava/util/Map; -Ljava/time/format/DateTimeTextProvider;->findStore(Ljava/time/temporal/TemporalField;Ljava/util/Locale;)Ljava/lang/Object; -Ljava/time/format/DateTimeTextProvider;->getInstance()Ljava/time/format/DateTimeTextProvider; -Ljava/time/format/DateTimeTextProvider;->getText(Ljava/time/chrono/Chronology;Ljava/time/temporal/TemporalField;JLjava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String; -Ljava/time/format/DateTimeTextProvider;->getText(Ljava/time/temporal/TemporalField;JLjava/time/format/TextStyle;Ljava/util/Locale;)Ljava/lang/String; -Ljava/time/format/DateTimeTextProvider;->getTextIterator(Ljava/time/chrono/Chronology;Ljava/time/temporal/TemporalField;Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/util/Iterator; -Ljava/time/format/DateTimeTextProvider;->getTextIterator(Ljava/time/temporal/TemporalField;Ljava/time/format/TextStyle;Ljava/util/Locale;)Ljava/util/Iterator; -Ljava/time/format/DateTimeTextProvider;->toWeekDay(I)I -Ljava/time/format/DecimalStyle;-><init>(CCCC)V -Ljava/time/format/DecimalStyle;->CACHE:Ljava/util/concurrent/ConcurrentMap; -Ljava/time/format/DecimalStyle;->convertNumberToI18N(Ljava/lang/String;)Ljava/lang/String; -Ljava/time/format/DecimalStyle;->convertToDigit(C)I -Ljava/time/format/DecimalStyle;->create(Ljava/util/Locale;)Ljava/time/format/DecimalStyle; -Ljava/time/format/DecimalStyle;->decimalSeparator:C -Ljava/time/format/DecimalStyle;->negativeSign:C -Ljava/time/format/DecimalStyle;->positiveSign:C -Ljava/time/format/DecimalStyle;->zeroDigit:C -Ljava/time/format/Parsed;-><init>()V -Ljava/time/format/Parsed;->chrono:Ljava/time/chrono/Chronology; -Ljava/time/format/Parsed;->copy()Ljava/time/format/Parsed; -Ljava/time/format/Parsed;->crossCheck()V -Ljava/time/format/Parsed;->crossCheck(Ljava/time/temporal/TemporalAccessor;)V -Ljava/time/format/Parsed;->date:Ljava/time/chrono/ChronoLocalDate; -Ljava/time/format/Parsed;->excessDays:Ljava/time/Period; -Ljava/time/format/Parsed;->fieldValues:Ljava/util/Map; -Ljava/time/format/Parsed;->leapSecond:Z -Ljava/time/format/Parsed;->resolve(Ljava/time/format/ResolverStyle;Ljava/util/Set;)Ljava/time/temporal/TemporalAccessor; -Ljava/time/format/Parsed;->resolveDateFields()V -Ljava/time/format/Parsed;->resolveFields()V -Ljava/time/format/Parsed;->resolveFractional()V -Ljava/time/format/Parsed;->resolveInstant()V -Ljava/time/format/Parsed;->resolveInstantFields()V -Ljava/time/format/Parsed;->resolveInstantFields0(Ljava/time/ZoneId;)V -Ljava/time/format/Parsed;->resolvePeriod()V -Ljava/time/format/Parsed;->resolverStyle:Ljava/time/format/ResolverStyle; -Ljava/time/format/Parsed;->resolveTime(JJJJ)V -Ljava/time/format/Parsed;->resolveTimeFields()V -Ljava/time/format/Parsed;->resolveTimeLenient()V -Ljava/time/format/Parsed;->time:Ljava/time/LocalTime; -Ljava/time/format/Parsed;->updateCheckConflict(Ljava/time/chrono/ChronoLocalDate;)V -Ljava/time/format/Parsed;->updateCheckConflict(Ljava/time/LocalTime;Ljava/time/Period;)V -Ljava/time/format/Parsed;->updateCheckConflict(Ljava/time/temporal/TemporalField;Ljava/time/temporal/TemporalField;Ljava/lang/Long;)V -Ljava/time/format/Parsed;->zone:Ljava/time/ZoneId; -Ljava/time/format/SignStyle;->parse(ZZZ)Z -Ljava/time/format/TextStyle;->calendarStyle:I -Ljava/time/format/TextStyle;->toCalendarStyle()I -Ljava/time/format/TextStyle;->zoneNameStyleIndex()I -Ljava/time/format/TextStyle;->zoneNameStyleIndex:I -Ljava/time/Instant;-><init>(JI)V -Ljava/time/Instant;->create(JI)Ljava/time/Instant; -Ljava/time/Instant;->MAX_SECOND:J -Ljava/time/Instant;->MIN_SECOND:J -Ljava/time/Instant;->nanos:I -Ljava/time/Instant;->nanosUntil(Ljava/time/Instant;)J -Ljava/time/Instant;->plus(JJ)Ljava/time/Instant; -Ljava/time/Instant;->readExternal(Ljava/io/DataInput;)Ljava/time/Instant; -Ljava/time/Instant;->seconds:J -Ljava/time/Instant;->secondsUntil(Ljava/time/Instant;)J -Ljava/time/Instant;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/LocalDate;-><init>(III)V -Ljava/time/LocalDate;->compareTo0(Ljava/time/LocalDate;)I -Ljava/time/LocalDate;->create(III)Ljava/time/LocalDate; -Ljava/time/LocalDate;->day:S -Ljava/time/LocalDate;->daysUntil(Ljava/time/LocalDate;)J -Ljava/time/LocalDate;->DAYS_0000_TO_1970:J -Ljava/time/LocalDate;->DAYS_PER_CYCLE:I -Ljava/time/LocalDate;->get0(Ljava/time/temporal/TemporalField;)I -Ljava/time/LocalDate;->getProlepticMonth()J -Ljava/time/LocalDate;->month:S -Ljava/time/LocalDate;->monthsUntil(Ljava/time/LocalDate;)J -Ljava/time/LocalDate;->readExternal(Ljava/io/DataInput;)Ljava/time/LocalDate; -Ljava/time/LocalDate;->resolvePreviousValid(III)Ljava/time/LocalDate; -Ljava/time/LocalDate;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/LocalDate;->year:I -Ljava/time/LocalDateTime;-><init>(Ljava/time/LocalDate;Ljava/time/LocalTime;)V -Ljava/time/LocalDateTime;->compareTo0(Ljava/time/LocalDateTime;)I -Ljava/time/LocalDateTime;->date:Ljava/time/LocalDate; -Ljava/time/LocalDateTime;->plusWithOverflow(Ljava/time/LocalDate;JJJJI)Ljava/time/LocalDateTime; -Ljava/time/LocalDateTime;->readExternal(Ljava/io/DataInput;)Ljava/time/LocalDateTime; -Ljava/time/LocalDateTime;->time:Ljava/time/LocalTime; -Ljava/time/LocalDateTime;->with(Ljava/time/LocalDate;Ljava/time/LocalTime;)Ljava/time/LocalDateTime; -Ljava/time/LocalDateTime;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/LocalTime;-><init>(IIII)V -Ljava/time/LocalTime;->create(IIII)Ljava/time/LocalTime; -Ljava/time/LocalTime;->get0(Ljava/time/temporal/TemporalField;)I -Ljava/time/LocalTime;->hour:B -Ljava/time/LocalTime;->HOURS:[Ljava/time/LocalTime; -Ljava/time/LocalTime;->HOURS_PER_DAY:I -Ljava/time/LocalTime;->MICROS_PER_DAY:J -Ljava/time/LocalTime;->MILLIS_PER_DAY:J -Ljava/time/LocalTime;->minute:B -Ljava/time/LocalTime;->MINUTES_PER_DAY:I -Ljava/time/LocalTime;->MINUTES_PER_HOUR:I -Ljava/time/LocalTime;->nano:I -Ljava/time/LocalTime;->NANOS_PER_DAY:J -Ljava/time/LocalTime;->NANOS_PER_HOUR:J -Ljava/time/LocalTime;->NANOS_PER_MINUTE:J -Ljava/time/LocalTime;->NANOS_PER_SECOND:J -Ljava/time/LocalTime;->readExternal(Ljava/io/DataInput;)Ljava/time/LocalTime; -Ljava/time/LocalTime;->second:B -Ljava/time/LocalTime;->SECONDS_PER_DAY:I -Ljava/time/LocalTime;->SECONDS_PER_HOUR:I -Ljava/time/LocalTime;->SECONDS_PER_MINUTE:I -Ljava/time/LocalTime;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/Month;->ENUMS:[Ljava/time/Month; -Ljava/time/MonthDay;-><init>(II)V -Ljava/time/MonthDay;->day:I -Ljava/time/MonthDay;->month:I -Ljava/time/MonthDay;->PARSER:Ljava/time/format/DateTimeFormatter; -Ljava/time/MonthDay;->readExternal(Ljava/io/DataInput;)Ljava/time/MonthDay; -Ljava/time/MonthDay;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/OffsetDateTime;->compareInstant(Ljava/time/OffsetDateTime;Ljava/time/OffsetDateTime;)I -Ljava/time/OffsetDateTime;->dateTime:Ljava/time/LocalDateTime; -Ljava/time/OffsetDateTime;->offset:Ljava/time/ZoneOffset; -Ljava/time/OffsetDateTime;->readExternal(Ljava/io/ObjectInput;)Ljava/time/OffsetDateTime; -Ljava/time/OffsetDateTime;->with(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;)Ljava/time/OffsetDateTime; -Ljava/time/OffsetDateTime;->writeExternal(Ljava/io/ObjectOutput;)V -Ljava/time/OffsetTime;-><init>(Ljava/time/LocalTime;Ljava/time/ZoneOffset;)V -Ljava/time/OffsetTime;->offset:Ljava/time/ZoneOffset; -Ljava/time/OffsetTime;->readExternal(Ljava/io/ObjectInput;)Ljava/time/OffsetTime; -Ljava/time/OffsetTime;->time:Ljava/time/LocalTime; -Ljava/time/OffsetTime;->toEpochNano()J -Ljava/time/OffsetTime;->with(Ljava/time/LocalTime;Ljava/time/ZoneOffset;)Ljava/time/OffsetTime; -Ljava/time/OffsetTime;->writeExternal(Ljava/io/ObjectOutput;)V -Ljava/time/Period;-><init>(III)V -Ljava/time/Period;->create(III)Ljava/time/Period; -Ljava/time/Period;->days:I -Ljava/time/Period;->months:I -Ljava/time/Period;->parseNumber(Ljava/lang/CharSequence;Ljava/lang/String;I)I -Ljava/time/Period;->PATTERN:Ljava/util/regex/Pattern; -Ljava/time/Period;->readExternal(Ljava/io/DataInput;)Ljava/time/Period; -Ljava/time/Period;->SUPPORTED_UNITS:Ljava/util/List; -Ljava/time/Period;->validateChrono(Ljava/time/temporal/TemporalAccessor;)V -Ljava/time/Period;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/Period;->years:I -Ljava/time/temporal/ChronoField;->baseUnit:Ljava/time/temporal/TemporalUnit; -Ljava/time/temporal/ChronoField;->displayNameKey:Ljava/lang/String; -Ljava/time/temporal/ChronoField;->getIcuFieldNumber(Ljava/time/temporal/ChronoField;)I -Ljava/time/temporal/ChronoField;->name:Ljava/lang/String; -Ljava/time/temporal/ChronoField;->range:Ljava/time/temporal/ValueRange; -Ljava/time/temporal/ChronoField;->rangeUnit:Ljava/time/temporal/TemporalUnit; -Ljava/time/temporal/ChronoUnit;->duration:Ljava/time/Duration; -Ljava/time/temporal/ChronoUnit;->name:Ljava/lang/String; -Ljava/time/temporal/IsoFields$Field;->DAY_OF_QUARTER:Ljava/time/temporal/IsoFields$Field; -Ljava/time/temporal/IsoFields$Field;->ensureIso(Ljava/time/temporal/TemporalAccessor;)V -Ljava/time/temporal/IsoFields$Field;->getWeek(Ljava/time/LocalDate;)I -Ljava/time/temporal/IsoFields$Field;->getWeekBasedYear(Ljava/time/LocalDate;)I -Ljava/time/temporal/IsoFields$Field;->getWeekRange(I)I -Ljava/time/temporal/IsoFields$Field;->getWeekRange(Ljava/time/LocalDate;)Ljava/time/temporal/ValueRange; -Ljava/time/temporal/IsoFields$Field;->isIso(Ljava/time/temporal/TemporalAccessor;)Z -Ljava/time/temporal/IsoFields$Field;->QUARTER_DAYS:[I -Ljava/time/temporal/IsoFields$Field;->QUARTER_OF_YEAR:Ljava/time/temporal/IsoFields$Field; -Ljava/time/temporal/IsoFields$Field;->valueOf(Ljava/lang/String;)Ljava/time/temporal/IsoFields$Field; -Ljava/time/temporal/IsoFields$Field;->values()[Ljava/time/temporal/IsoFields$Field; -Ljava/time/temporal/IsoFields$Field;->WEEK_BASED_YEAR:Ljava/time/temporal/IsoFields$Field; -Ljava/time/temporal/IsoFields$Field;->WEEK_OF_WEEK_BASED_YEAR:Ljava/time/temporal/IsoFields$Field; -Ljava/time/temporal/IsoFields$Unit;->duration:Ljava/time/Duration; -Ljava/time/temporal/IsoFields$Unit;->name:Ljava/lang/String; -Ljava/time/temporal/IsoFields$Unit;->QUARTER_YEARS:Ljava/time/temporal/IsoFields$Unit; -Ljava/time/temporal/IsoFields$Unit;->valueOf(Ljava/lang/String;)Ljava/time/temporal/IsoFields$Unit; -Ljava/time/temporal/IsoFields$Unit;->values()[Ljava/time/temporal/IsoFields$Unit; -Ljava/time/temporal/IsoFields$Unit;->WEEK_BASED_YEARS:Ljava/time/temporal/IsoFields$Unit; -Ljava/time/temporal/IsoFields;-><init>()V -Ljava/time/temporal/JulianFields$Field;->baseUnit:Ljava/time/temporal/TemporalUnit; -Ljava/time/temporal/JulianFields$Field;->JULIAN_DAY:Ljava/time/temporal/JulianFields$Field; -Ljava/time/temporal/JulianFields$Field;->MODIFIED_JULIAN_DAY:Ljava/time/temporal/JulianFields$Field; -Ljava/time/temporal/JulianFields$Field;->name:Ljava/lang/String; -Ljava/time/temporal/JulianFields$Field;->offset:J -Ljava/time/temporal/JulianFields$Field;->range:Ljava/time/temporal/ValueRange; -Ljava/time/temporal/JulianFields$Field;->rangeUnit:Ljava/time/temporal/TemporalUnit; -Ljava/time/temporal/JulianFields$Field;->RATA_DIE:Ljava/time/temporal/JulianFields$Field; -Ljava/time/temporal/JulianFields$Field;->valueOf(Ljava/lang/String;)Ljava/time/temporal/JulianFields$Field; -Ljava/time/temporal/JulianFields$Field;->values()[Ljava/time/temporal/JulianFields$Field; -Ljava/time/temporal/JulianFields;-><init>()V -Ljava/time/temporal/JulianFields;->JULIAN_DAY_OFFSET:J -Ljava/time/temporal/TemporalAdjusters;-><init>()V -Ljava/time/temporal/TemporalQueries;-><init>()V -Ljava/time/temporal/TemporalQueries;->CHRONO:Ljava/time/temporal/TemporalQuery; -Ljava/time/temporal/TemporalQueries;->LOCAL_DATE:Ljava/time/temporal/TemporalQuery; -Ljava/time/temporal/TemporalQueries;->LOCAL_TIME:Ljava/time/temporal/TemporalQuery; -Ljava/time/temporal/TemporalQueries;->OFFSET:Ljava/time/temporal/TemporalQuery; -Ljava/time/temporal/TemporalQueries;->PRECISION:Ljava/time/temporal/TemporalQuery; -Ljava/time/temporal/TemporalQueries;->ZONE:Ljava/time/temporal/TemporalQuery; -Ljava/time/temporal/TemporalQueries;->ZONE_ID:Ljava/time/temporal/TemporalQuery; -Ljava/time/temporal/ValueRange;-><init>(JJJJ)V -Ljava/time/temporal/ValueRange;->genInvalidFieldMessage(Ljava/time/temporal/TemporalField;J)Ljava/lang/String; -Ljava/time/temporal/ValueRange;->maxLargest:J -Ljava/time/temporal/ValueRange;->maxSmallest:J -Ljava/time/temporal/ValueRange;->minLargest:J -Ljava/time/temporal/ValueRange;->minSmallest:J -Ljava/time/temporal/WeekFields$ComputedDayOfField;-><init>(Ljava/lang/String;Ljava/time/temporal/WeekFields;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/ValueRange;)V -Ljava/time/temporal/WeekFields$ComputedDayOfField;->baseUnit:Ljava/time/temporal/TemporalUnit; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->computeWeek(II)I -Ljava/time/temporal/WeekFields$ComputedDayOfField;->DAY_OF_WEEK_RANGE:Ljava/time/temporal/ValueRange; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedDayOfWeek(I)I -Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedDayOfWeek(Ljava/time/temporal/TemporalAccessor;)I -Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedWeekBasedYear(Ljava/time/temporal/TemporalAccessor;)I -Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedWeekOfMonth(Ljava/time/temporal/TemporalAccessor;)J -Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedWeekOfWeekBasedYear(Ljava/time/temporal/TemporalAccessor;)I -Ljava/time/temporal/WeekFields$ComputedDayOfField;->localizedWeekOfYear(Ljava/time/temporal/TemporalAccessor;)J -Ljava/time/temporal/WeekFields$ComputedDayOfField;->name:Ljava/lang/String; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofDayOfWeekField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekBasedYear(Ljava/time/chrono/Chronology;III)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekBasedYearField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekOfMonthField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekOfWeekBasedYearField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->ofWeekOfYearField(Ljava/time/temporal/WeekFields;)Ljava/time/temporal/WeekFields$ComputedDayOfField; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->range:Ljava/time/temporal/ValueRange; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->rangeByWeek(Ljava/time/temporal/TemporalAccessor;Ljava/time/temporal/TemporalField;)Ljava/time/temporal/ValueRange; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->rangeUnit:Ljava/time/temporal/TemporalUnit; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->rangeWeekOfWeekBasedYear(Ljava/time/temporal/TemporalAccessor;)Ljava/time/temporal/ValueRange; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->resolveWBY(Ljava/util/Map;Ljava/time/chrono/Chronology;ILjava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->resolveWoM(Ljava/util/Map;Ljava/time/chrono/Chronology;IJJILjava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->resolveWoY(Ljava/util/Map;Ljava/time/chrono/Chronology;IJILjava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->startOfWeekOffset(II)I -Ljava/time/temporal/WeekFields$ComputedDayOfField;->weekDef:Ljava/time/temporal/WeekFields; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->WEEK_OF_MONTH_RANGE:Ljava/time/temporal/ValueRange; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->WEEK_OF_WEEK_BASED_YEAR_RANGE:Ljava/time/temporal/ValueRange; -Ljava/time/temporal/WeekFields$ComputedDayOfField;->WEEK_OF_YEAR_RANGE:Ljava/time/temporal/ValueRange; -Ljava/time/temporal/WeekFields;-><init>(Ljava/time/DayOfWeek;I)V -Ljava/time/temporal/WeekFields;->CACHE:Ljava/util/concurrent/ConcurrentMap; -Ljava/time/temporal/WeekFields;->dayOfWeek:Ljava/time/temporal/TemporalField; -Ljava/time/temporal/WeekFields;->firstDayOfWeek:Ljava/time/DayOfWeek; -Ljava/time/temporal/WeekFields;->minimalDays:I -Ljava/time/temporal/WeekFields;->weekBasedYear:Ljava/time/temporal/TemporalField; -Ljava/time/temporal/WeekFields;->weekOfMonth:Ljava/time/temporal/TemporalField; -Ljava/time/temporal/WeekFields;->weekOfWeekBasedYear:Ljava/time/temporal/TemporalField; -Ljava/time/temporal/WeekFields;->weekOfYear:Ljava/time/temporal/TemporalField; -Ljava/time/Year;-><init>(I)V -Ljava/time/Year;->PARSER:Ljava/time/format/DateTimeFormatter; -Ljava/time/Year;->readExternal(Ljava/io/DataInput;)Ljava/time/Year; -Ljava/time/Year;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/Year;->year:I -Ljava/time/YearMonth;-><init>(II)V -Ljava/time/YearMonth;->getProlepticMonth()J -Ljava/time/YearMonth;->month:I -Ljava/time/YearMonth;->PARSER:Ljava/time/format/DateTimeFormatter; -Ljava/time/YearMonth;->readExternal(Ljava/io/DataInput;)Ljava/time/YearMonth; -Ljava/time/YearMonth;->with(II)Ljava/time/YearMonth; -Ljava/time/YearMonth;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/YearMonth;->year:I -Ljava/time/zone/ZoneOffsetTransition;-><init>(JLjava/time/ZoneOffset;Ljava/time/ZoneOffset;)V -Ljava/time/zone/ZoneOffsetTransition;-><init>(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)V -Ljava/time/zone/ZoneOffsetTransition;->getDurationSeconds()I -Ljava/time/zone/ZoneOffsetTransition;->getValidOffsets()Ljava/util/List; -Ljava/time/zone/ZoneOffsetTransition;->offsetAfter:Ljava/time/ZoneOffset; -Ljava/time/zone/ZoneOffsetTransition;->offsetBefore:Ljava/time/ZoneOffset; -Ljava/time/zone/ZoneOffsetTransition;->readExternal(Ljava/io/DataInput;)Ljava/time/zone/ZoneOffsetTransition; -Ljava/time/zone/ZoneOffsetTransition;->transition:Ljava/time/LocalDateTime; -Ljava/time/zone/ZoneOffsetTransition;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/zone/ZoneOffsetTransitionRule;-><init>(Ljava/time/Month;ILjava/time/DayOfWeek;Ljava/time/LocalTime;ZLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)V -Ljava/time/zone/ZoneOffsetTransitionRule;->dom:B -Ljava/time/zone/ZoneOffsetTransitionRule;->dow:Ljava/time/DayOfWeek; -Ljava/time/zone/ZoneOffsetTransitionRule;->month:Ljava/time/Month; -Ljava/time/zone/ZoneOffsetTransitionRule;->offsetAfter:Ljava/time/ZoneOffset; -Ljava/time/zone/ZoneOffsetTransitionRule;->offsetBefore:Ljava/time/ZoneOffset; -Ljava/time/zone/ZoneOffsetTransitionRule;->readExternal(Ljava/io/DataInput;)Ljava/time/zone/ZoneOffsetTransitionRule; -Ljava/time/zone/ZoneOffsetTransitionRule;->standardOffset:Ljava/time/ZoneOffset; -Ljava/time/zone/ZoneOffsetTransitionRule;->time:Ljava/time/LocalTime; -Ljava/time/zone/ZoneOffsetTransitionRule;->timeDefinition:Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition; -Ljava/time/zone/ZoneOffsetTransitionRule;->timeEndOfDay:Z -Ljava/time/zone/ZoneOffsetTransitionRule;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/zone/ZoneRules;-><init>(Ljava/time/ZoneOffset;)V -Ljava/time/zone/ZoneRules;-><init>(Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V -Ljava/time/zone/ZoneRules;-><init>([J[Ljava/time/ZoneOffset;[J[Ljava/time/ZoneOffset;[Ljava/time/zone/ZoneOffsetTransitionRule;)V -Ljava/time/zone/ZoneRules;->EMPTY_LASTRULES:[Ljava/time/zone/ZoneOffsetTransitionRule; -Ljava/time/zone/ZoneRules;->EMPTY_LDT_ARRAY:[Ljava/time/LocalDateTime; -Ljava/time/zone/ZoneRules;->EMPTY_LONG_ARRAY:[J -Ljava/time/zone/ZoneRules;->findOffsetInfo(Ljava/time/LocalDateTime;Ljava/time/zone/ZoneOffsetTransition;)Ljava/lang/Object; -Ljava/time/zone/ZoneRules;->findTransitionArray(I)[Ljava/time/zone/ZoneOffsetTransition; -Ljava/time/zone/ZoneRules;->findYear(JLjava/time/ZoneOffset;)I -Ljava/time/zone/ZoneRules;->getOffsetInfo(Ljava/time/LocalDateTime;)Ljava/lang/Object; -Ljava/time/zone/ZoneRules;->lastRules:[Ljava/time/zone/ZoneOffsetTransitionRule; -Ljava/time/zone/ZoneRules;->lastRulesCache:Ljava/util/concurrent/ConcurrentMap; -Ljava/time/zone/ZoneRules;->LAST_CACHED_YEAR:I -Ljava/time/zone/ZoneRules;->readExternal(Ljava/io/DataInput;)Ljava/time/zone/ZoneRules; -Ljava/time/zone/ZoneRules;->savingsInstantTransitions:[J -Ljava/time/zone/ZoneRules;->savingsLocalTransitions:[Ljava/time/LocalDateTime; -Ljava/time/zone/ZoneRules;->standardOffsets:[Ljava/time/ZoneOffset; -Ljava/time/zone/ZoneRules;->standardTransitions:[J -Ljava/time/zone/ZoneRules;->wallOffsets:[Ljava/time/ZoneOffset; -Ljava/time/zone/ZoneRules;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/ZonedDateTime;-><init>(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneId;)V -Ljava/time/ZonedDateTime;->create(JILjava/time/ZoneId;)Ljava/time/ZonedDateTime; -Ljava/time/ZonedDateTime;->dateTime:Ljava/time/LocalDateTime; -Ljava/time/ZonedDateTime;->offset:Ljava/time/ZoneOffset; -Ljava/time/ZonedDateTime;->ofLenient(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime; -Ljava/time/ZonedDateTime;->readExternal(Ljava/io/ObjectInput;)Ljava/time/ZonedDateTime; -Ljava/time/ZonedDateTime;->resolveInstant(Ljava/time/LocalDateTime;)Ljava/time/ZonedDateTime; -Ljava/time/ZonedDateTime;->resolveLocal(Ljava/time/LocalDateTime;)Ljava/time/ZonedDateTime; -Ljava/time/ZonedDateTime;->resolveOffset(Ljava/time/ZoneOffset;)Ljava/time/ZonedDateTime; -Ljava/time/ZonedDateTime;->writeExternal(Ljava/io/DataOutput;)V -Ljava/time/ZonedDateTime;->zone:Ljava/time/ZoneId; -Ljava/time/ZoneId;-><init>()V -Ljava/time/ZoneId;->ofWithPrefix(Ljava/lang/String;IZ)Ljava/time/ZoneId; -Ljava/time/ZoneId;->toTemporal()Ljava/time/temporal/TemporalAccessor; -Ljava/time/ZoneId;->write(Ljava/io/DataOutput;)V -Ljava/time/ZoneOffset;-><init>(I)V -Ljava/time/ZoneOffset;->buildId(I)Ljava/lang/String; -Ljava/time/ZoneOffset;->id:Ljava/lang/String; -Ljava/time/ZoneOffset;->ID_CACHE:Ljava/util/concurrent/ConcurrentMap; -Ljava/time/ZoneOffset;->MAX_SECONDS:I -Ljava/time/ZoneOffset;->parseNumber(Ljava/lang/CharSequence;IZ)I -Ljava/time/ZoneOffset;->readExternal(Ljava/io/DataInput;)Ljava/time/ZoneOffset; -Ljava/time/ZoneOffset;->SECONDS_CACHE:Ljava/util/concurrent/ConcurrentMap; -Ljava/time/ZoneOffset;->totalSeconds(III)I -Ljava/time/ZoneOffset;->totalSeconds:I -Ljava/time/ZoneOffset;->validate(III)V -Ljava/time/ZoneOffset;->write(Ljava/io/DataOutput;)V -Ljava/time/ZoneOffset;->writeExternal(Ljava/io/DataOutput;)V -Ljava/util/AbstractCollection;->finishToArray([Ljava/lang/Object;Ljava/util/Iterator;)[Ljava/lang/Object; -Ljava/util/AbstractCollection;->hugeCapacity(I)I -Ljava/util/AbstractCollection;->MAX_ARRAY_SIZE:I -Ljava/util/AbstractList$Itr;->checkForComodification()V -Ljava/util/AbstractList$Itr;->cursor:I -Ljava/util/AbstractList$Itr;->expectedModCount:I -Ljava/util/AbstractList$Itr;->lastRet:I -Ljava/util/AbstractList;->outOfBoundsMsg(I)Ljava/lang/String; -Ljava/util/AbstractList;->rangeCheckForAdd(I)V -Ljava/util/AbstractMap$SimpleEntry;->key:Ljava/lang/Object; -Ljava/util/AbstractMap$SimpleEntry;->value:Ljava/lang/Object; -Ljava/util/AbstractMap$SimpleImmutableEntry;->key:Ljava/lang/Object; -Ljava/util/AbstractMap$SimpleImmutableEntry;->value:Ljava/lang/Object; -Ljava/util/AbstractMap;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/AbstractMap;->keySet:Ljava/util/Set; -Ljava/util/AbstractMap;->values:Ljava/util/Collection; -Ljava/util/ArrayDeque$DeqIterator;->cursor:I -Ljava/util/ArrayDeque$DeqIterator;->fence:I -Ljava/util/ArrayDeque$DeqIterator;->lastRet:I -Ljava/util/ArrayDeque$DeqSpliterator;-><init>(Ljava/util/ArrayDeque;II)V -Ljava/util/ArrayDeque$DeqSpliterator;->deq:Ljava/util/ArrayDeque; -Ljava/util/ArrayDeque$DeqSpliterator;->fence:I -Ljava/util/ArrayDeque$DeqSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/ArrayDeque$DeqSpliterator;->getFence()I -Ljava/util/ArrayDeque$DeqSpliterator;->index:I -Ljava/util/ArrayDeque$DeqSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/ArrayDeque$DescendingIterator;->cursor:I -Ljava/util/ArrayDeque$DescendingIterator;->fence:I -Ljava/util/ArrayDeque$DescendingIterator;->lastRet:I -Ljava/util/ArrayDeque;->allocateElements(I)V -Ljava/util/ArrayDeque;->checkInvariants()V -Ljava/util/ArrayDeque;->delete(I)Z -Ljava/util/ArrayDeque;->doubleCapacity()V -Ljava/util/ArrayDeque;->MIN_INITIAL_CAPACITY:I -Ljava/util/ArrayList$ArrayListSpliterator;-><init>(Ljava/util/ArrayList;III)V -Ljava/util/ArrayList$ArrayListSpliterator;->expectedModCount:I -Ljava/util/ArrayList$ArrayListSpliterator;->fence:I -Ljava/util/ArrayList$ArrayListSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/ArrayList$ArrayListSpliterator;->getFence()I -Ljava/util/ArrayList$ArrayListSpliterator;->index:I -Ljava/util/ArrayList$ArrayListSpliterator;->list:Ljava/util/ArrayList; -Ljava/util/ArrayList$ArrayListSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/ArrayList$Itr;->cursor:I -Ljava/util/ArrayList$Itr;->expectedModCount:I -Ljava/util/ArrayList$Itr;->lastRet:I -Ljava/util/ArrayList$Itr;->limit:I -Ljava/util/ArrayList$SubList;->outOfBoundsMsg(I)Ljava/lang/String; -Ljava/util/ArrayList;->batchRemove(Ljava/util/Collection;Z)Z -Ljava/util/ArrayList;->DEFAULTCAPACITY_EMPTY_ELEMENTDATA:[Ljava/lang/Object; -Ljava/util/ArrayList;->DEFAULT_CAPACITY:I -Ljava/util/ArrayList;->EMPTY_ELEMENTDATA:[Ljava/lang/Object; -Ljava/util/ArrayList;->ensureCapacityInternal(I)V -Ljava/util/ArrayList;->ensureExplicitCapacity(I)V -Ljava/util/ArrayList;->fastRemove(I)V -Ljava/util/ArrayList;->grow(I)V -Ljava/util/ArrayList;->hugeCapacity(I)I -Ljava/util/ArrayList;->MAX_ARRAY_SIZE:I -Ljava/util/ArrayList;->outOfBoundsMsg(I)Ljava/lang/String; -Ljava/util/ArrayList;->subListRangeCheck(III)V -Ljava/util/Arrays$ArrayList;-><init>([Ljava/lang/Object;)V -Ljava/util/Arrays$ArrayList;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/Arrays$NaturalOrder;-><init>()V -Ljava/util/Arrays$NaturalOrder;->compare(Ljava/lang/Object;Ljava/lang/Object;)I -Ljava/util/Arrays$NaturalOrder;->INSTANCE:Ljava/util/Arrays$NaturalOrder; -Ljava/util/Arrays;-><init>()V -Ljava/util/Arrays;->binarySearch0([BIIB)I -Ljava/util/Arrays;->binarySearch0([CIIC)I -Ljava/util/Arrays;->binarySearch0([DIID)I -Ljava/util/Arrays;->binarySearch0([FIIF)I -Ljava/util/Arrays;->binarySearch0([IIII)I -Ljava/util/Arrays;->binarySearch0([JIIJ)I -Ljava/util/Arrays;->binarySearch0([Ljava/lang/Object;IILjava/lang/Object;)I -Ljava/util/Arrays;->binarySearch0([Ljava/lang/Object;IILjava/lang/Object;Ljava/util/Comparator;)I -Ljava/util/Arrays;->binarySearch0([SIIS)I -Ljava/util/Arrays;->deepEquals0(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/Arrays;->INSERTIONSORT_THRESHOLD:I -Ljava/util/Arrays;->mergeSort([Ljava/lang/Object;[Ljava/lang/Object;III)V -Ljava/util/Arrays;->MIN_ARRAY_SORT_GRAN:I -Ljava/util/Arrays;->rangeCheck(III)V -Ljava/util/Arrays;->swap([Ljava/lang/Object;II)V -Ljava/util/Base64$DecInputStream;-><init>(Ljava/io/InputStream;[IZ)V -Ljava/util/Base64$DecInputStream;->base64:[I -Ljava/util/Base64$DecInputStream;->bits:I -Ljava/util/Base64$DecInputStream;->closed:Z -Ljava/util/Base64$DecInputStream;->eof:Z -Ljava/util/Base64$DecInputStream;->is:Ljava/io/InputStream; -Ljava/util/Base64$DecInputStream;->isMIME:Z -Ljava/util/Base64$DecInputStream;->nextin:I -Ljava/util/Base64$DecInputStream;->nextout:I -Ljava/util/Base64$DecInputStream;->sbBuf:[B -Ljava/util/Base64$Decoder;-><init>(ZZ)V -Ljava/util/Base64$Decoder;->decode0([BII[B)I -Ljava/util/Base64$Decoder;->fromBase64:[I -Ljava/util/Base64$Decoder;->fromBase64URL:[I -Ljava/util/Base64$Decoder;->isMIME:Z -Ljava/util/Base64$Decoder;->isURL:Z -Ljava/util/Base64$Decoder;->outLength([BII)I -Ljava/util/Base64$Decoder;->RFC2045:Ljava/util/Base64$Decoder; -Ljava/util/Base64$Decoder;->RFC4648:Ljava/util/Base64$Decoder; -Ljava/util/Base64$Decoder;->RFC4648_URLSAFE:Ljava/util/Base64$Decoder; -Ljava/util/Base64$Encoder;-><init>(Z[BIZ)V -Ljava/util/Base64$Encoder;->CRLF:[B -Ljava/util/Base64$Encoder;->doPadding:Z -Ljava/util/Base64$Encoder;->encode0([BII[B)I -Ljava/util/Base64$Encoder;->isURL:Z -Ljava/util/Base64$Encoder;->linemax:I -Ljava/util/Base64$Encoder;->MIMELINEMAX:I -Ljava/util/Base64$Encoder;->newline:[B -Ljava/util/Base64$Encoder;->outLength(I)I -Ljava/util/Base64$Encoder;->RFC2045:Ljava/util/Base64$Encoder; -Ljava/util/Base64$Encoder;->RFC4648:Ljava/util/Base64$Encoder; -Ljava/util/Base64$Encoder;->RFC4648_URLSAFE:Ljava/util/Base64$Encoder; -Ljava/util/Base64$Encoder;->toBase64:[C -Ljava/util/Base64$Encoder;->toBase64URL:[C -Ljava/util/Base64$EncOutputStream;-><init>(Ljava/io/OutputStream;[C[BIZ)V -Ljava/util/Base64$EncOutputStream;->b0:I -Ljava/util/Base64$EncOutputStream;->b1:I -Ljava/util/Base64$EncOutputStream;->b2:I -Ljava/util/Base64$EncOutputStream;->base64:[C -Ljava/util/Base64$EncOutputStream;->checkNewline()V -Ljava/util/Base64$EncOutputStream;->closed:Z -Ljava/util/Base64$EncOutputStream;->doPadding:Z -Ljava/util/Base64$EncOutputStream;->leftover:I -Ljava/util/Base64$EncOutputStream;->linemax:I -Ljava/util/Base64$EncOutputStream;->linepos:I -Ljava/util/Base64$EncOutputStream;->newline:[B -Ljava/util/Base64;-><init>()V -Ljava/util/BitSet;-><init>([J)V -Ljava/util/BitSet;->ADDRESS_BITS_PER_WORD:I -Ljava/util/BitSet;->BITS_PER_WORD:I -Ljava/util/BitSet;->BIT_INDEX_MASK:I -Ljava/util/BitSet;->checkInvariants()V -Ljava/util/BitSet;->checkRange(II)V -Ljava/util/BitSet;->ensureCapacity(I)V -Ljava/util/BitSet;->expandTo(I)V -Ljava/util/BitSet;->initWords(I)V -Ljava/util/BitSet;->recalculateWordsInUse()V -Ljava/util/BitSet;->sizeIsSticky:Z -Ljava/util/BitSet;->trimToSize()V -Ljava/util/BitSet;->wordIndex(I)I -Ljava/util/BitSet;->words:[J -Ljava/util/BitSet;->wordsInUse:I -Ljava/util/BitSet;->WORD_MASK:J -Ljava/util/Calendar$AvailableCalendarTypes;-><init>()V -Ljava/util/Calendar$AvailableCalendarTypes;->SET:Ljava/util/Set; -Ljava/util/Calendar$Builder;->allocateFields()V -Ljava/util/Calendar$Builder;->fields:[I -Ljava/util/Calendar$Builder;->firstDayOfWeek:I -Ljava/util/Calendar$Builder;->instant:J -Ljava/util/Calendar$Builder;->internalSet(II)V -Ljava/util/Calendar$Builder;->isInstantSet()Z -Ljava/util/Calendar$Builder;->isSet(I)Z -Ljava/util/Calendar$Builder;->isValidWeekParameter(I)Z -Ljava/util/Calendar$Builder;->lenient:Z -Ljava/util/Calendar$Builder;->locale:Ljava/util/Locale; -Ljava/util/Calendar$Builder;->maxFieldIndex:I -Ljava/util/Calendar$Builder;->minimalDaysInFirstWeek:I -Ljava/util/Calendar$Builder;->nextStamp:I -Ljava/util/Calendar$Builder;->NFIELDS:I -Ljava/util/Calendar$Builder;->type:Ljava/lang/String; -Ljava/util/Calendar$Builder;->WEEK_YEAR:I -Ljava/util/Calendar$Builder;->zone:Ljava/util/TimeZone; -Ljava/util/Calendar$CalendarAccessControlContext;-><init>()V -Ljava/util/Calendar$CalendarAccessControlContext;->INSTANCE:Ljava/security/AccessControlContext; -Ljava/util/Calendar;->adjustStamp()V -Ljava/util/Calendar;->aggregateStamp(II)I -Ljava/util/Calendar;->ALL_FIELDS:I -Ljava/util/Calendar;->AM_PM_MASK:I -Ljava/util/Calendar;->appendValue(Ljava/lang/StringBuilder;Ljava/lang/String;ZJ)V -Ljava/util/Calendar;->areAllFieldsSet:Z -Ljava/util/Calendar;->cachedLocaleData:Ljava/util/concurrent/ConcurrentMap; -Ljava/util/Calendar;->checkDisplayNameParams(IIIILjava/util/Locale;I)Z -Ljava/util/Calendar;->compareTo(J)I -Ljava/util/Calendar;->COMPUTED:I -Ljava/util/Calendar;->createCalendar(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar; -Ljava/util/Calendar;->currentSerialVersion:I -Ljava/util/Calendar;->DATE_MASK:I -Ljava/util/Calendar;->DAY_OF_MONTH_MASK:I -Ljava/util/Calendar;->DAY_OF_WEEK_IN_MONTH_MASK:I -Ljava/util/Calendar;->DAY_OF_WEEK_MASK:I -Ljava/util/Calendar;->DAY_OF_YEAR_MASK:I -Ljava/util/Calendar;->DST_OFFSET_MASK:I -Ljava/util/Calendar;->ERA_MASK:I -Ljava/util/Calendar;->FIELD_NAME:[Ljava/lang/String; -Ljava/util/Calendar;->firstDayOfWeek:I -Ljava/util/Calendar;->getBaseStyle(I)I -Ljava/util/Calendar;->getDisplayNamesImpl(IILjava/util/Locale;)Ljava/util/Map; -Ljava/util/Calendar;->getFieldName(I)Ljava/lang/String; -Ljava/util/Calendar;->getFieldStrings(IILjava/text/DateFormatSymbols;)[Ljava/lang/String; -Ljava/util/Calendar;->getJapaneseImperialInstance(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar; -Ljava/util/Calendar;->getMillisOf(Ljava/util/Calendar;)J -Ljava/util/Calendar;->getSetStateFields()I -Ljava/util/Calendar;->getZone()Ljava/util/TimeZone; -Ljava/util/Calendar;->HOUR_MASK:I -Ljava/util/Calendar;->HOUR_OF_DAY_MASK:I -Ljava/util/Calendar;->internalSet(II)V -Ljava/util/Calendar;->invalidateWeekFields()V -Ljava/util/Calendar;->isExternallySet(I)Z -Ljava/util/Calendar;->isFieldSet(II)Z -Ljava/util/Calendar;->isFullyNormalized()Z -Ljava/util/Calendar;->isNarrowFormatStyle(I)Z -Ljava/util/Calendar;->isNarrowStyle(I)Z -Ljava/util/Calendar;->isPartiallyNormalized()Z -Ljava/util/Calendar;->isStandaloneStyle(I)Z -Ljava/util/Calendar;->lenient:Z -Ljava/util/Calendar;->MILLISECOND_MASK:I -Ljava/util/Calendar;->minimalDaysInFirstWeek:I -Ljava/util/Calendar;->MINIMUM_USER_STAMP:I -Ljava/util/Calendar;->MINUTE_MASK:I -Ljava/util/Calendar;->MONTH_MASK:I -Ljava/util/Calendar;->nextStamp:I -Ljava/util/Calendar;->SECOND_MASK:I -Ljava/util/Calendar;->selectFields()I -Ljava/util/Calendar;->serialVersionOnStream:I -Ljava/util/Calendar;->setFieldsComputed(I)V -Ljava/util/Calendar;->setFieldsNormalized(I)V -Ljava/util/Calendar;->setUnnormalized()V -Ljava/util/Calendar;->setWeekCountData(Ljava/util/Locale;)V -Ljava/util/Calendar;->setZoneShared(Z)V -Ljava/util/Calendar;->sharedZone:Z -Ljava/util/Calendar;->stamp:[I -Ljava/util/Calendar;->STANDALONE_MASK:I -Ljava/util/Calendar;->toStandaloneStyle(I)I -Ljava/util/Calendar;->UNSET:I -Ljava/util/Calendar;->updateTime()V -Ljava/util/Calendar;->WEEK_OF_MONTH_MASK:I -Ljava/util/Calendar;->WEEK_OF_YEAR_MASK:I -Ljava/util/Calendar;->YEAR_MASK:I -Ljava/util/Calendar;->ZONE_OFFSET_MASK:I -Ljava/util/Collections$AsLIFOQueue;-><init>(Ljava/util/Deque;)V -Ljava/util/Collections$AsLIFOQueue;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/Collections$AsLIFOQueue;->q:Ljava/util/Deque; -Ljava/util/Collections$CheckedCollection;-><init>(Ljava/util/Collection;Ljava/lang/Class;)V -Ljava/util/Collections$CheckedCollection;->badElementMsg(Ljava/lang/Object;)Ljava/lang/String; -Ljava/util/Collections$CheckedCollection;->c:Ljava/util/Collection; -Ljava/util/Collections$CheckedCollection;->checkedCopyOf(Ljava/util/Collection;)Ljava/util/Collection; -Ljava/util/Collections$CheckedCollection;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/Collections$CheckedCollection;->type:Ljava/lang/Class; -Ljava/util/Collections$CheckedCollection;->typeCheck(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/Collections$CheckedCollection;->zeroLengthElementArray()[Ljava/lang/Object; -Ljava/util/Collections$CheckedCollection;->zeroLengthElementArray:[Ljava/lang/Object; -Ljava/util/Collections$CheckedList;-><init>(Ljava/util/List;Ljava/lang/Class;)V -Ljava/util/Collections$CheckedList;->list:Ljava/util/List; -Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;-><init>(Ljava/util/Map$Entry;Ljava/lang/Class;)V -Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;->badValueMsg(Ljava/lang/Object;)Ljava/lang/String; -Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;->e:Ljava/util/Map$Entry; -Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry;->valueType:Ljava/lang/Class; -Ljava/util/Collections$CheckedMap$CheckedEntrySet;-><init>(Ljava/util/Set;Ljava/lang/Class;)V -Ljava/util/Collections$CheckedMap$CheckedEntrySet;->add(Ljava/util/Map$Entry;)Z -Ljava/util/Collections$CheckedMap$CheckedEntrySet;->addAll(Ljava/util/Collection;)Z -Ljava/util/Collections$CheckedMap$CheckedEntrySet;->batchRemove(Ljava/util/Collection;Z)Z -Ljava/util/Collections$CheckedMap$CheckedEntrySet;->checkedEntry(Ljava/util/Map$Entry;Ljava/lang/Class;)Ljava/util/Collections$CheckedMap$CheckedEntrySet$CheckedEntry; -Ljava/util/Collections$CheckedMap$CheckedEntrySet;->s:Ljava/util/Set; -Ljava/util/Collections$CheckedMap$CheckedEntrySet;->valueType:Ljava/lang/Class; -Ljava/util/Collections$CheckedMap;-><init>(Ljava/util/Map;Ljava/lang/Class;Ljava/lang/Class;)V -Ljava/util/Collections$CheckedMap;->badKeyMsg(Ljava/lang/Object;)Ljava/lang/String; -Ljava/util/Collections$CheckedMap;->badValueMsg(Ljava/lang/Object;)Ljava/lang/String; -Ljava/util/Collections$CheckedMap;->entrySet:Ljava/util/Set; -Ljava/util/Collections$CheckedMap;->keyType:Ljava/lang/Class; -Ljava/util/Collections$CheckedMap;->m:Ljava/util/Map; -Ljava/util/Collections$CheckedMap;->typeCheck(Ljava/lang/Object;Ljava/lang/Object;)V -Ljava/util/Collections$CheckedMap;->typeCheck(Ljava/util/function/BiFunction;)Ljava/util/function/BiFunction; -Ljava/util/Collections$CheckedMap;->valueType:Ljava/lang/Class; -Ljava/util/Collections$CheckedNavigableMap;-><init>(Ljava/util/NavigableMap;Ljava/lang/Class;Ljava/lang/Class;)V -Ljava/util/Collections$CheckedNavigableMap;->nm:Ljava/util/NavigableMap; -Ljava/util/Collections$CheckedNavigableSet;-><init>(Ljava/util/NavigableSet;Ljava/lang/Class;)V -Ljava/util/Collections$CheckedNavigableSet;->ns:Ljava/util/NavigableSet; -Ljava/util/Collections$CheckedQueue;-><init>(Ljava/util/Queue;Ljava/lang/Class;)V -Ljava/util/Collections$CheckedQueue;->queue:Ljava/util/Queue; -Ljava/util/Collections$CheckedRandomAccessList;-><init>(Ljava/util/List;Ljava/lang/Class;)V -Ljava/util/Collections$CheckedSet;-><init>(Ljava/util/Set;Ljava/lang/Class;)V -Ljava/util/Collections$CheckedSortedMap;-><init>(Ljava/util/SortedMap;Ljava/lang/Class;Ljava/lang/Class;)V -Ljava/util/Collections$CheckedSortedMap;->sm:Ljava/util/SortedMap; -Ljava/util/Collections$CheckedSortedSet;-><init>(Ljava/util/SortedSet;Ljava/lang/Class;)V -Ljava/util/Collections$CheckedSortedSet;->ss:Ljava/util/SortedSet; -Ljava/util/Collections$CopiesList;-><init>(ILjava/lang/Object;)V -Ljava/util/Collections$CopiesList;->element:Ljava/lang/Object; -Ljava/util/Collections$CopiesList;->n:I -Ljava/util/Collections$EmptyEnumeration;-><init>()V -Ljava/util/Collections$EmptyEnumeration;->EMPTY_ENUMERATION:Ljava/util/Collections$EmptyEnumeration; -Ljava/util/Collections$EmptyIterator;-><init>()V -Ljava/util/Collections$EmptyIterator;->EMPTY_ITERATOR:Ljava/util/Collections$EmptyIterator; -Ljava/util/Collections$EmptyList;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/Collections$EmptyListIterator;-><init>()V -Ljava/util/Collections$EmptyListIterator;->EMPTY_ITERATOR:Ljava/util/Collections$EmptyListIterator; -Ljava/util/Collections$EmptySet;-><init>()V -Ljava/util/Collections$EmptySet;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/Collections$ReverseComparator2;-><init>(Ljava/util/Comparator;)V -Ljava/util/Collections$ReverseComparator2;->cmp:Ljava/util/Comparator; -Ljava/util/Collections$ReverseComparator;-><init>()V -Ljava/util/Collections$ReverseComparator;->compare(Ljava/lang/Comparable;Ljava/lang/Comparable;)I -Ljava/util/Collections$ReverseComparator;->REVERSE_ORDER:Ljava/util/Collections$ReverseComparator; -Ljava/util/Collections$SetFromMap;-><init>(Ljava/util/Map;)V -Ljava/util/Collections$SetFromMap;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/Collections$SetFromMap;->m:Ljava/util/Map; -Ljava/util/Collections$SetFromMap;->s:Ljava/util/Set; -Ljava/util/Collections$SingletonList;-><init>(Ljava/lang/Object;)V -Ljava/util/Collections$SingletonList;->element:Ljava/lang/Object; -Ljava/util/Collections$SingletonList;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/Collections$SingletonMap;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V -Ljava/util/Collections$SingletonMap;->entrySet:Ljava/util/Set; -Ljava/util/Collections$SingletonMap;->k:Ljava/lang/Object; -Ljava/util/Collections$SingletonMap;->keySet:Ljava/util/Set; -Ljava/util/Collections$SingletonMap;->v:Ljava/lang/Object; -Ljava/util/Collections$SingletonMap;->values:Ljava/util/Collection; -Ljava/util/Collections$SingletonSet;-><init>(Ljava/lang/Object;)V -Ljava/util/Collections$SingletonSet;->element:Ljava/lang/Object; -Ljava/util/Collections$SingletonSet;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/Collections$SynchronizedCollection;-><init>(Ljava/util/Collection;)V -Ljava/util/Collections$SynchronizedCollection;-><init>(Ljava/util/Collection;Ljava/lang/Object;)V -Ljava/util/Collections$SynchronizedCollection;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/Collections$SynchronizedCollection;->mutex:Ljava/lang/Object; -Ljava/util/Collections$SynchronizedList;-><init>(Ljava/util/List;)V -Ljava/util/Collections$SynchronizedList;-><init>(Ljava/util/List;Ljava/lang/Object;)V -Ljava/util/Collections$SynchronizedMap;-><init>(Ljava/util/Map;)V -Ljava/util/Collections$SynchronizedMap;-><init>(Ljava/util/Map;Ljava/lang/Object;)V -Ljava/util/Collections$SynchronizedMap;->entrySet:Ljava/util/Set; -Ljava/util/Collections$SynchronizedMap;->keySet:Ljava/util/Set; -Ljava/util/Collections$SynchronizedMap;->mutex:Ljava/lang/Object; -Ljava/util/Collections$SynchronizedMap;->values:Ljava/util/Collection; -Ljava/util/Collections$SynchronizedNavigableMap;-><init>(Ljava/util/NavigableMap;)V -Ljava/util/Collections$SynchronizedNavigableMap;-><init>(Ljava/util/NavigableMap;Ljava/lang/Object;)V -Ljava/util/Collections$SynchronizedNavigableMap;->nm:Ljava/util/NavigableMap; -Ljava/util/Collections$SynchronizedNavigableSet;-><init>(Ljava/util/NavigableSet;)V -Ljava/util/Collections$SynchronizedNavigableSet;-><init>(Ljava/util/NavigableSet;Ljava/lang/Object;)V -Ljava/util/Collections$SynchronizedNavigableSet;->ns:Ljava/util/NavigableSet; -Ljava/util/Collections$SynchronizedRandomAccessList;-><init>(Ljava/util/List;)V -Ljava/util/Collections$SynchronizedRandomAccessList;-><init>(Ljava/util/List;Ljava/lang/Object;)V -Ljava/util/Collections$SynchronizedSet;-><init>(Ljava/util/Set;)V -Ljava/util/Collections$SynchronizedSet;-><init>(Ljava/util/Set;Ljava/lang/Object;)V -Ljava/util/Collections$SynchronizedSortedMap;-><init>(Ljava/util/SortedMap;)V -Ljava/util/Collections$SynchronizedSortedMap;-><init>(Ljava/util/SortedMap;Ljava/lang/Object;)V -Ljava/util/Collections$SynchronizedSortedMap;->sm:Ljava/util/SortedMap; -Ljava/util/Collections$SynchronizedSortedSet;-><init>(Ljava/util/SortedSet;)V -Ljava/util/Collections$SynchronizedSortedSet;-><init>(Ljava/util/SortedSet;Ljava/lang/Object;)V -Ljava/util/Collections$SynchronizedSortedSet;->ss:Ljava/util/SortedSet; -Ljava/util/Collections$UnmodifiableCollection;-><init>(Ljava/util/Collection;)V -Ljava/util/Collections$UnmodifiableCollection;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/Collections$UnmodifiableList;-><init>(Ljava/util/List;)V -Ljava/util/Collections$UnmodifiableList;->list:Ljava/util/List; -Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;-><init>(Ljava/util/Map$Entry;)V -Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;->e:Ljava/util/Map$Entry; -Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;-><init>(Ljava/util/Spliterator;)V -Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;->s:Ljava/util/Spliterator; -Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntrySetSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;-><init>(Ljava/util/Set;)V -Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;->entryConsumer(Ljava/util/function/Consumer;)Ljava/util/function/Consumer; -Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/Collections$UnmodifiableMap;-><init>(Ljava/util/Map;)V -Ljava/util/Collections$UnmodifiableMap;->entrySet:Ljava/util/Set; -Ljava/util/Collections$UnmodifiableMap;->keySet:Ljava/util/Set; -Ljava/util/Collections$UnmodifiableMap;->values:Ljava/util/Collection; -Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap;-><init>()V -Ljava/util/Collections$UnmodifiableNavigableMap;-><init>(Ljava/util/NavigableMap;)V -Ljava/util/Collections$UnmodifiableNavigableMap;->EMPTY_NAVIGABLE_MAP:Ljava/util/Collections$UnmodifiableNavigableMap$EmptyNavigableMap; -Ljava/util/Collections$UnmodifiableNavigableMap;->nm:Ljava/util/NavigableMap; -Ljava/util/Collections$UnmodifiableNavigableSet$EmptyNavigableSet;-><init>()V -Ljava/util/Collections$UnmodifiableNavigableSet;-><init>(Ljava/util/NavigableSet;)V -Ljava/util/Collections$UnmodifiableNavigableSet;->EMPTY_NAVIGABLE_SET:Ljava/util/NavigableSet; -Ljava/util/Collections$UnmodifiableNavigableSet;->ns:Ljava/util/NavigableSet; -Ljava/util/Collections$UnmodifiableRandomAccessList;-><init>(Ljava/util/List;)V -Ljava/util/Collections$UnmodifiableSet;-><init>(Ljava/util/Set;)V -Ljava/util/Collections$UnmodifiableSortedMap;-><init>(Ljava/util/SortedMap;)V -Ljava/util/Collections$UnmodifiableSortedMap;->sm:Ljava/util/SortedMap; -Ljava/util/Collections$UnmodifiableSortedSet;-><init>(Ljava/util/SortedSet;)V -Ljava/util/Collections$UnmodifiableSortedSet;->ss:Ljava/util/SortedSet; -Ljava/util/Collections;-><init>()V -Ljava/util/Collections;->BINARYSEARCH_THRESHOLD:I -Ljava/util/Collections;->COPY_THRESHOLD:I -Ljava/util/Collections;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/Collections;->FILL_THRESHOLD:I -Ljava/util/Collections;->get(Ljava/util/ListIterator;I)Ljava/lang/Object; -Ljava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;)I -Ljava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I -Ljava/util/Collections;->INDEXOFSUBLIST_THRESHOLD:I -Ljava/util/Collections;->iteratorBinarySearch(Ljava/util/List;Ljava/lang/Object;)I -Ljava/util/Collections;->iteratorBinarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I -Ljava/util/Collections;->r:Ljava/util/Random; -Ljava/util/Collections;->REPLACEALL_THRESHOLD:I -Ljava/util/Collections;->REVERSE_THRESHOLD:I -Ljava/util/Collections;->rotate1(Ljava/util/List;I)V -Ljava/util/Collections;->rotate2(Ljava/util/List;I)V -Ljava/util/Collections;->ROTATE_THRESHOLD:I -Ljava/util/Collections;->SHUFFLE_THRESHOLD:I -Ljava/util/Collections;->singletonIterator(Ljava/lang/Object;)Ljava/util/Iterator; -Ljava/util/Collections;->singletonSpliterator(Ljava/lang/Object;)Ljava/util/Spliterator; -Ljava/util/Collections;->swap([Ljava/lang/Object;II)V -Ljava/util/Collections;->synchronizedCollection(Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/Collection; -Ljava/util/Collections;->synchronizedList(Ljava/util/List;Ljava/lang/Object;)Ljava/util/List; -Ljava/util/Collections;->synchronizedSet(Ljava/util/Set;Ljava/lang/Object;)Ljava/util/Set; -Ljava/util/Collections;->zeroLengthArray(Ljava/lang/Class;)[Ljava/lang/Object; -Ljava/util/concurrent/AbstractExecutorService;->cancelAll(Ljava/util/ArrayList;)V -Ljava/util/concurrent/AbstractExecutorService;->cancelAll(Ljava/util/ArrayList;I)V -Ljava/util/concurrent/AbstractExecutorService;->doInvokeAny(Ljava/util/Collection;ZJ)Ljava/lang/Object; -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->cursor:I -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->detach()V -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->DETACHED:I -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->distance(III)I -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->incCursor(I)I -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->incorporateDequeues()V -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->invalidated(IIJI)Z -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->isDetached()Z -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->lastItem:Ljava/lang/Object; -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->lastRet:I -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->nextIndex:I -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->nextItem:Ljava/lang/Object; -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->NONE:I -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->noNext()V -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->prevCycles:I -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->prevTakeIndex:I -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->REMOVED:I -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->removedAt(I)Z -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->shutdown()V -Ljava/util/concurrent/ArrayBlockingQueue$Itr;->takeIndexWrapped()Z -Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node;->next:Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node; -Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->cycles:I -Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->doSomeSweeping(Z)V -Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->elementDequeued()V -Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->head:Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node; -Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->LONG_SWEEP_PROBES:I -Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->queueIsEmpty()V -Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->register(Ljava/util/concurrent/ArrayBlockingQueue$Itr;)V -Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->removedAt(I)V -Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->SHORT_SWEEP_PROBES:I -Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->sweeper:Ljava/util/concurrent/ArrayBlockingQueue$Itrs$Node; -Ljava/util/concurrent/ArrayBlockingQueue$Itrs;->takeIndexWrapped()V -Ljava/util/concurrent/ArrayBlockingQueue;->count:I -Ljava/util/concurrent/ArrayBlockingQueue;->dec(I)I -Ljava/util/concurrent/ArrayBlockingQueue;->dequeue()Ljava/lang/Object; -Ljava/util/concurrent/ArrayBlockingQueue;->enqueue(Ljava/lang/Object;)V -Ljava/util/concurrent/ArrayBlockingQueue;->itemAt(I)Ljava/lang/Object; -Ljava/util/concurrent/ArrayBlockingQueue;->items:[Ljava/lang/Object; -Ljava/util/concurrent/ArrayBlockingQueue;->itrs:Ljava/util/concurrent/ArrayBlockingQueue$Itrs; -Ljava/util/concurrent/ArrayBlockingQueue;->lock:Ljava/util/concurrent/locks/ReentrantLock; -Ljava/util/concurrent/ArrayBlockingQueue;->notEmpty:Ljava/util/concurrent/locks/Condition; -Ljava/util/concurrent/ArrayBlockingQueue;->notFull:Ljava/util/concurrent/locks/Condition; -Ljava/util/concurrent/ArrayBlockingQueue;->putIndex:I -Ljava/util/concurrent/ArrayBlockingQueue;->removeAt(I)V -Ljava/util/concurrent/ArrayBlockingQueue;->takeIndex:I -Ljava/util/concurrent/atomic/AtomicBoolean;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/AtomicBoolean;->value:I -Ljava/util/concurrent/atomic/AtomicBoolean;->VALUE:J -Ljava/util/concurrent/atomic/AtomicInteger;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/AtomicInteger;->VALUE:J -Ljava/util/concurrent/atomic/AtomicIntegerArray;->ABASE:I -Ljava/util/concurrent/atomic/AtomicIntegerArray;->array:[I -Ljava/util/concurrent/atomic/AtomicIntegerArray;->ASHIFT:I -Ljava/util/concurrent/atomic/AtomicIntegerArray;->byteOffset(I)J -Ljava/util/concurrent/atomic/AtomicIntegerArray;->checkedByteOffset(I)J -Ljava/util/concurrent/atomic/AtomicIntegerArray;->compareAndSetRaw(JII)Z -Ljava/util/concurrent/atomic/AtomicIntegerArray;->getRaw(J)I -Ljava/util/concurrent/atomic/AtomicIntegerArray;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V -Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V -Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->cclass:Ljava/lang/Class; -Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->offset:J -Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->tclass:Ljava/lang/Class; -Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->throwAccessCheckException(Ljava/lang/Object;)V -Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/AtomicLong;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/AtomicLong;->VALUE:J -Ljava/util/concurrent/atomic/AtomicLong;->value:J -Ljava/util/concurrent/atomic/AtomicLong;->VMSupportsCS8()Z -Ljava/util/concurrent/atomic/AtomicLong;->VM_SUPPORTS_LONG_CAS:Z -Ljava/util/concurrent/atomic/AtomicLongArray;->ABASE:I -Ljava/util/concurrent/atomic/AtomicLongArray;->array:[J -Ljava/util/concurrent/atomic/AtomicLongArray;->ASHIFT:I -Ljava/util/concurrent/atomic/AtomicLongArray;->byteOffset(I)J -Ljava/util/concurrent/atomic/AtomicLongArray;->checkedByteOffset(I)J -Ljava/util/concurrent/atomic/AtomicLongArray;->compareAndSetRaw(JJJ)Z -Ljava/util/concurrent/atomic/AtomicLongArray;->getRaw(J)J -Ljava/util/concurrent/atomic/AtomicLongArray;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->accessCheck(Ljava/lang/Object;)V -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->cclass:Ljava/lang/Class; -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->offset:J -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->tclass:Ljava/lang/Class; -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->throwAccessCheckException(Ljava/lang/Object;)V -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->accessCheck(Ljava/lang/Object;)V -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->accessCheckException(Ljava/lang/Object;)Ljava/lang/RuntimeException; -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->cclass:Ljava/lang/Class; -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->offset:J -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->tclass:Ljava/lang/Class; -Ljava/util/concurrent/atomic/AtomicLongFieldUpdater$LockedUpdater;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;-><init>(Ljava/lang/Object;Z)V -Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;->mark:Z -Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;->of(Ljava/lang/Object;Z)Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair; -Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;->reference:Ljava/lang/Object; -Ljava/util/concurrent/atomic/AtomicMarkableReference;->casPair(Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair;)Z -Ljava/util/concurrent/atomic/AtomicMarkableReference;->PAIR:J -Ljava/util/concurrent/atomic/AtomicMarkableReference;->pair:Ljava/util/concurrent/atomic/AtomicMarkableReference$Pair; -Ljava/util/concurrent/atomic/AtomicMarkableReference;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/AtomicReference;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/AtomicReference;->VALUE:J -Ljava/util/concurrent/atomic/AtomicReference;->value:Ljava/lang/Object; -Ljava/util/concurrent/atomic/AtomicReferenceArray;->ABASE:I -Ljava/util/concurrent/atomic/AtomicReferenceArray;->ARRAY:J -Ljava/util/concurrent/atomic/AtomicReferenceArray;->array:[Ljava/lang/Object; -Ljava/util/concurrent/atomic/AtomicReferenceArray;->ASHIFT:I -Ljava/util/concurrent/atomic/AtomicReferenceArray;->byteOffset(I)J -Ljava/util/concurrent/atomic/AtomicReferenceArray;->checkedByteOffset(I)J -Ljava/util/concurrent/atomic/AtomicReferenceArray;->compareAndSetRaw(JLjava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/concurrent/atomic/AtomicReferenceArray;->getRaw(J)Ljava/lang/Object; -Ljava/util/concurrent/atomic/AtomicReferenceArray;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;-><init>(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V -Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V -Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->cclass:Ljava/lang/Class; -Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->offset:J -Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->tclass:Ljava/lang/Class; -Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->throwAccessCheckException(Ljava/lang/Object;)V -Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->throwCCE()V -Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->valueCheck(Ljava/lang/Object;)V -Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->vclass:Ljava/lang/Class; -Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;-><init>(Ljava/lang/Object;I)V -Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;->of(Ljava/lang/Object;I)Ljava/util/concurrent/atomic/AtomicStampedReference$Pair; -Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;->reference:Ljava/lang/Object; -Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;->stamp:I -Ljava/util/concurrent/atomic/AtomicStampedReference;->casPair(Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;Ljava/util/concurrent/atomic/AtomicStampedReference$Pair;)Z -Ljava/util/concurrent/atomic/AtomicStampedReference;->PAIR:J -Ljava/util/concurrent/atomic/AtomicStampedReference;->pair:Ljava/util/concurrent/atomic/AtomicStampedReference$Pair; -Ljava/util/concurrent/atomic/AtomicStampedReference;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;-><init>(DLjava/util/function/DoubleBinaryOperator;J)V -Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->function:Ljava/util/function/DoubleBinaryOperator; -Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->identity:J -Ljava/util/concurrent/atomic/DoubleAccumulator$SerializationProxy;->value:D -Ljava/util/concurrent/atomic/DoubleAccumulator;->function:Ljava/util/function/DoubleBinaryOperator; -Ljava/util/concurrent/atomic/DoubleAccumulator;->identity:J -Ljava/util/concurrent/atomic/DoubleAdder$SerializationProxy;-><init>(Ljava/util/concurrent/atomic/DoubleAdder;)V -Ljava/util/concurrent/atomic/DoubleAdder$SerializationProxy;->value:D -Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;-><init>(JLjava/util/function/LongBinaryOperator;J)V -Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->function:Ljava/util/function/LongBinaryOperator; -Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->identity:J -Ljava/util/concurrent/atomic/LongAccumulator$SerializationProxy;->value:J -Ljava/util/concurrent/atomic/LongAccumulator;->function:Ljava/util/function/LongBinaryOperator; -Ljava/util/concurrent/atomic/LongAccumulator;->identity:J -Ljava/util/concurrent/atomic/LongAdder$SerializationProxy;-><init>(Ljava/util/concurrent/atomic/LongAdder;)V -Ljava/util/concurrent/atomic/LongAdder$SerializationProxy;->value:J -Ljava/util/concurrent/atomic/Striped64$Cell;-><init>(J)V -Ljava/util/concurrent/atomic/Striped64$Cell;->cas(JJ)Z -Ljava/util/concurrent/atomic/Striped64$Cell;->reset()V -Ljava/util/concurrent/atomic/Striped64$Cell;->reset(J)V -Ljava/util/concurrent/atomic/Striped64$Cell;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/atomic/Striped64$Cell;->VALUE:J -Ljava/util/concurrent/atomic/Striped64$Cell;->value:J -Ljava/util/concurrent/atomic/Striped64;-><init>()V -Ljava/util/concurrent/atomic/Striped64;->advanceProbe(I)I -Ljava/util/concurrent/atomic/Striped64;->apply(Ljava/util/function/DoubleBinaryOperator;JD)J -Ljava/util/concurrent/atomic/Striped64;->BASE:J -Ljava/util/concurrent/atomic/Striped64;->base:J -Ljava/util/concurrent/atomic/Striped64;->casBase(JJ)Z -Ljava/util/concurrent/atomic/Striped64;->casCellsBusy()Z -Ljava/util/concurrent/atomic/Striped64;->cells:[Ljava/util/concurrent/atomic/Striped64$Cell; -Ljava/util/concurrent/atomic/Striped64;->cellsBusy:I -Ljava/util/concurrent/atomic/Striped64;->CELLSBUSY:J -Ljava/util/concurrent/atomic/Striped64;->doubleAccumulate(DLjava/util/function/DoubleBinaryOperator;Z)V -Ljava/util/concurrent/atomic/Striped64;->getProbe()I -Ljava/util/concurrent/atomic/Striped64;->longAccumulate(JLjava/util/function/LongBinaryOperator;Z)V -Ljava/util/concurrent/atomic/Striped64;->NCPU:I -Ljava/util/concurrent/atomic/Striped64;->PROBE:J -Ljava/util/concurrent/atomic/Striped64;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/CompletableFuture$AltResult;-><init>(Ljava/lang/Throwable;)V -Ljava/util/concurrent/CompletableFuture$AltResult;->ex:Ljava/lang/Throwable; -Ljava/util/concurrent/CompletableFuture$AsyncRun;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V -Ljava/util/concurrent/CompletableFuture$AsyncRun;->dep:Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$AsyncRun;->fn:Ljava/lang/Runnable; -Ljava/util/concurrent/CompletableFuture$AsyncRun;->setRawResult(Ljava/lang/Void;)V -Ljava/util/concurrent/CompletableFuture$AsyncSupply;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Supplier;)V -Ljava/util/concurrent/CompletableFuture$AsyncSupply;->dep:Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$AsyncSupply;->fn:Ljava/util/function/Supplier; -Ljava/util/concurrent/CompletableFuture$AsyncSupply;->setRawResult(Ljava/lang/Void;)V -Ljava/util/concurrent/CompletableFuture$BiAccept;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;)V -Ljava/util/concurrent/CompletableFuture$BiAccept;->fn:Ljava/util/function/BiConsumer; -Ljava/util/concurrent/CompletableFuture$BiAccept;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$BiApply;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;)V -Ljava/util/concurrent/CompletableFuture$BiApply;->fn:Ljava/util/function/BiFunction; -Ljava/util/concurrent/CompletableFuture$BiApply;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$BiCompletion;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V -Ljava/util/concurrent/CompletableFuture$BiCompletion;->snd:Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$BiRelay;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V -Ljava/util/concurrent/CompletableFuture$BiRelay;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$BiRun;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V -Ljava/util/concurrent/CompletableFuture$BiRun;->fn:Ljava/lang/Runnable; -Ljava/util/concurrent/CompletableFuture$BiRun;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$Canceller;-><init>(Ljava/util/concurrent/Future;)V -Ljava/util/concurrent/CompletableFuture$Canceller;->accept(Ljava/lang/Object;Ljava/lang/Throwable;)V -Ljava/util/concurrent/CompletableFuture$Canceller;->f:Ljava/util/concurrent/Future; -Ljava/util/concurrent/CompletableFuture$CoCompletion;-><init>(Ljava/util/concurrent/CompletableFuture$BiCompletion;)V -Ljava/util/concurrent/CompletableFuture$CoCompletion;->base:Ljava/util/concurrent/CompletableFuture$BiCompletion; -Ljava/util/concurrent/CompletableFuture$CoCompletion;->isLive()Z -Ljava/util/concurrent/CompletableFuture$CoCompletion;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$Completion;-><init>()V -Ljava/util/concurrent/CompletableFuture$Completion;->isLive()Z -Ljava/util/concurrent/CompletableFuture$Completion;->next:Ljava/util/concurrent/CompletableFuture$Completion; -Ljava/util/concurrent/CompletableFuture$Completion;->setRawResult(Ljava/lang/Void;)V -Ljava/util/concurrent/CompletableFuture$Completion;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$DelayedCompleter;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/lang/Object;)V -Ljava/util/concurrent/CompletableFuture$DelayedCompleter;->f:Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$DelayedCompleter;->u:Ljava/lang/Object; -Ljava/util/concurrent/CompletableFuture$DelayedExecutor;-><init>(JLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/Executor;)V -Ljava/util/concurrent/CompletableFuture$DelayedExecutor;->delay:J -Ljava/util/concurrent/CompletableFuture$DelayedExecutor;->executor:Ljava/util/concurrent/Executor; -Ljava/util/concurrent/CompletableFuture$DelayedExecutor;->unit:Ljava/util/concurrent/TimeUnit; -Ljava/util/concurrent/CompletableFuture$Delayer$DaemonThreadFactory;-><init>()V -Ljava/util/concurrent/CompletableFuture$Delayer;-><init>()V -Ljava/util/concurrent/CompletableFuture$Delayer;->delay(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture; -Ljava/util/concurrent/CompletableFuture$Delayer;->delayer:Ljava/util/concurrent/ScheduledThreadPoolExecutor; -Ljava/util/concurrent/CompletableFuture$MinimalStage;-><init>()V -Ljava/util/concurrent/CompletableFuture$MinimalStage;-><init>(Ljava/lang/Object;)V -Ljava/util/concurrent/CompletableFuture$MinimalStage;->completeAsync(Ljava/util/function/Supplier;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$MinimalStage;->completeAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$MinimalStage;->completeOnTimeout(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$MinimalStage;->newIncompleteFuture()Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$MinimalStage;->orTimeout(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$OrAccept;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;)V -Ljava/util/concurrent/CompletableFuture$OrAccept;->fn:Ljava/util/function/Consumer; -Ljava/util/concurrent/CompletableFuture$OrAccept;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$OrApply;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V -Ljava/util/concurrent/CompletableFuture$OrApply;->fn:Ljava/util/function/Function; -Ljava/util/concurrent/CompletableFuture$OrApply;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$OrRelay;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V -Ljava/util/concurrent/CompletableFuture$OrRelay;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$OrRun;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V -Ljava/util/concurrent/CompletableFuture$OrRun;->fn:Ljava/lang/Runnable; -Ljava/util/concurrent/CompletableFuture$OrRun;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$Signaller;-><init>(ZJJ)V -Ljava/util/concurrent/CompletableFuture$Signaller;->deadline:J -Ljava/util/concurrent/CompletableFuture$Signaller;->interrupted:Z -Ljava/util/concurrent/CompletableFuture$Signaller;->interruptible:Z -Ljava/util/concurrent/CompletableFuture$Signaller;->isLive()Z -Ljava/util/concurrent/CompletableFuture$Signaller;->nanos:J -Ljava/util/concurrent/CompletableFuture$Signaller;->thread:Ljava/lang/Thread; -Ljava/util/concurrent/CompletableFuture$Signaller;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$TaskSubmitter;-><init>(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)V -Ljava/util/concurrent/CompletableFuture$TaskSubmitter;->action:Ljava/lang/Runnable; -Ljava/util/concurrent/CompletableFuture$TaskSubmitter;->executor:Ljava/util/concurrent/Executor; -Ljava/util/concurrent/CompletableFuture$ThreadPerTaskExecutor;-><init>()V -Ljava/util/concurrent/CompletableFuture$Timeout;-><init>(Ljava/util/concurrent/CompletableFuture;)V -Ljava/util/concurrent/CompletableFuture$Timeout;->f:Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$UniAccept;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;)V -Ljava/util/concurrent/CompletableFuture$UniAccept;->fn:Ljava/util/function/Consumer; -Ljava/util/concurrent/CompletableFuture$UniAccept;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$UniApply;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V -Ljava/util/concurrent/CompletableFuture$UniApply;->fn:Ljava/util/function/Function; -Ljava/util/concurrent/CompletableFuture$UniApply;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$UniCompletion;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V -Ljava/util/concurrent/CompletableFuture$UniCompletion;->claim()Z -Ljava/util/concurrent/CompletableFuture$UniCompletion;->dep:Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$UniCompletion;->executor:Ljava/util/concurrent/Executor; -Ljava/util/concurrent/CompletableFuture$UniCompletion;->isLive()Z -Ljava/util/concurrent/CompletableFuture$UniCompletion;->src:Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$UniCompose;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V -Ljava/util/concurrent/CompletableFuture$UniCompose;->fn:Ljava/util/function/Function; -Ljava/util/concurrent/CompletableFuture$UniCompose;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$UniExceptionally;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;)V -Ljava/util/concurrent/CompletableFuture$UniExceptionally;->fn:Ljava/util/function/Function; -Ljava/util/concurrent/CompletableFuture$UniExceptionally;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$UniHandle;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;)V -Ljava/util/concurrent/CompletableFuture$UniHandle;->fn:Ljava/util/function/BiFunction; -Ljava/util/concurrent/CompletableFuture$UniHandle;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$UniRelay;-><init>(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V -Ljava/util/concurrent/CompletableFuture$UniRelay;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$UniRun;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;)V -Ljava/util/concurrent/CompletableFuture$UniRun;->fn:Ljava/lang/Runnable; -Ljava/util/concurrent/CompletableFuture$UniRun;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture$UniWhenComplete;-><init>(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;)V -Ljava/util/concurrent/CompletableFuture$UniWhenComplete;->fn:Ljava/util/function/BiConsumer; -Ljava/util/concurrent/CompletableFuture$UniWhenComplete;->tryFire(I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;-><init>(Ljava/lang/Object;)V -Ljava/util/concurrent/CompletableFuture;->andTree([Ljava/util/concurrent/CompletableFuture;II)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->ASYNC:I -Ljava/util/concurrent/CompletableFuture;->asyncRunStage(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->asyncSupplyStage(Ljava/util/concurrent/Executor;Ljava/util/function/Supplier;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->ASYNC_POOL:Ljava/util/concurrent/Executor; -Ljava/util/concurrent/CompletableFuture;->biAccept(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture$BiAccept;)Z -Ljava/util/concurrent/CompletableFuture;->biAcceptStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->biApply(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;Ljava/util/concurrent/CompletableFuture$BiApply;)Z -Ljava/util/concurrent/CompletableFuture;->biApplyStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->bipush(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture$BiCompletion;)V -Ljava/util/concurrent/CompletableFuture;->biRelay(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)Z -Ljava/util/concurrent/CompletableFuture;->biRun(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;Ljava/util/concurrent/CompletableFuture$BiRun;)Z -Ljava/util/concurrent/CompletableFuture;->biRunStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->casStack(Ljava/util/concurrent/CompletableFuture$Completion;Ljava/util/concurrent/CompletableFuture$Completion;)Z -Ljava/util/concurrent/CompletableFuture;->cleanStack()V -Ljava/util/concurrent/CompletableFuture;->completeAsync(Ljava/util/function/Supplier;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->completeAsync(Ljava/util/function/Supplier;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->completedStage(Ljava/lang/Object;)Ljava/util/concurrent/CompletionStage; -Ljava/util/concurrent/CompletableFuture;->completeNull()Z -Ljava/util/concurrent/CompletableFuture;->completeOnTimeout(Ljava/lang/Object;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->completeRelay(Ljava/lang/Object;)Z -Ljava/util/concurrent/CompletableFuture;->completeThrowable(Ljava/lang/Throwable;)Z -Ljava/util/concurrent/CompletableFuture;->completeThrowable(Ljava/lang/Throwable;Ljava/lang/Object;)Z -Ljava/util/concurrent/CompletableFuture;->completeValue(Ljava/lang/Object;)Z -Ljava/util/concurrent/CompletableFuture;->copy()Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->defaultExecutor()Ljava/util/concurrent/Executor; -Ljava/util/concurrent/CompletableFuture;->delayedExecutor(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/Executor; -Ljava/util/concurrent/CompletableFuture;->delayedExecutor(JLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/Executor; -Ljava/util/concurrent/CompletableFuture;->encodeOutcome(Ljava/lang/Object;Ljava/lang/Throwable;)Ljava/lang/Object; -Ljava/util/concurrent/CompletableFuture;->encodeRelay(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/concurrent/CompletableFuture;->encodeThrowable(Ljava/lang/Throwable;)Ljava/util/concurrent/CompletableFuture$AltResult; -Ljava/util/concurrent/CompletableFuture;->encodeThrowable(Ljava/lang/Throwable;Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/concurrent/CompletableFuture;->encodeValue(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/concurrent/CompletableFuture;->failedFuture(Ljava/lang/Throwable;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->failedStage(Ljava/lang/Throwable;)Ljava/util/concurrent/CompletionStage; -Ljava/util/concurrent/CompletableFuture;->internalComplete(Ljava/lang/Object;)Z -Ljava/util/concurrent/CompletableFuture;->lazySetNext(Ljava/util/concurrent/CompletableFuture$Completion;Ljava/util/concurrent/CompletableFuture$Completion;)V -Ljava/util/concurrent/CompletableFuture;->minimalCompletionStage()Ljava/util/concurrent/CompletionStage; -Ljava/util/concurrent/CompletableFuture;->NESTED:I -Ljava/util/concurrent/CompletableFuture;->newIncompleteFuture()Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->NEXT:J -Ljava/util/concurrent/CompletableFuture;->NIL:Ljava/util/concurrent/CompletableFuture$AltResult; -Ljava/util/concurrent/CompletableFuture;->orAccept(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;Ljava/util/concurrent/CompletableFuture$OrAccept;)Z -Ljava/util/concurrent/CompletableFuture;->orAcceptStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->orApply(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;Ljava/util/concurrent/CompletableFuture$OrApply;)Z -Ljava/util/concurrent/CompletableFuture;->orApplyStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->orpush(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture$BiCompletion;)V -Ljava/util/concurrent/CompletableFuture;->orRelay(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)Z -Ljava/util/concurrent/CompletableFuture;->orRun(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;Ljava/util/concurrent/CompletableFuture$OrRun;)Z -Ljava/util/concurrent/CompletableFuture;->orRunStage(Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletionStage;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->orTimeout(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->orTree([Ljava/util/concurrent/CompletableFuture;II)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->postComplete()V -Ljava/util/concurrent/CompletableFuture;->postFire(Ljava/util/concurrent/CompletableFuture;I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->postFire(Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;I)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->push(Ljava/util/concurrent/CompletableFuture$UniCompletion;)V -Ljava/util/concurrent/CompletableFuture;->pushStack(Ljava/util/concurrent/CompletableFuture$Completion;)V -Ljava/util/concurrent/CompletableFuture;->reportGet(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/concurrent/CompletableFuture;->reportJoin(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/concurrent/CompletableFuture;->RESULT:J -Ljava/util/concurrent/CompletableFuture;->result:Ljava/lang/Object; -Ljava/util/concurrent/CompletableFuture;->screenExecutor(Ljava/util/concurrent/Executor;)Ljava/util/concurrent/Executor; -Ljava/util/concurrent/CompletableFuture;->SPINS:I -Ljava/util/concurrent/CompletableFuture;->STACK:J -Ljava/util/concurrent/CompletableFuture;->stack:Ljava/util/concurrent/CompletableFuture$Completion; -Ljava/util/concurrent/CompletableFuture;->SYNC:I -Ljava/util/concurrent/CompletableFuture;->timedGet(J)Ljava/lang/Object; -Ljava/util/concurrent/CompletableFuture;->tryPushStack(Ljava/util/concurrent/CompletableFuture$Completion;)Z -Ljava/util/concurrent/CompletableFuture;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/CompletableFuture;->uniAccept(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Consumer;Ljava/util/concurrent/CompletableFuture$UniAccept;)Z -Ljava/util/concurrent/CompletableFuture;->uniAcceptStage(Ljava/util/concurrent/Executor;Ljava/util/function/Consumer;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->uniApply(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;Ljava/util/concurrent/CompletableFuture$UniApply;)Z -Ljava/util/concurrent/CompletableFuture;->uniApplyStage(Ljava/util/concurrent/Executor;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->uniAsMinimalStage()Ljava/util/concurrent/CompletableFuture$MinimalStage; -Ljava/util/concurrent/CompletableFuture;->uniCompose(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;Ljava/util/concurrent/CompletableFuture$UniCompose;)Z -Ljava/util/concurrent/CompletableFuture;->uniComposeStage(Ljava/util/concurrent/Executor;Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->uniCopyStage()Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->uniExceptionally(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/Function;Ljava/util/concurrent/CompletableFuture$UniExceptionally;)Z -Ljava/util/concurrent/CompletableFuture;->uniExceptionallyStage(Ljava/util/function/Function;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->uniHandle(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiFunction;Ljava/util/concurrent/CompletableFuture$UniHandle;)Z -Ljava/util/concurrent/CompletableFuture;->uniHandleStage(Ljava/util/concurrent/Executor;Ljava/util/function/BiFunction;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->uniRelay(Ljava/util/concurrent/CompletableFuture;)Z -Ljava/util/concurrent/CompletableFuture;->uniRun(Ljava/util/concurrent/CompletableFuture;Ljava/lang/Runnable;Ljava/util/concurrent/CompletableFuture$UniRun;)Z -Ljava/util/concurrent/CompletableFuture;->uniRunStage(Ljava/util/concurrent/Executor;Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->uniWhenComplete(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture$UniWhenComplete;)Z -Ljava/util/concurrent/CompletableFuture;->uniWhenCompleteStage(Ljava/util/concurrent/Executor;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture; -Ljava/util/concurrent/CompletableFuture;->USE_COMMON_POOL:Z -Ljava/util/concurrent/CompletableFuture;->waitingGet(Z)Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V -Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->hasNext()Z -Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->lastReturned:Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->map:Ljava/util/concurrent/ConcurrentHashMap; -Ljava/util/concurrent/ConcurrentHashMap$BaseIterator;->remove()V -Ljava/util/concurrent/ConcurrentHashMap$BulkTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;)V -Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->advance()Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->baseIndex:I -Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->baseLimit:I -Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->baseSize:I -Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->batch:I -Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->index:I -Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->next:Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->pushState([Ljava/util/concurrent/ConcurrentHashMap$Node;II)V -Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->recoverState(I)V -Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->spare:Ljava/util/concurrent/ConcurrentHashMap$TableStack; -Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->stack:Ljava/util/concurrent/ConcurrentHashMap$TableStack; -Ljava/util/concurrent/ConcurrentHashMap$BulkTask;->tab:[Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$CollectionView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V -Ljava/util/concurrent/ConcurrentHashMap$CollectionView;->getMap()Ljava/util/concurrent/ConcurrentHashMap; -Ljava/util/concurrent/ConcurrentHashMap$CollectionView;->map:Ljava/util/concurrent/ConcurrentHashMap; -Ljava/util/concurrent/ConcurrentHashMap$CollectionView;->OOME_MSG:Ljava/lang/String; -Ljava/util/concurrent/ConcurrentHashMap$CounterCell;-><init>(J)V -Ljava/util/concurrent/ConcurrentHashMap$CounterCell;->value:J -Ljava/util/concurrent/ConcurrentHashMap$EntryIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V -Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V -Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->add(Ljava/util/Map$Entry;)Z -Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->addAll(Ljava/util/Collection;)Z -Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentHashMap$EntrySetView;->removeIf(Ljava/util/function/Predicate;)Z -Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJLjava/util/concurrent/ConcurrentHashMap;)V -Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->est:J -Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->map:Ljava/util/concurrent/ConcurrentHashMap; -Ljava/util/concurrent/ConcurrentHashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/concurrent/ConcurrentHashMap$ForEachEntryTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentHashMap$ForEachEntryTask;->action:Ljava/util/function/Consumer; -Ljava/util/concurrent/ConcurrentHashMap$ForEachKeyTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentHashMap$ForEachKeyTask;->action:Ljava/util/function/Consumer; -Ljava/util/concurrent/ConcurrentHashMap$ForEachMappingTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiConsumer;)V -Ljava/util/concurrent/ConcurrentHashMap$ForEachMappingTask;->action:Ljava/util/function/BiConsumer; -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask;->action:Ljava/util/function/Consumer; -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedEntryTask;->transformer:Ljava/util/function/Function; -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask;->action:Ljava/util/function/Consumer; -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedKeyTask;->transformer:Ljava/util/function/Function; -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiFunction;Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask;->action:Ljava/util/function/Consumer; -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedMappingTask;->transformer:Ljava/util/function/BiFunction; -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask;->action:Ljava/util/function/Consumer; -Ljava/util/concurrent/ConcurrentHashMap$ForEachTransformedValueTask;->transformer:Ljava/util/function/Function; -Ljava/util/concurrent/ConcurrentHashMap$ForEachValueTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentHashMap$ForEachValueTask;->action:Ljava/util/function/Consumer; -Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;)V -Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$ForwardingNode;->nextTable:[Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$KeyIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V -Ljava/util/concurrent/ConcurrentHashMap$KeySetView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;Ljava/lang/Object;)V -Ljava/util/concurrent/ConcurrentHashMap$KeySetView;->value:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJ)V -Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;->est:J -Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentHashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/concurrent/ConcurrentHashMap$MapEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap;)V -Ljava/util/concurrent/ConcurrentHashMap$MapEntry;->key:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap$MapEntry;->map:Ljava/util/concurrent/ConcurrentHashMap; -Ljava/util/concurrent/ConcurrentHashMap$MapEntry;->val:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->reducer:Ljava/util/function/BiFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->result:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesTask;->transformer:Ljava/util/function/Function; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->basis:D -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->reducer:Ljava/util/function/DoubleBinaryOperator; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->result:D -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToDoubleTask;->transformer:Ljava/util/function/ToDoubleFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->basis:I -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->reducer:Ljava/util/function/IntBinaryOperator; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->result:I -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToIntTask;->transformer:Ljava/util/function/ToIntFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->basis:J -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->reducer:Ljava/util/function/LongBinaryOperator; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->result:J -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceEntriesToLongTask;->transformer:Ljava/util/function/ToLongFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->reducer:Ljava/util/function/BiFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->result:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysTask;->transformer:Ljava/util/function/Function; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->basis:D -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->reducer:Ljava/util/function/DoubleBinaryOperator; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->result:D -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToDoubleTask;->transformer:Ljava/util/function/ToDoubleFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->basis:I -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->reducer:Ljava/util/function/IntBinaryOperator; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->result:I -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToIntTask;->transformer:Ljava/util/function/ToIntFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->basis:J -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->reducer:Ljava/util/function/LongBinaryOperator; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->result:J -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceKeysToLongTask;->transformer:Ljava/util/function/ToLongFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;Ljava/util/function/BiFunction;Ljava/util/function/BiFunction;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->reducer:Ljava/util/function/BiFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->result:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsTask;->transformer:Ljava/util/function/BiFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;Ljava/util/function/ToDoubleBiFunction;DLjava/util/function/DoubleBinaryOperator;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->basis:D -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->reducer:Ljava/util/function/DoubleBinaryOperator; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->result:D -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToDoubleTask;->transformer:Ljava/util/function/ToDoubleBiFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;Ljava/util/function/ToIntBiFunction;ILjava/util/function/IntBinaryOperator;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->basis:I -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->reducer:Ljava/util/function/IntBinaryOperator; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->result:I -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToIntTask;->transformer:Ljava/util/function/ToIntBiFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;Ljava/util/function/ToLongBiFunction;JLjava/util/function/LongBinaryOperator;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->basis:J -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->reducer:Ljava/util/function/LongBinaryOperator; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->result:J -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceMappingsToLongTask;->transformer:Ljava/util/function/ToLongBiFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;Ljava/util/function/Function;Ljava/util/function/BiFunction;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->reducer:Ljava/util/function/BiFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->result:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesTask;->transformer:Ljava/util/function/Function; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;Ljava/util/function/ToDoubleFunction;DLjava/util/function/DoubleBinaryOperator;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->basis:D -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->reducer:Ljava/util/function/DoubleBinaryOperator; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->result:D -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToDoubleTask;->transformer:Ljava/util/function/ToDoubleFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;Ljava/util/function/ToIntFunction;ILjava/util/function/IntBinaryOperator;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->basis:I -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->reducer:Ljava/util/function/IntBinaryOperator; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->result:I -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToIntTask;->transformer:Ljava/util/function/ToIntFunction; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;Ljava/util/function/ToLongFunction;JLjava/util/function/LongBinaryOperator;)V -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->basis:J -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->reducer:Ljava/util/function/LongBinaryOperator; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->result:J -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask; -Ljava/util/concurrent/ConcurrentHashMap$MapReduceValuesToLongTask;->transformer:Ljava/util/function/ToLongFunction; -Ljava/util/concurrent/ConcurrentHashMap$Node;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;)V -Ljava/util/concurrent/ConcurrentHashMap$Node;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$Node;->hash:I -Ljava/util/concurrent/ConcurrentHashMap$Node;->key:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap$Node;->next:Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$Node;->val:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;Ljava/util/function/BiFunction;)V -Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask; -Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->reducer:Ljava/util/function/BiFunction; -Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->result:Ljava/util/Map$Entry; -Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$ReduceEntriesTask; -Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;Ljava/util/function/BiFunction;)V -Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask; -Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->reducer:Ljava/util/function/BiFunction; -Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->result:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$ReduceKeysTask; -Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;Ljava/util/function/BiFunction;)V -Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->nextRight:Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask; -Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->reducer:Ljava/util/function/BiFunction; -Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->result:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask;->rights:Ljava/util/concurrent/ConcurrentHashMap$ReduceValuesTask; -Ljava/util/concurrent/ConcurrentHashMap$ReservationNode;-><init>()V -Ljava/util/concurrent/ConcurrentHashMap$ReservationNode;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V -Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask;->result:Ljava/util/concurrent/atomic/AtomicReference; -Ljava/util/concurrent/ConcurrentHashMap$SearchEntriesTask;->searchFunction:Ljava/util/function/Function; -Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V -Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask;->result:Ljava/util/concurrent/atomic/AtomicReference; -Ljava/util/concurrent/ConcurrentHashMap$SearchKeysTask;->searchFunction:Ljava/util/function/Function; -Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/BiFunction;Ljava/util/concurrent/atomic/AtomicReference;)V -Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask;->result:Ljava/util/concurrent/atomic/AtomicReference; -Ljava/util/concurrent/ConcurrentHashMap$SearchMappingsTask;->searchFunction:Ljava/util/function/BiFunction; -Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask;-><init>(Ljava/util/concurrent/ConcurrentHashMap$BulkTask;III[Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/function/Function;Ljava/util/concurrent/atomic/AtomicReference;)V -Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask;->result:Ljava/util/concurrent/atomic/AtomicReference; -Ljava/util/concurrent/ConcurrentHashMap$SearchValuesTask;->searchFunction:Ljava/util/function/Function; -Ljava/util/concurrent/ConcurrentHashMap$Segment;-><init>(F)V -Ljava/util/concurrent/ConcurrentHashMap$Segment;->loadFactor:F -Ljava/util/concurrent/ConcurrentHashMap$TableStack;-><init>()V -Ljava/util/concurrent/ConcurrentHashMap$TableStack;->index:I -Ljava/util/concurrent/ConcurrentHashMap$TableStack;->length:I -Ljava/util/concurrent/ConcurrentHashMap$TableStack;->next:Ljava/util/concurrent/ConcurrentHashMap$TableStack; -Ljava/util/concurrent/ConcurrentHashMap$TableStack;->tab:[Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$Traverser;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;III)V -Ljava/util/concurrent/ConcurrentHashMap$Traverser;->advance()Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$Traverser;->baseIndex:I -Ljava/util/concurrent/ConcurrentHashMap$Traverser;->baseLimit:I -Ljava/util/concurrent/ConcurrentHashMap$Traverser;->baseSize:I -Ljava/util/concurrent/ConcurrentHashMap$Traverser;->index:I -Ljava/util/concurrent/ConcurrentHashMap$Traverser;->next:Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$Traverser;->pushState([Ljava/util/concurrent/ConcurrentHashMap$Node;II)V -Ljava/util/concurrent/ConcurrentHashMap$Traverser;->recoverState(I)V -Ljava/util/concurrent/ConcurrentHashMap$Traverser;->spare:Ljava/util/concurrent/ConcurrentHashMap$TableStack; -Ljava/util/concurrent/ConcurrentHashMap$Traverser;->stack:Ljava/util/concurrent/ConcurrentHashMap$TableStack; -Ljava/util/concurrent/ConcurrentHashMap$Traverser;->tab:[Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;-><init>(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->balanceDeletion(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode; -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->balanceInsertion(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode; -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->checkInvariants(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Z -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->contendedLock()V -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->first:Ljava/util/concurrent/ConcurrentHashMap$TreeNode; -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->lockRoot()V -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->lockState:I -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->LOCKSTATE:J -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->putTreeVal(ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode; -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->READER:I -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->removeTreeNode(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Z -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->root:Ljava/util/concurrent/ConcurrentHashMap$TreeNode; -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->rotateLeft(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode; -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->rotateRight(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode; -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->tieBreakOrder(Ljava/lang/Object;Ljava/lang/Object;)I -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->unlockRoot()V -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->WAITER:I -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->waiter:Ljava/lang/Thread; -Ljava/util/concurrent/ConcurrentHashMap$TreeBin;->WRITER:I -Ljava/util/concurrent/ConcurrentHashMap$TreeNode;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V -Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->findTreeNode(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode; -Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->left:Ljava/util/concurrent/ConcurrentHashMap$TreeNode; -Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->parent:Ljava/util/concurrent/ConcurrentHashMap$TreeNode; -Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->prev:Ljava/util/concurrent/ConcurrentHashMap$TreeNode; -Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->red:Z -Ljava/util/concurrent/ConcurrentHashMap$TreeNode;->right:Ljava/util/concurrent/ConcurrentHashMap$TreeNode; -Ljava/util/concurrent/ConcurrentHashMap$ValueIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V -Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIIJ)V -Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;->est:J -Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentHashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/concurrent/ConcurrentHashMap$ValuesView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V -Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->add(Ljava/lang/Object;)Z -Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->addAll(Ljava/util/Collection;)Z -Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentHashMap$ValuesView;->removeIf(Ljava/util/function/Predicate;)Z -Ljava/util/concurrent/ConcurrentHashMap;->ABASE:I -Ljava/util/concurrent/ConcurrentHashMap;->addCount(JI)V -Ljava/util/concurrent/ConcurrentHashMap;->ASHIFT:I -Ljava/util/concurrent/ConcurrentHashMap;->BASECOUNT:J -Ljava/util/concurrent/ConcurrentHashMap;->baseCount:J -Ljava/util/concurrent/ConcurrentHashMap;->batchFor(J)I -Ljava/util/concurrent/ConcurrentHashMap;->casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z -Ljava/util/concurrent/ConcurrentHashMap;->cellsBusy:I -Ljava/util/concurrent/ConcurrentHashMap;->CELLSBUSY:J -Ljava/util/concurrent/ConcurrentHashMap;->CELLVALUE:J -Ljava/util/concurrent/ConcurrentHashMap;->comparableClassFor(Ljava/lang/Object;)Ljava/lang/Class; -Ljava/util/concurrent/ConcurrentHashMap;->compareComparables(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)I -Ljava/util/concurrent/ConcurrentHashMap;->counterCells:[Ljava/util/concurrent/ConcurrentHashMap$CounterCell; -Ljava/util/concurrent/ConcurrentHashMap;->DEFAULT_CAPACITY:I -Ljava/util/concurrent/ConcurrentHashMap;->DEFAULT_CONCURRENCY_LEVEL:I -Ljava/util/concurrent/ConcurrentHashMap;->entrySet:Ljava/util/concurrent/ConcurrentHashMap$EntrySetView; -Ljava/util/concurrent/ConcurrentHashMap;->fullAddCount(JZ)V -Ljava/util/concurrent/ConcurrentHashMap;->HASH_BITS:I -Ljava/util/concurrent/ConcurrentHashMap;->helpTransfer([Ljava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)[Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap;->initTable()[Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap;->keySet:Ljava/util/concurrent/ConcurrentHashMap$KeySetView; -Ljava/util/concurrent/ConcurrentHashMap;->LOAD_FACTOR:F -Ljava/util/concurrent/ConcurrentHashMap;->MAXIMUM_CAPACITY:I -Ljava/util/concurrent/ConcurrentHashMap;->MAX_ARRAY_SIZE:I -Ljava/util/concurrent/ConcurrentHashMap;->MAX_RESIZERS:I -Ljava/util/concurrent/ConcurrentHashMap;->MIN_TRANSFER_STRIDE:I -Ljava/util/concurrent/ConcurrentHashMap;->MIN_TREEIFY_CAPACITY:I -Ljava/util/concurrent/ConcurrentHashMap;->MOVED:I -Ljava/util/concurrent/ConcurrentHashMap;->NCPU:I -Ljava/util/concurrent/ConcurrentHashMap;->nextTable:[Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap;->putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap;->removeEntryIf(Ljava/util/function/Predicate;)Z -Ljava/util/concurrent/ConcurrentHashMap;->removeValueIf(Ljava/util/function/Predicate;)Z -Ljava/util/concurrent/ConcurrentHashMap;->replaceNode(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentHashMap;->RESERVED:I -Ljava/util/concurrent/ConcurrentHashMap;->resizeStamp(I)I -Ljava/util/concurrent/ConcurrentHashMap;->RESIZE_STAMP_BITS:I -Ljava/util/concurrent/ConcurrentHashMap;->RESIZE_STAMP_SHIFT:I -Ljava/util/concurrent/ConcurrentHashMap;->setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V -Ljava/util/concurrent/ConcurrentHashMap;->sizeCtl:I -Ljava/util/concurrent/ConcurrentHashMap;->SIZECTL:J -Ljava/util/concurrent/ConcurrentHashMap;->spread(I)I -Ljava/util/concurrent/ConcurrentHashMap;->sumCount()J -Ljava/util/concurrent/ConcurrentHashMap;->tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap;->table:[Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap;->tableSizeFor(I)I -Ljava/util/concurrent/ConcurrentHashMap;->transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V -Ljava/util/concurrent/ConcurrentHashMap;->transferIndex:I -Ljava/util/concurrent/ConcurrentHashMap;->TRANSFERINDEX:J -Ljava/util/concurrent/ConcurrentHashMap;->TREEBIN:I -Ljava/util/concurrent/ConcurrentHashMap;->treeifyBin([Ljava/util/concurrent/ConcurrentHashMap$Node;I)V -Ljava/util/concurrent/ConcurrentHashMap;->TREEIFY_THRESHOLD:I -Ljava/util/concurrent/ConcurrentHashMap;->tryPresize(I)V -Ljava/util/concurrent/ConcurrentHashMap;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ConcurrentHashMap;->untreeify(Ljava/util/concurrent/ConcurrentHashMap$Node;)Ljava/util/concurrent/ConcurrentHashMap$Node; -Ljava/util/concurrent/ConcurrentHashMap;->UNTREEIFY_THRESHOLD:I -Ljava/util/concurrent/ConcurrentHashMap;->values:Ljava/util/concurrent/ConcurrentHashMap$ValuesView; -Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->advance()V -Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->lastRet:Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->nextItem:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->nextNode(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->nextNode:Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque$AbstractItr;->startNode()Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;-><init>(Ljava/util/concurrent/ConcurrentLinkedDeque;)V -Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->batch:I -Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->current:Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->exhausted:Z -Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->MAX_BATCH:I -Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->queue:Ljava/util/concurrent/ConcurrentLinkedDeque; -Ljava/util/concurrent/ConcurrentLinkedDeque$CLDSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/concurrent/ConcurrentLinkedDeque$DescendingItr;->nextNode(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque$DescendingItr;->startNode()Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque$Itr;->nextNode(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque$Itr;->startNode()Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;-><init>()V -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;-><init>(Ljava/lang/Object;)V -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->casNext(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->casPrev(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->ITEM:J -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->item:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->lazySetNext(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->lazySetPrev(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->NEXT:J -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->next:Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->PREV:J -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->prev:Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque$Node;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ConcurrentLinkedDeque;->casHead(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z -Ljava/util/concurrent/ConcurrentLinkedDeque;->casTail(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Z -Ljava/util/concurrent/ConcurrentLinkedDeque;->first()Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque;->HEAD:J -Ljava/util/concurrent/ConcurrentLinkedDeque;->head:Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque;->HOPS:I -Ljava/util/concurrent/ConcurrentLinkedDeque;->initHeadTail(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V -Ljava/util/concurrent/ConcurrentLinkedDeque;->last()Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque;->linkFirst(Ljava/lang/Object;)V -Ljava/util/concurrent/ConcurrentLinkedDeque;->linkLast(Ljava/lang/Object;)V -Ljava/util/concurrent/ConcurrentLinkedDeque;->nextTerminator()Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque;->NEXT_TERMINATOR:Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque;->pred(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque;->prevTerminator()Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque;->PREV_TERMINATOR:Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque;->screenNullResult(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentLinkedDeque;->skipDeletedPredecessors(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V -Ljava/util/concurrent/ConcurrentLinkedDeque;->skipDeletedSuccessors(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V -Ljava/util/concurrent/ConcurrentLinkedDeque;->succ(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque;->TAIL:J -Ljava/util/concurrent/ConcurrentLinkedDeque;->tail:Ljava/util/concurrent/ConcurrentLinkedDeque$Node; -Ljava/util/concurrent/ConcurrentLinkedDeque;->toArrayInternal([Ljava/lang/Object;)[Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentLinkedDeque;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ConcurrentLinkedDeque;->unlink(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V -Ljava/util/concurrent/ConcurrentLinkedDeque;->unlinkFirst(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V -Ljava/util/concurrent/ConcurrentLinkedDeque;->unlinkLast(Ljava/util/concurrent/ConcurrentLinkedDeque$Node;Ljava/util/concurrent/ConcurrentLinkedDeque$Node;)V -Ljava/util/concurrent/ConcurrentLinkedDeque;->updateHead()V -Ljava/util/concurrent/ConcurrentLinkedDeque;->updateTail()V -Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;-><init>(Ljava/util/concurrent/ConcurrentLinkedQueue;)V -Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->batch:I -Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->current:Ljava/util/concurrent/ConcurrentLinkedQueue$Node; -Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->exhausted:Z -Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->MAX_BATCH:I -Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->queue:Ljava/util/concurrent/ConcurrentLinkedQueue; -Ljava/util/concurrent/ConcurrentLinkedQueue$CLQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;->lastRet:Ljava/util/concurrent/ConcurrentLinkedQueue$Node; -Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;->nextItem:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentLinkedQueue$Itr;->nextNode:Ljava/util/concurrent/ConcurrentLinkedQueue$Node; -Ljava/util/concurrent/ConcurrentLinkedQueue$Node;-><init>()V -Ljava/util/concurrent/ConcurrentLinkedQueue$Node;->item:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentLinkedQueue$Node;->next:Ljava/util/concurrent/ConcurrentLinkedQueue$Node; -Ljava/util/concurrent/ConcurrentLinkedQueue;->casHead(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z -Ljava/util/concurrent/ConcurrentLinkedQueue;->casItem(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/concurrent/ConcurrentLinkedQueue;->casNext(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z -Ljava/util/concurrent/ConcurrentLinkedQueue;->casTail(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z -Ljava/util/concurrent/ConcurrentLinkedQueue;->first()Ljava/util/concurrent/ConcurrentLinkedQueue$Node; -Ljava/util/concurrent/ConcurrentLinkedQueue;->HEAD:J -Ljava/util/concurrent/ConcurrentLinkedQueue;->head:Ljava/util/concurrent/ConcurrentLinkedQueue$Node; -Ljava/util/concurrent/ConcurrentLinkedQueue;->ITEM:J -Ljava/util/concurrent/ConcurrentLinkedQueue;->lazySetNext(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V -Ljava/util/concurrent/ConcurrentLinkedQueue;->newNode(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentLinkedQueue$Node; -Ljava/util/concurrent/ConcurrentLinkedQueue;->NEXT:J -Ljava/util/concurrent/ConcurrentLinkedQueue;->succ(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Ljava/util/concurrent/ConcurrentLinkedQueue$Node; -Ljava/util/concurrent/ConcurrentLinkedQueue;->TAIL:J -Ljava/util/concurrent/ConcurrentLinkedQueue;->tail:Ljava/util/concurrent/ConcurrentLinkedQueue$Node; -Ljava/util/concurrent/ConcurrentLinkedQueue;->toArrayInternal([Ljava/lang/Object;)[Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentLinkedQueue;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ConcurrentLinkedQueue;->updateHead(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V -Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V -Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->comparator:Ljava/util/Comparator; -Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->current:Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->est:I -Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->estimateSize()J -Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->fence:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$CSLMSpliterator;->row:Ljava/util/concurrent/ConcurrentSkipListMap$Index; -Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V -Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;->m:Ljava/util/concurrent/ConcurrentNavigableMap; -Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet;->removeIf(Ljava/util/function/Predicate;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V -Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;I)V -Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;->level:I -Ljava/util/concurrent/ConcurrentSkipListMap$Index;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)V -Ljava/util/concurrent/ConcurrentSkipListMap$Index;->casRight(Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$Index;->down:Ljava/util/concurrent/ConcurrentSkipListMap$Index; -Ljava/util/concurrent/ConcurrentSkipListMap$Index;->indexesDeletedNode()Z -Ljava/util/concurrent/ConcurrentSkipListMap$Index;->link(Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$Index;->node:Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap$Index;->RIGHT:J -Ljava/util/concurrent/ConcurrentSkipListMap$Index;->right:Ljava/util/concurrent/ConcurrentSkipListMap$Index; -Ljava/util/concurrent/ConcurrentSkipListMap$Index;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ConcurrentSkipListMap$Index;->unlink(Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->advance()V -Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->lastReturned:Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->next:Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap$Iter;->nextValue:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V -Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->ceiling(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->floor(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->headSet(Ljava/lang/Object;)Ljava/util/NavigableSet; -Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->headSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet; -Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->higher(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->lower(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->m:Ljava/util/concurrent/ConcurrentNavigableMap; -Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->subSet(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/NavigableSet; -Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->subSet(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableSet; -Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->tailSet(Ljava/lang/Object;)Ljava/util/NavigableSet; -Ljava/util/concurrent/ConcurrentSkipListMap$KeySet;->tailSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet; -Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V -Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$Node;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V -Ljava/util/concurrent/ConcurrentSkipListMap$Node;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->appendMarker(Ljava/util/concurrent/ConcurrentSkipListMap$Node;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->casNext(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->casValue(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->createSnapshot()Ljava/util/AbstractMap$SimpleImmutableEntry; -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->getValidValue()Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->helpDelete(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->isBaseHeader()Z -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->isMarker()Z -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->key:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->NEXT:J -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->next:Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->VALUE:J -Ljava/util/concurrent/ConcurrentSkipListMap$Node;->value:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->advance()V -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->ascend()V -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->descend()V -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->lastReturned:Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->next:Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap$SubMapIter;->nextValue:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap;Ljava/lang/Object;ZLjava/lang/Object;ZZ)V -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->checkKeyBounds(Ljava/lang/Object;Ljava/util/Comparator;)V -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->entrySetView:Ljava/util/Set; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->getNearEntry(Ljava/lang/Object;I)Ljava/util/Map$Entry; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->getNearKey(Ljava/lang/Object;I)Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->hi:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->highestEntry()Ljava/util/Map$Entry; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->highestKey()Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->hiInclusive:Z -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->hiNode(Ljava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->inBounds(Ljava/lang/Object;Ljava/util/Comparator;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->isBeforeEnd(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/Comparator;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->isDescending:Z -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->keySetView:Ljava/util/concurrent/ConcurrentSkipListMap$KeySet; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->lo:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->loInclusive:Z -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->loNode(Ljava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->lowestEntry()Ljava/util/Map$Entry; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->lowestKey()Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->m:Ljava/util/concurrent/ConcurrentSkipListMap; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->newSubMap(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/concurrent/ConcurrentSkipListMap$SubMap; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->removeHighest()Ljava/util/Map$Entry; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->removeLowest()Ljava/util/Map$Entry; -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->tooHigh(Ljava/lang/Object;Ljava/util/Comparator;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->tooLow(Ljava/lang/Object;Ljava/util/Comparator;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$SubMap;->valuesView:Ljava/util/Collection; -Ljava/util/concurrent/ConcurrentSkipListMap$Values;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V -Ljava/util/concurrent/ConcurrentSkipListMap$Values;->m:Ljava/util/concurrent/ConcurrentNavigableMap; -Ljava/util/concurrent/ConcurrentSkipListMap$Values;->removeIf(Ljava/util/function/Predicate;)Z -Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;-><init>(Ljava/util/Comparator;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/lang/Object;I)V -Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/concurrent/ConcurrentSkipListMap;->BASE_HEADER:Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap;->buildFromSorted(Ljava/util/SortedMap;)V -Ljava/util/concurrent/ConcurrentSkipListMap;->casHead(Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;)Z -Ljava/util/concurrent/ConcurrentSkipListMap;->clearIndexToFirst()V -Ljava/util/concurrent/ConcurrentSkipListMap;->comparator:Ljava/util/Comparator; -Ljava/util/concurrent/ConcurrentSkipListMap;->cpr(Ljava/util/Comparator;Ljava/lang/Object;Ljava/lang/Object;)I -Ljava/util/concurrent/ConcurrentSkipListMap;->descendingMap:Ljava/util/concurrent/ConcurrentNavigableMap; -Ljava/util/concurrent/ConcurrentSkipListMap;->doGet(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap;->doPut(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap;->doRemove(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/concurrent/ConcurrentSkipListMap;->doRemoveFirstEntry()Ljava/util/Map$Entry; -Ljava/util/concurrent/ConcurrentSkipListMap;->doRemoveLastEntry()Ljava/util/Map$Entry; -Ljava/util/concurrent/ConcurrentSkipListMap;->entrySet:Ljava/util/concurrent/ConcurrentSkipListMap$EntrySet; -Ljava/util/concurrent/ConcurrentSkipListMap;->entrySpliterator()Ljava/util/concurrent/ConcurrentSkipListMap$EntrySpliterator; -Ljava/util/concurrent/ConcurrentSkipListMap;->EQ:I -Ljava/util/concurrent/ConcurrentSkipListMap;->findFirst()Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap;->findLast()Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap;->findNear(Ljava/lang/Object;ILjava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap;->findNode(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap;->findPredecessor(Ljava/lang/Object;Ljava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap;->findPredecessorOfLast()Ljava/util/concurrent/ConcurrentSkipListMap$Node; -Ljava/util/concurrent/ConcurrentSkipListMap;->getNear(Ljava/lang/Object;I)Ljava/util/AbstractMap$SimpleImmutableEntry; -Ljava/util/concurrent/ConcurrentSkipListMap;->GT:I -Ljava/util/concurrent/ConcurrentSkipListMap;->HEAD:J -Ljava/util/concurrent/ConcurrentSkipListMap;->head:Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex; -Ljava/util/concurrent/ConcurrentSkipListMap;->initialize()V -Ljava/util/concurrent/ConcurrentSkipListMap;->keySet:Ljava/util/concurrent/ConcurrentSkipListMap$KeySet; -Ljava/util/concurrent/ConcurrentSkipListMap;->keySpliterator()Ljava/util/concurrent/ConcurrentSkipListMap$KeySpliterator; -Ljava/util/concurrent/ConcurrentSkipListMap;->LT:I -Ljava/util/concurrent/ConcurrentSkipListMap;->removeEntryIf(Ljava/util/function/Predicate;)Z -Ljava/util/concurrent/ConcurrentSkipListMap;->removeValueIf(Ljava/util/function/Predicate;)Z -Ljava/util/concurrent/ConcurrentSkipListMap;->toList(Ljava/util/Collection;)Ljava/util/List; -Ljava/util/concurrent/ConcurrentSkipListMap;->tryReduceLevel()V -Ljava/util/concurrent/ConcurrentSkipListMap;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ConcurrentSkipListMap;->values:Ljava/util/concurrent/ConcurrentSkipListMap$Values; -Ljava/util/concurrent/ConcurrentSkipListMap;->valueSpliterator()Ljava/util/concurrent/ConcurrentSkipListMap$ValueSpliterator; -Ljava/util/concurrent/ConcurrentSkipListSet;-><init>(Ljava/util/concurrent/ConcurrentNavigableMap;)V -Ljava/util/concurrent/ConcurrentSkipListSet;->m:Ljava/util/concurrent/ConcurrentNavigableMap; -Ljava/util/concurrent/ConcurrentSkipListSet;->MAP:J -Ljava/util/concurrent/ConcurrentSkipListSet;->setMap(Ljava/util/concurrent/ConcurrentNavigableMap;)V -Ljava/util/concurrent/ConcurrentSkipListSet;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;-><init>([Ljava/lang/Object;I)V -Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;->cursor:I -Ljava/util/concurrent/CopyOnWriteArrayList$COWIterator;->snapshot:[Ljava/lang/Object; -Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;-><init>(Ljava/util/concurrent/CopyOnWriteArrayList;II)V -Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->checkForComodification()V -Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->expectedArray:[Ljava/lang/Object; -Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->l:Ljava/util/concurrent/CopyOnWriteArrayList; -Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->offset:I -Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->rangeCheck(I)V -Ljava/util/concurrent/CopyOnWriteArrayList$COWSubList;->size:I -Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;-><init>(Ljava/util/List;III)V -Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;->it:Ljava/util/ListIterator; -Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;->offset:I -Ljava/util/concurrent/CopyOnWriteArrayList$COWSubListIterator;->size:I -Ljava/util/concurrent/CopyOnWriteArrayList;->addIfAbsent(Ljava/lang/Object;[Ljava/lang/Object;)Z -Ljava/util/concurrent/CopyOnWriteArrayList;->get([Ljava/lang/Object;I)Ljava/lang/Object; -Ljava/util/concurrent/CopyOnWriteArrayList;->getArray()[Ljava/lang/Object; -Ljava/util/concurrent/CopyOnWriteArrayList;->indexOf(Ljava/lang/Object;[Ljava/lang/Object;II)I -Ljava/util/concurrent/CopyOnWriteArrayList;->lastIndexOf(Ljava/lang/Object;[Ljava/lang/Object;I)I -Ljava/util/concurrent/CopyOnWriteArrayList;->LOCK:J -Ljava/util/concurrent/CopyOnWriteArrayList;->lock:Ljava/lang/Object; -Ljava/util/concurrent/CopyOnWriteArrayList;->outOfBounds(II)Ljava/lang/String; -Ljava/util/concurrent/CopyOnWriteArrayList;->remove(Ljava/lang/Object;[Ljava/lang/Object;I)Z -Ljava/util/concurrent/CopyOnWriteArrayList;->removeRange(II)V -Ljava/util/concurrent/CopyOnWriteArrayList;->resetLock()V -Ljava/util/concurrent/CopyOnWriteArrayList;->setArray([Ljava/lang/Object;)V -Ljava/util/concurrent/CopyOnWriteArrayList;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/CopyOnWriteArraySet;->compareSets([Ljava/lang/Object;Ljava/util/Set;)I -Ljava/util/concurrent/CountDownLatch$Sync;-><init>(I)V -Ljava/util/concurrent/CountDownLatch$Sync;->getCount()I -Ljava/util/concurrent/CountDownLatch;->sync:Ljava/util/concurrent/CountDownLatch$Sync; -Ljava/util/concurrent/CountedCompleter;->completer:Ljava/util/concurrent/CountedCompleter; -Ljava/util/concurrent/CountedCompleter;->internalPropagateException(Ljava/lang/Throwable;)V -Ljava/util/concurrent/CountedCompleter;->pending:I -Ljava/util/concurrent/CountedCompleter;->PENDING:J -Ljava/util/concurrent/CountedCompleter;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/CyclicBarrier$Generation;-><init>()V -Ljava/util/concurrent/CyclicBarrier$Generation;->broken:Z -Ljava/util/concurrent/CyclicBarrier;->barrierCommand:Ljava/lang/Runnable; -Ljava/util/concurrent/CyclicBarrier;->breakBarrier()V -Ljava/util/concurrent/CyclicBarrier;->count:I -Ljava/util/concurrent/CyclicBarrier;->dowait(ZJ)I -Ljava/util/concurrent/CyclicBarrier;->generation:Ljava/util/concurrent/CyclicBarrier$Generation; -Ljava/util/concurrent/CyclicBarrier;->lock:Ljava/util/concurrent/locks/ReentrantLock; -Ljava/util/concurrent/CyclicBarrier;->nextGeneration()V -Ljava/util/concurrent/CyclicBarrier;->parties:I -Ljava/util/concurrent/CyclicBarrier;->trip:Ljava/util/concurrent/locks/Condition; -Ljava/util/concurrent/DelayQueue$Itr;->array:[Ljava/lang/Object; -Ljava/util/concurrent/DelayQueue$Itr;->cursor:I -Ljava/util/concurrent/DelayQueue$Itr;->lastRet:I -Ljava/util/concurrent/DelayQueue;->available:Ljava/util/concurrent/locks/Condition; -Ljava/util/concurrent/DelayQueue;->leader:Ljava/lang/Thread; -Ljava/util/concurrent/DelayQueue;->lock:Ljava/util/concurrent/locks/ReentrantLock; -Ljava/util/concurrent/DelayQueue;->peekExpired()Ljava/util/concurrent/Delayed; -Ljava/util/concurrent/DelayQueue;->q:Ljava/util/PriorityQueue; -Ljava/util/concurrent/DelayQueue;->removeEQ(Ljava/lang/Object;)V -Ljava/util/concurrent/Exchanger$Node;-><init>()V -Ljava/util/concurrent/Exchanger$Node;->bound:I -Ljava/util/concurrent/Exchanger$Node;->collides:I -Ljava/util/concurrent/Exchanger$Node;->hash:I -Ljava/util/concurrent/Exchanger$Node;->index:I -Ljava/util/concurrent/Exchanger$Node;->item:Ljava/lang/Object; -Ljava/util/concurrent/Exchanger$Node;->match:Ljava/lang/Object; -Ljava/util/concurrent/Exchanger$Node;->parked:Ljava/lang/Thread; -Ljava/util/concurrent/Exchanger$Participant;-><init>()V -Ljava/util/concurrent/Exchanger;->ABASE:I -Ljava/util/concurrent/Exchanger;->arena:[Ljava/util/concurrent/Exchanger$Node; -Ljava/util/concurrent/Exchanger;->arenaExchange(Ljava/lang/Object;ZJ)Ljava/lang/Object; -Ljava/util/concurrent/Exchanger;->ASHIFT:I -Ljava/util/concurrent/Exchanger;->BLOCKER:J -Ljava/util/concurrent/Exchanger;->bound:I -Ljava/util/concurrent/Exchanger;->BOUND:J -Ljava/util/concurrent/Exchanger;->FULL:I -Ljava/util/concurrent/Exchanger;->MATCH:J -Ljava/util/concurrent/Exchanger;->MMASK:I -Ljava/util/concurrent/Exchanger;->NCPU:I -Ljava/util/concurrent/Exchanger;->NULL_ITEM:Ljava/lang/Object; -Ljava/util/concurrent/Exchanger;->participant:Ljava/util/concurrent/Exchanger$Participant; -Ljava/util/concurrent/Exchanger;->SEQ:I -Ljava/util/concurrent/Exchanger;->SLOT:J -Ljava/util/concurrent/Exchanger;->slot:Ljava/util/concurrent/Exchanger$Node; -Ljava/util/concurrent/Exchanger;->slotExchange(Ljava/lang/Object;ZJ)Ljava/lang/Object; -Ljava/util/concurrent/Exchanger;->SPINS:I -Ljava/util/concurrent/Exchanger;->TIMED_OUT:Ljava/lang/Object; -Ljava/util/concurrent/Exchanger;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture;-><init>(Ljava/util/concurrent/RunnableFuture;Ljava/util/concurrent/BlockingQueue;)V -Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture;->completionQueue:Ljava/util/concurrent/BlockingQueue; -Ljava/util/concurrent/ExecutorCompletionService$QueueingFuture;->task:Ljava/util/concurrent/Future; -Ljava/util/concurrent/ExecutorCompletionService;->aes:Ljava/util/concurrent/AbstractExecutorService; -Ljava/util/concurrent/ExecutorCompletionService;->completionQueue:Ljava/util/concurrent/BlockingQueue; -Ljava/util/concurrent/ExecutorCompletionService;->executor:Ljava/util/concurrent/Executor; -Ljava/util/concurrent/ExecutorCompletionService;->newTaskFor(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/RunnableFuture; -Ljava/util/concurrent/ExecutorCompletionService;->newTaskFor(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/RunnableFuture; -Ljava/util/concurrent/Executors$DefaultThreadFactory;-><init>()V -Ljava/util/concurrent/Executors$DefaultThreadFactory;->group:Ljava/lang/ThreadGroup; -Ljava/util/concurrent/Executors$DefaultThreadFactory;->namePrefix:Ljava/lang/String; -Ljava/util/concurrent/Executors$DefaultThreadFactory;->poolNumber:Ljava/util/concurrent/atomic/AtomicInteger; -Ljava/util/concurrent/Executors$DefaultThreadFactory;->threadNumber:Ljava/util/concurrent/atomic/AtomicInteger; -Ljava/util/concurrent/Executors$DelegatedExecutorService;-><init>(Ljava/util/concurrent/ExecutorService;)V -Ljava/util/concurrent/Executors$DelegatedExecutorService;->e:Ljava/util/concurrent/ExecutorService; -Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;-><init>(Ljava/util/concurrent/ScheduledExecutorService;)V -Ljava/util/concurrent/Executors$DelegatedScheduledExecutorService;->e:Ljava/util/concurrent/ScheduledExecutorService; -Ljava/util/concurrent/Executors$FinalizableDelegatedExecutorService;-><init>(Ljava/util/concurrent/ExecutorService;)V -Ljava/util/concurrent/Executors$PrivilegedCallable;-><init>(Ljava/util/concurrent/Callable;)V -Ljava/util/concurrent/Executors$PrivilegedCallable;->acc:Ljava/security/AccessControlContext; -Ljava/util/concurrent/Executors$PrivilegedCallable;->task:Ljava/util/concurrent/Callable; -Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;-><init>(Ljava/util/concurrent/Callable;)V -Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;->acc:Ljava/security/AccessControlContext; -Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;->ccl:Ljava/lang/ClassLoader; -Ljava/util/concurrent/Executors$PrivilegedCallableUsingCurrentClassLoader;->task:Ljava/util/concurrent/Callable; -Ljava/util/concurrent/Executors$PrivilegedThreadFactory;-><init>()V -Ljava/util/concurrent/Executors$PrivilegedThreadFactory;->acc:Ljava/security/AccessControlContext; -Ljava/util/concurrent/Executors$PrivilegedThreadFactory;->ccl:Ljava/lang/ClassLoader; -Ljava/util/concurrent/Executors$RunnableAdapter;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V -Ljava/util/concurrent/Executors$RunnableAdapter;->result:Ljava/lang/Object; -Ljava/util/concurrent/Executors;-><init>()V -Ljava/util/concurrent/ForkJoinPool$AuxState;-><init>()V -Ljava/util/concurrent/ForkJoinPool$AuxState;->indexSeed:J -Ljava/util/concurrent/ForkJoinPool$AuxState;->stealCount:J -Ljava/util/concurrent/ForkJoinPool$DefaultForkJoinWorkerThreadFactory;-><init>()V -Ljava/util/concurrent/ForkJoinPool$EmptyTask;-><init>()V -Ljava/util/concurrent/ForkJoinPool$EmptyTask;->setRawResult(Ljava/lang/Void;)V -Ljava/util/concurrent/ForkJoinPool$InnocuousForkJoinWorkerThreadFactory;-><init>()V -Ljava/util/concurrent/ForkJoinPool$InnocuousForkJoinWorkerThreadFactory;->innocuousAcc:Ljava/security/AccessControlContext; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;-><init>(Ljava/util/concurrent/ForkJoinPool;Ljava/util/concurrent/ForkJoinWorkerThread;)V -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->ABASE:I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->array:[Ljava/util/concurrent/ForkJoinTask; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->ASHIFT:I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->base:I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->cancelAll()V -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->config:I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->currentJoin:Ljava/util/concurrent/ForkJoinTask; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->currentSteal:Ljava/util/concurrent/ForkJoinTask; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->getPoolIndex()I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->growAndSharedPush(Ljava/util/concurrent/ForkJoinTask;)V -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->growArray()[Ljava/util/concurrent/ForkJoinTask; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->hint:I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->INITIAL_QUEUE_CAPACITY:I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->isApparentlyUnblocked()Z -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->isEmpty()Z -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->localPollAndExec()V -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->localPopAndExec()V -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->MAXIMUM_QUEUE_CAPACITY:I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->nextLocalTask()Ljava/util/concurrent/ForkJoinTask; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->nsteals:I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->owner:Ljava/util/concurrent/ForkJoinWorkerThread; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->parker:Ljava/lang/Thread; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->peek()Ljava/util/concurrent/ForkJoinTask; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->poll()Ljava/util/concurrent/ForkJoinTask; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->pollAndExecCC(Ljava/util/concurrent/CountedCompleter;)I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->pollAt(I)Ljava/util/concurrent/ForkJoinTask; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->pool:Ljava/util/concurrent/ForkJoinPool; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->pop()Ljava/util/concurrent/ForkJoinTask; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->popCC(Ljava/util/concurrent/CountedCompleter;I)Ljava/util/concurrent/CountedCompleter; -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->push(Ljava/util/concurrent/ForkJoinTask;)V -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->qlock:I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->QLOCK:J -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->queueSize()I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->runTask(Ljava/util/concurrent/ForkJoinTask;)V -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->scanState:I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->sharedPush(Ljava/util/concurrent/ForkJoinTask;)I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->stackPred:I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->top:I -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->transferStealCount(Ljava/util/concurrent/ForkJoinPool;)V -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->tryRemoveAndExec(Ljava/util/concurrent/ForkJoinTask;)Z -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->trySharedUnpush(Ljava/util/concurrent/ForkJoinTask;)Z -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->tryUnpush(Ljava/util/concurrent/ForkJoinTask;)Z -Ljava/util/concurrent/ForkJoinPool$WorkQueue;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ForkJoinPool;-><init>(ILjava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;Ljava/lang/Thread$UncaughtExceptionHandler;ILjava/lang/String;)V -Ljava/util/concurrent/ForkJoinPool;->ABASE:I -Ljava/util/concurrent/ForkJoinPool;->AC_MASK:J -Ljava/util/concurrent/ForkJoinPool;->AC_SHIFT:I -Ljava/util/concurrent/ForkJoinPool;->AC_UNIT:J -Ljava/util/concurrent/ForkJoinPool;->ADD_WORKER:J -Ljava/util/concurrent/ForkJoinPool;->ASHIFT:I -Ljava/util/concurrent/ForkJoinPool;->auxState:Ljava/util/concurrent/ForkJoinPool$AuxState; -Ljava/util/concurrent/ForkJoinPool;->awaitJoin(Ljava/util/concurrent/ForkJoinPool$WorkQueue;Ljava/util/concurrent/ForkJoinTask;J)I -Ljava/util/concurrent/ForkJoinPool;->awaitWork(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)I -Ljava/util/concurrent/ForkJoinPool;->checkFactory(Ljava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;)Ljava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory; -Ljava/util/concurrent/ForkJoinPool;->checkParallelism(I)I -Ljava/util/concurrent/ForkJoinPool;->checkPermission()V -Ljava/util/concurrent/ForkJoinPool;->common:Ljava/util/concurrent/ForkJoinPool; -Ljava/util/concurrent/ForkJoinPool;->commonSubmitterQueue()Ljava/util/concurrent/ForkJoinPool$WorkQueue; -Ljava/util/concurrent/ForkJoinPool;->COMMON_MAX_SPARES:I -Ljava/util/concurrent/ForkJoinPool;->COMMON_PARALLELISM:I -Ljava/util/concurrent/ForkJoinPool;->config:I -Ljava/util/concurrent/ForkJoinPool;->createWorker(Z)Z -Ljava/util/concurrent/ForkJoinPool;->CTL:J -Ljava/util/concurrent/ForkJoinPool;->ctl:J -Ljava/util/concurrent/ForkJoinPool;->DEFAULT_COMMON_MAX_SPARES:I -Ljava/util/concurrent/ForkJoinPool;->deregisterWorker(Ljava/util/concurrent/ForkJoinWorkerThread;Ljava/lang/Throwable;)V -Ljava/util/concurrent/ForkJoinPool;->EVENMASK:I -Ljava/util/concurrent/ForkJoinPool;->externalHelpComplete(Ljava/util/concurrent/CountedCompleter;I)I -Ljava/util/concurrent/ForkJoinPool;->externalPush(Ljava/util/concurrent/ForkJoinTask;)V -Ljava/util/concurrent/ForkJoinPool;->externalSubmit(Ljava/util/concurrent/ForkJoinTask;)Ljava/util/concurrent/ForkJoinTask; -Ljava/util/concurrent/ForkJoinPool;->factory:Ljava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory; -Ljava/util/concurrent/ForkJoinPool;->FIFO_QUEUE:I -Ljava/util/concurrent/ForkJoinPool;->findNonEmptyStealQueue()Ljava/util/concurrent/ForkJoinPool$WorkQueue; -Ljava/util/concurrent/ForkJoinPool;->getSurplusQueuedTaskCount()I -Ljava/util/concurrent/ForkJoinPool;->helpComplete(Ljava/util/concurrent/ForkJoinPool$WorkQueue;Ljava/util/concurrent/CountedCompleter;I)I -Ljava/util/concurrent/ForkJoinPool;->helpQuiescePool(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)V -Ljava/util/concurrent/ForkJoinPool;->helpStealer(Ljava/util/concurrent/ForkJoinPool$WorkQueue;Ljava/util/concurrent/ForkJoinTask;)V -Ljava/util/concurrent/ForkJoinPool;->IDLE_TIMEOUT_MS:J -Ljava/util/concurrent/ForkJoinPool;->inactivate(Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V -Ljava/util/concurrent/ForkJoinPool;->IS_OWNED:I -Ljava/util/concurrent/ForkJoinPool;->LIFO_QUEUE:I -Ljava/util/concurrent/ForkJoinPool;->makeCommonPool()Ljava/util/concurrent/ForkJoinPool; -Ljava/util/concurrent/ForkJoinPool;->MAX_CAP:I -Ljava/util/concurrent/ForkJoinPool;->MODE_MASK:I -Ljava/util/concurrent/ForkJoinPool;->modifyThreadPermission:Ljava/lang/RuntimePermission; -Ljava/util/concurrent/ForkJoinPool;->nextPoolId()I -Ljava/util/concurrent/ForkJoinPool;->nextTaskFor(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)Ljava/util/concurrent/ForkJoinTask; -Ljava/util/concurrent/ForkJoinPool;->POLL_LIMIT:I -Ljava/util/concurrent/ForkJoinPool;->poolNumberSequence:I -Ljava/util/concurrent/ForkJoinPool;->quiesceCommonPool()V -Ljava/util/concurrent/ForkJoinPool;->registerWorker(Ljava/util/concurrent/ForkJoinWorkerThread;)Ljava/util/concurrent/ForkJoinPool$WorkQueue; -Ljava/util/concurrent/ForkJoinPool;->runState:I -Ljava/util/concurrent/ForkJoinPool;->RUNSTATE:J -Ljava/util/concurrent/ForkJoinPool;->runWorker(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)V -Ljava/util/concurrent/ForkJoinPool;->scan(Ljava/util/concurrent/ForkJoinPool$WorkQueue;III)I -Ljava/util/concurrent/ForkJoinPool;->SEED_INCREMENT:I -Ljava/util/concurrent/ForkJoinPool;->SHUTDOWN:I -Ljava/util/concurrent/ForkJoinPool;->signalWork()V -Ljava/util/concurrent/ForkJoinPool;->SMASK:I -Ljava/util/concurrent/ForkJoinPool;->SPARE_WORKER:I -Ljava/util/concurrent/ForkJoinPool;->SP_MASK:J -Ljava/util/concurrent/ForkJoinPool;->SQMASK:I -Ljava/util/concurrent/ForkJoinPool;->SS_SEQ:I -Ljava/util/concurrent/ForkJoinPool;->STARTED:I -Ljava/util/concurrent/ForkJoinPool;->STOP:I -Ljava/util/concurrent/ForkJoinPool;->TC_MASK:J -Ljava/util/concurrent/ForkJoinPool;->TC_SHIFT:I -Ljava/util/concurrent/ForkJoinPool;->TC_UNIT:J -Ljava/util/concurrent/ForkJoinPool;->TERMINATED:I -Ljava/util/concurrent/ForkJoinPool;->timedAwaitWork(Ljava/util/concurrent/ForkJoinPool$WorkQueue;J)I -Ljava/util/concurrent/ForkJoinPool;->TIMEOUT_SLOP_MS:J -Ljava/util/concurrent/ForkJoinPool;->tryAddWorker(J)V -Ljava/util/concurrent/ForkJoinPool;->tryCompensate(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)Z -Ljava/util/concurrent/ForkJoinPool;->tryCreateExternalQueue(I)V -Ljava/util/concurrent/ForkJoinPool;->tryDropSpare(Ljava/util/concurrent/ForkJoinPool$WorkQueue;)Z -Ljava/util/concurrent/ForkJoinPool;->tryExternalUnpush(Ljava/util/concurrent/ForkJoinTask;)Z -Ljava/util/concurrent/ForkJoinPool;->tryInitialize(Z)V -Ljava/util/concurrent/ForkJoinPool;->tryReactivate(Ljava/util/concurrent/ForkJoinPool$WorkQueue;[Ljava/util/concurrent/ForkJoinPool$WorkQueue;I)V -Ljava/util/concurrent/ForkJoinPool;->tryRelease(JLjava/util/concurrent/ForkJoinPool$WorkQueue;J)Z -Ljava/util/concurrent/ForkJoinPool;->tryTerminate(ZZ)I -Ljava/util/concurrent/ForkJoinPool;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ForkJoinPool;->UC_MASK:J -Ljava/util/concurrent/ForkJoinPool;->ueh:Ljava/lang/Thread$UncaughtExceptionHandler; -Ljava/util/concurrent/ForkJoinPool;->UNREGISTERED:I -Ljava/util/concurrent/ForkJoinPool;->UNSIGNALLED:I -Ljava/util/concurrent/ForkJoinPool;->workerNamePrefix:Ljava/lang/String; -Ljava/util/concurrent/ForkJoinPool;->workQueues:[Ljava/util/concurrent/ForkJoinPool$WorkQueue; -Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;-><init>(Ljava/util/concurrent/Callable;)V -Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;->callable:Ljava/util/concurrent/Callable; -Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;->result:Ljava/lang/Object; -Ljava/util/concurrent/ForkJoinTask$AdaptedCallable;->setRawResult(Ljava/lang/Object;)V -Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V -Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;->result:Ljava/lang/Object; -Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;->runnable:Ljava/lang/Runnable; -Ljava/util/concurrent/ForkJoinTask$AdaptedRunnable;->setRawResult(Ljava/lang/Object;)V -Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;-><init>(Ljava/lang/Runnable;)V -Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;->runnable:Ljava/lang/Runnable; -Ljava/util/concurrent/ForkJoinTask$AdaptedRunnableAction;->setRawResult(Ljava/lang/Void;)V -Ljava/util/concurrent/ForkJoinTask$ExceptionNode;-><init>(Ljava/util/concurrent/ForkJoinTask;Ljava/lang/Throwable;Ljava/util/concurrent/ForkJoinTask$ExceptionNode;Ljava/lang/ref/ReferenceQueue;)V -Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->ex:Ljava/lang/Throwable; -Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->hashCode:I -Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->next:Ljava/util/concurrent/ForkJoinTask$ExceptionNode; -Ljava/util/concurrent/ForkJoinTask$ExceptionNode;->thrower:J -Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;-><init>(Ljava/lang/Runnable;)V -Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;->internalPropagateException(Ljava/lang/Throwable;)V -Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;->runnable:Ljava/lang/Runnable; -Ljava/util/concurrent/ForkJoinTask$RunnableExecuteAction;->setRawResult(Ljava/lang/Void;)V -Ljava/util/concurrent/ForkJoinTask;->cancelIgnoringExceptions(Ljava/util/concurrent/ForkJoinTask;)V -Ljava/util/concurrent/ForkJoinTask;->CANCELLED:I -Ljava/util/concurrent/ForkJoinTask;->clearExceptionalCompletion()V -Ljava/util/concurrent/ForkJoinTask;->doExec()I -Ljava/util/concurrent/ForkJoinTask;->doInvoke()I -Ljava/util/concurrent/ForkJoinTask;->doJoin()I -Ljava/util/concurrent/ForkJoinTask;->DONE_MASK:I -Ljava/util/concurrent/ForkJoinTask;->EXCEPTIONAL:I -Ljava/util/concurrent/ForkJoinTask;->exceptionTable:[Ljava/util/concurrent/ForkJoinTask$ExceptionNode; -Ljava/util/concurrent/ForkJoinTask;->exceptionTableLock:Ljava/util/concurrent/locks/ReentrantLock; -Ljava/util/concurrent/ForkJoinTask;->exceptionTableRefQueue:Ljava/lang/ref/ReferenceQueue; -Ljava/util/concurrent/ForkJoinTask;->EXCEPTION_MAP_CAPACITY:I -Ljava/util/concurrent/ForkJoinTask;->expungeStaleExceptions()V -Ljava/util/concurrent/ForkJoinTask;->externalAwaitDone()I -Ljava/util/concurrent/ForkJoinTask;->externalInterruptibleAwaitDone()I -Ljava/util/concurrent/ForkJoinTask;->getThrowableException()Ljava/lang/Throwable; -Ljava/util/concurrent/ForkJoinTask;->helpExpungeStaleExceptions()V -Ljava/util/concurrent/ForkJoinTask;->internalPropagateException(Ljava/lang/Throwable;)V -Ljava/util/concurrent/ForkJoinTask;->internalWait(J)V -Ljava/util/concurrent/ForkJoinTask;->NORMAL:I -Ljava/util/concurrent/ForkJoinTask;->pollSubmission()Ljava/util/concurrent/ForkJoinTask; -Ljava/util/concurrent/ForkJoinTask;->recordExceptionalCompletion(Ljava/lang/Throwable;)I -Ljava/util/concurrent/ForkJoinTask;->reportException(I)V -Ljava/util/concurrent/ForkJoinTask;->rethrow(Ljava/lang/Throwable;)V -Ljava/util/concurrent/ForkJoinTask;->setCompletion(I)I -Ljava/util/concurrent/ForkJoinTask;->setExceptionalCompletion(Ljava/lang/Throwable;)I -Ljava/util/concurrent/ForkJoinTask;->SIGNAL:I -Ljava/util/concurrent/ForkJoinTask;->SMASK:I -Ljava/util/concurrent/ForkJoinTask;->status:I -Ljava/util/concurrent/ForkJoinTask;->STATUS:J -Ljava/util/concurrent/ForkJoinTask;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ForkJoinTask;->uncheckedThrow(Ljava/lang/Throwable;)V -Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;-><init>(Ljava/util/concurrent/ForkJoinPool;)V -Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->afterTopLevelExec()V -Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->createThreadGroup()Ljava/lang/ThreadGroup; -Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->innocuousThreadGroup:Ljava/lang/ThreadGroup; -Ljava/util/concurrent/ForkJoinWorkerThread$InnocuousForkJoinWorkerThread;->INNOCUOUS_ACC:Ljava/security/AccessControlContext; -Ljava/util/concurrent/ForkJoinWorkerThread;-><init>(Ljava/util/concurrent/ForkJoinPool;Ljava/lang/ThreadGroup;Ljava/security/AccessControlContext;)V -Ljava/util/concurrent/ForkJoinWorkerThread;->afterTopLevelExec()V -Ljava/util/concurrent/ForkJoinWorkerThread;->eraseThreadLocals()V -Ljava/util/concurrent/ForkJoinWorkerThread;->INHERITABLETHREADLOCALS:J -Ljava/util/concurrent/ForkJoinWorkerThread;->INHERITEDACCESSCONTROLCONTEXT:J -Ljava/util/concurrent/ForkJoinWorkerThread;->pool:Ljava/util/concurrent/ForkJoinPool; -Ljava/util/concurrent/ForkJoinWorkerThread;->THREADLOCALS:J -Ljava/util/concurrent/ForkJoinWorkerThread;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ForkJoinWorkerThread;->workQueue:Ljava/util/concurrent/ForkJoinPool$WorkQueue; -Ljava/util/concurrent/FutureTask$WaitNode;-><init>()V -Ljava/util/concurrent/FutureTask$WaitNode;->next:Ljava/util/concurrent/FutureTask$WaitNode; -Ljava/util/concurrent/FutureTask$WaitNode;->thread:Ljava/lang/Thread; -Ljava/util/concurrent/FutureTask;->awaitDone(ZJ)I -Ljava/util/concurrent/FutureTask;->CANCELLED:I -Ljava/util/concurrent/FutureTask;->COMPLETING:I -Ljava/util/concurrent/FutureTask;->finishCompletion()V -Ljava/util/concurrent/FutureTask;->handlePossibleCancellationInterrupt(I)V -Ljava/util/concurrent/FutureTask;->INTERRUPTED:I -Ljava/util/concurrent/FutureTask;->INTERRUPTING:I -Ljava/util/concurrent/FutureTask;->NEW:I -Ljava/util/concurrent/FutureTask;->NORMAL:I -Ljava/util/concurrent/FutureTask;->removeWaiter(Ljava/util/concurrent/FutureTask$WaitNode;)V -Ljava/util/concurrent/FutureTask;->report(I)Ljava/lang/Object; -Ljava/util/concurrent/FutureTask;->RUNNER:J -Ljava/util/concurrent/FutureTask;->runner:Ljava/lang/Thread; -Ljava/util/concurrent/FutureTask;->STATE:J -Ljava/util/concurrent/FutureTask;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/FutureTask;->WAITERS:J -Ljava/util/concurrent/FutureTask;->waiters:Ljava/util/concurrent/FutureTask$WaitNode; -Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->advance()V -Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->firstNode()Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->lastRet:Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->next:Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->nextItem:Ljava/lang/Object; -Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->nextNode(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque$AbstractItr;->succ(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque$DescendingItr;->firstNode()Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque$DescendingItr;->nextNode(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque$Itr;->firstNode()Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque$Itr;->nextNode(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;-><init>(Ljava/util/concurrent/LinkedBlockingDeque;)V -Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->batch:I -Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->current:Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->est:J -Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->exhausted:Z -Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->MAX_BATCH:I -Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->queue:Ljava/util/concurrent/LinkedBlockingDeque; -Ljava/util/concurrent/LinkedBlockingDeque$LBDSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/concurrent/LinkedBlockingDeque$Node;-><init>(Ljava/lang/Object;)V -Ljava/util/concurrent/LinkedBlockingDeque$Node;->item:Ljava/lang/Object; -Ljava/util/concurrent/LinkedBlockingDeque$Node;->next:Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque$Node;->prev:Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque;->capacity:I -Ljava/util/concurrent/LinkedBlockingDeque;->count:I -Ljava/util/concurrent/LinkedBlockingDeque;->last:Ljava/util/concurrent/LinkedBlockingDeque$Node; -Ljava/util/concurrent/LinkedBlockingDeque;->linkFirst(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Z -Ljava/util/concurrent/LinkedBlockingDeque;->linkLast(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Z -Ljava/util/concurrent/LinkedBlockingDeque;->notEmpty:Ljava/util/concurrent/locks/Condition; -Ljava/util/concurrent/LinkedBlockingDeque;->notFull:Ljava/util/concurrent/locks/Condition; -Ljava/util/concurrent/LinkedBlockingDeque;->unlink(Ljava/util/concurrent/LinkedBlockingDeque$Node;)V -Ljava/util/concurrent/LinkedBlockingDeque;->unlinkFirst()Ljava/lang/Object; -Ljava/util/concurrent/LinkedBlockingDeque;->unlinkLast()Ljava/lang/Object; -Ljava/util/concurrent/LinkedBlockingQueue$Itr;->current:Ljava/util/concurrent/LinkedBlockingQueue$Node; -Ljava/util/concurrent/LinkedBlockingQueue$Itr;->currentElement:Ljava/lang/Object; -Ljava/util/concurrent/LinkedBlockingQueue$Itr;->lastRet:Ljava/util/concurrent/LinkedBlockingQueue$Node; -Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;-><init>(Ljava/util/concurrent/LinkedBlockingQueue;)V -Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->batch:I -Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->current:Ljava/util/concurrent/LinkedBlockingQueue$Node; -Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->est:J -Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->exhausted:Z -Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->MAX_BATCH:I -Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->queue:Ljava/util/concurrent/LinkedBlockingQueue; -Ljava/util/concurrent/LinkedBlockingQueue$LBQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/concurrent/LinkedBlockingQueue$Node;-><init>(Ljava/lang/Object;)V -Ljava/util/concurrent/LinkedBlockingQueue$Node;->item:Ljava/lang/Object; -Ljava/util/concurrent/LinkedBlockingQueue$Node;->next:Ljava/util/concurrent/LinkedBlockingQueue$Node; -Ljava/util/concurrent/LinkedBlockingQueue;->count:Ljava/util/concurrent/atomic/AtomicInteger; -Ljava/util/concurrent/LinkedBlockingQueue;->dequeue()Ljava/lang/Object; -Ljava/util/concurrent/LinkedBlockingQueue;->enqueue(Ljava/util/concurrent/LinkedBlockingQueue$Node;)V -Ljava/util/concurrent/LinkedBlockingQueue;->fullyLock()V -Ljava/util/concurrent/LinkedBlockingQueue;->fullyUnlock()V -Ljava/util/concurrent/LinkedBlockingQueue;->last:Ljava/util/concurrent/LinkedBlockingQueue$Node; -Ljava/util/concurrent/LinkedBlockingQueue;->notEmpty:Ljava/util/concurrent/locks/Condition; -Ljava/util/concurrent/LinkedBlockingQueue;->notFull:Ljava/util/concurrent/locks/Condition; -Ljava/util/concurrent/LinkedBlockingQueue;->signalNotEmpty()V -Ljava/util/concurrent/LinkedBlockingQueue;->signalNotFull()V -Ljava/util/concurrent/LinkedBlockingQueue;->unlink(Ljava/util/concurrent/LinkedBlockingQueue$Node;Ljava/util/concurrent/LinkedBlockingQueue$Node;)V -Ljava/util/concurrent/LinkedTransferQueue$Itr;->advance(Ljava/util/concurrent/LinkedTransferQueue$Node;)V -Ljava/util/concurrent/LinkedTransferQueue$Itr;->lastPred:Ljava/util/concurrent/LinkedTransferQueue$Node; -Ljava/util/concurrent/LinkedTransferQueue$Itr;->lastRet:Ljava/util/concurrent/LinkedTransferQueue$Node; -Ljava/util/concurrent/LinkedTransferQueue$Itr;->nextItem:Ljava/lang/Object; -Ljava/util/concurrent/LinkedTransferQueue$Itr;->nextNode:Ljava/util/concurrent/LinkedTransferQueue$Node; -Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->batch:I -Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->current:Ljava/util/concurrent/LinkedTransferQueue$Node; -Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->exhausted:Z -Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->MAX_BATCH:I -Ljava/util/concurrent/LinkedTransferQueue$LTQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/concurrent/LinkedTransferQueue$Node;-><init>(Ljava/lang/Object;Z)V -Ljava/util/concurrent/LinkedTransferQueue$Node;->cannotPrecede(Z)Z -Ljava/util/concurrent/LinkedTransferQueue$Node;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/concurrent/LinkedTransferQueue$Node;->casNext(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;)Z -Ljava/util/concurrent/LinkedTransferQueue$Node;->forgetContents()V -Ljava/util/concurrent/LinkedTransferQueue$Node;->forgetNext()V -Ljava/util/concurrent/LinkedTransferQueue$Node;->isData:Z -Ljava/util/concurrent/LinkedTransferQueue$Node;->isMatched()Z -Ljava/util/concurrent/LinkedTransferQueue$Node;->isUnmatchedRequest()Z -Ljava/util/concurrent/LinkedTransferQueue$Node;->ITEM:J -Ljava/util/concurrent/LinkedTransferQueue$Node;->item:Ljava/lang/Object; -Ljava/util/concurrent/LinkedTransferQueue$Node;->NEXT:J -Ljava/util/concurrent/LinkedTransferQueue$Node;->next:Ljava/util/concurrent/LinkedTransferQueue$Node; -Ljava/util/concurrent/LinkedTransferQueue$Node;->tryMatchData()Z -Ljava/util/concurrent/LinkedTransferQueue$Node;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/LinkedTransferQueue$Node;->WAITER:J -Ljava/util/concurrent/LinkedTransferQueue$Node;->waiter:Ljava/lang/Thread; -Ljava/util/concurrent/LinkedTransferQueue;->ASYNC:I -Ljava/util/concurrent/LinkedTransferQueue;->awaitMatch(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/lang/Object;ZJ)Ljava/lang/Object; -Ljava/util/concurrent/LinkedTransferQueue;->casHead(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;)Z -Ljava/util/concurrent/LinkedTransferQueue;->casSweepVotes(II)Z -Ljava/util/concurrent/LinkedTransferQueue;->casTail(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;)Z -Ljava/util/concurrent/LinkedTransferQueue;->CHAINED_SPINS:I -Ljava/util/concurrent/LinkedTransferQueue;->countOfMode(Z)I -Ljava/util/concurrent/LinkedTransferQueue;->findAndRemove(Ljava/lang/Object;)Z -Ljava/util/concurrent/LinkedTransferQueue;->firstDataNode()Ljava/util/concurrent/LinkedTransferQueue$Node; -Ljava/util/concurrent/LinkedTransferQueue;->FRONT_SPINS:I -Ljava/util/concurrent/LinkedTransferQueue;->HEAD:J -Ljava/util/concurrent/LinkedTransferQueue;->head:Ljava/util/concurrent/LinkedTransferQueue$Node; -Ljava/util/concurrent/LinkedTransferQueue;->MP:Z -Ljava/util/concurrent/LinkedTransferQueue;->NOW:I -Ljava/util/concurrent/LinkedTransferQueue;->spinsFor(Ljava/util/concurrent/LinkedTransferQueue$Node;Z)I -Ljava/util/concurrent/LinkedTransferQueue;->succ(Ljava/util/concurrent/LinkedTransferQueue$Node;)Ljava/util/concurrent/LinkedTransferQueue$Node; -Ljava/util/concurrent/LinkedTransferQueue;->sweep()V -Ljava/util/concurrent/LinkedTransferQueue;->sweepVotes:I -Ljava/util/concurrent/LinkedTransferQueue;->SWEEPVOTES:J -Ljava/util/concurrent/LinkedTransferQueue;->SWEEP_THRESHOLD:I -Ljava/util/concurrent/LinkedTransferQueue;->SYNC:I -Ljava/util/concurrent/LinkedTransferQueue;->TAIL:J -Ljava/util/concurrent/LinkedTransferQueue;->tail:Ljava/util/concurrent/LinkedTransferQueue$Node; -Ljava/util/concurrent/LinkedTransferQueue;->TIMED:I -Ljava/util/concurrent/LinkedTransferQueue;->toArrayInternal([Ljava/lang/Object;)[Ljava/lang/Object; -Ljava/util/concurrent/LinkedTransferQueue;->tryAppend(Ljava/util/concurrent/LinkedTransferQueue$Node;Z)Ljava/util/concurrent/LinkedTransferQueue$Node; -Ljava/util/concurrent/LinkedTransferQueue;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/LinkedTransferQueue;->unsplice(Ljava/util/concurrent/LinkedTransferQueue$Node;Ljava/util/concurrent/LinkedTransferQueue$Node;)V -Ljava/util/concurrent/LinkedTransferQueue;->xfer(Ljava/lang/Object;ZIJ)Ljava/lang/Object; -Ljava/util/concurrent/locks/AbstractOwnableSynchronizer;->exclusiveOwnerThread:Ljava/lang/Thread; -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->addConditionWaiter()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->checkInterruptWhileWaiting(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->doSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->doSignalAll(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->isOwnedBy(Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;)Z -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->REINTERRUPT:I -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->reportInterruptAfterWait(I)V -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->THROW_IE:I -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer$ConditionObject;->unlinkCancelledWaiters()V -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->acquireQueued(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;J)Z -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->addWaiter(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->apparentlyFirstQueuedIsExclusive()Z -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->cancelAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->compareAndSetTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireInterruptibly(J)V -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireNanos(JJ)Z -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireShared(J)V -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireSharedInterruptibly(J)V -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doAcquireSharedNanos(JJ)Z -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->doReleaseShared()V -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->enq(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->findNodeFromTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->fullGetFirstQueuedThread()Ljava/lang/Thread; -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->fullyRelease(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)J -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->HEAD:J -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->initializeSyncQueue()V -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->isOnSyncQueue(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->parkAndCheckInterrupt()Z -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->selfInterrupt()V -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->setHead(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->setHeadAndPropagate(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;J)V -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->shouldParkAfterFailedAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->SPIN_FOR_TIMEOUT_THRESHOLD:J -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->STATE:J -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->state:J -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->TAIL:J -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->transferAfterCancelledWait(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->transferForSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/locks/AbstractQueuedLongSynchronizer;->unparkSuccessor(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->addConditionWaiter()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->checkInterruptWhileWaiting(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->doSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->doSignalAll(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->firstWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->isOwnedBy(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->lastWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->REINTERRUPT:I -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->reportInterruptAfterWait(I)V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->THROW_IE:I -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->unlinkCancelledWaiters()V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>()V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>(I)V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->CANCELLED:I -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->compareAndSetNext(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->compareAndSetWaitStatus(II)Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->CONDITION:I -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->EXCLUSIVE:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->isShared()Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->NEXT:J -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->next:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->nextWaiter:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->predecessor()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->PREV:J -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->prev:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->PROPAGATE:I -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->SHARED:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->SIGNAL:I -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->THREAD:J -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->thread:Ljava/lang/Thread; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->waitStatus:I -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->WAITSTATUS:J -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireQueued(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->addWaiter(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->apparentlyFirstQueuedIsExclusive()Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->cancelAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->compareAndSetTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireInterruptibly(I)V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireNanos(IJ)Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireShared(I)V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireSharedInterruptibly(I)V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireSharedNanos(IJ)Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->doReleaseShared()V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->enq(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->findNodeFromTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->fullGetFirstQueuedThread()Ljava/lang/Thread; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->fullyRelease(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->HEAD:J -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->head:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->initializeSyncQueue()V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->isOnSyncQueue(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->parkAndCheckInterrupt()Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->selfInterrupt()V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->setHead(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->setHeadAndPropagate(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)V -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->shouldParkAfterFailedAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->SPIN_FOR_TIMEOUT_THRESHOLD:J -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->state:I -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->STATE:J -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->TAIL:J -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->tail:Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->transferAfterCancelledWait(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->transferForSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;->unparkSuccessor(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V -Ljava/util/concurrent/locks/LockSupport;-><init>()V -Ljava/util/concurrent/locks/LockSupport;->nextSecondarySeed()I -Ljava/util/concurrent/locks/LockSupport;->PARKBLOCKER:J -Ljava/util/concurrent/locks/LockSupport;->SECONDARY:J -Ljava/util/concurrent/locks/LockSupport;->setBlocker(Ljava/lang/Thread;Ljava/lang/Object;)V -Ljava/util/concurrent/locks/LockSupport;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/locks/ReentrantLock$FairSync;-><init>()V -Ljava/util/concurrent/locks/ReentrantLock$FairSync;->lock()V -Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;-><init>()V -Ljava/util/concurrent/locks/ReentrantLock$NonfairSync;->lock()V -Ljava/util/concurrent/locks/ReentrantLock$Sync;-><init>()V -Ljava/util/concurrent/locks/ReentrantLock$Sync;->getHoldCount()I -Ljava/util/concurrent/locks/ReentrantLock$Sync;->getOwner()Ljava/lang/Thread; -Ljava/util/concurrent/locks/ReentrantLock$Sync;->isLocked()Z -Ljava/util/concurrent/locks/ReentrantLock$Sync;->lock()V -Ljava/util/concurrent/locks/ReentrantLock$Sync;->newCondition()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject; -Ljava/util/concurrent/locks/ReentrantLock$Sync;->nonfairTryAcquire(I)Z -Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;-><init>()V -Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->readerShouldBlock()Z -Ljava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->writerShouldBlock()Z -Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;-><init>()V -Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->readerShouldBlock()Z -Ljava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->writerShouldBlock()Z -Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->sync:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync; -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;-><init>()V -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;->count:I -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;->tid:J -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;-><init>()V -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;-><init>()V -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->cachedHoldCounter:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter; -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->exclusiveCount(I)I -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->EXCLUSIVE_MASK:I -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->firstReader:Ljava/lang/Thread; -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->firstReaderHoldCount:I -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->fullTryAcquireShared(Ljava/lang/Thread;)I -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getCount()I -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getOwner()Ljava/lang/Thread; -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getReadHoldCount()I -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getReadLockCount()I -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->getWriteHoldCount()I -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->isWriteLocked()Z -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->MAX_COUNT:I -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->newCondition()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject; -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->readerShouldBlock()Z -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->readHolds:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter; -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->sharedCount(I)I -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->SHARED_SHIFT:I -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->SHARED_UNIT:I -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryReadLock()Z -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryWriteLock()Z -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->unmatchedUnlockException()Ljava/lang/IllegalMonitorStateException; -Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->writerShouldBlock()Z -Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->sync:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync; -Ljava/util/concurrent/locks/ReentrantReadWriteLock;->getThreadId(Ljava/lang/Thread;)J -Ljava/util/concurrent/locks/ReentrantReadWriteLock;->readerLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock; -Ljava/util/concurrent/locks/ReentrantReadWriteLock;->sync:Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync; -Ljava/util/concurrent/locks/ReentrantReadWriteLock;->TID:J -Ljava/util/concurrent/locks/ReentrantReadWriteLock;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/locks/ReentrantReadWriteLock;->writerLock:Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock; -Ljava/util/concurrent/locks/StampedLock$WNode;-><init>(ILjava/util/concurrent/locks/StampedLock$WNode;)V -Ljava/util/concurrent/locks/StampedLock$WNode;->cowait:Ljava/util/concurrent/locks/StampedLock$WNode; -Ljava/util/concurrent/locks/StampedLock$WNode;->mode:I -Ljava/util/concurrent/locks/StampedLock$WNode;->next:Ljava/util/concurrent/locks/StampedLock$WNode; -Ljava/util/concurrent/locks/StampedLock$WNode;->prev:Ljava/util/concurrent/locks/StampedLock$WNode; -Ljava/util/concurrent/locks/StampedLock$WNode;->status:I -Ljava/util/concurrent/locks/StampedLock$WNode;->thread:Ljava/lang/Thread; -Ljava/util/concurrent/locks/StampedLock;->ABITS:J -Ljava/util/concurrent/locks/StampedLock;->acquireRead(ZJ)J -Ljava/util/concurrent/locks/StampedLock;->acquireWrite(ZJ)J -Ljava/util/concurrent/locks/StampedLock;->CANCELLED:I -Ljava/util/concurrent/locks/StampedLock;->cancelWaiter(Ljava/util/concurrent/locks/StampedLock$WNode;Ljava/util/concurrent/locks/StampedLock$WNode;Z)J -Ljava/util/concurrent/locks/StampedLock;->getReadLockCount(J)I -Ljava/util/concurrent/locks/StampedLock;->HEAD_SPINS:I -Ljava/util/concurrent/locks/StampedLock;->INTERRUPTED:J -Ljava/util/concurrent/locks/StampedLock;->LG_READERS:I -Ljava/util/concurrent/locks/StampedLock;->MAX_HEAD_SPINS:I -Ljava/util/concurrent/locks/StampedLock;->NCPU:I -Ljava/util/concurrent/locks/StampedLock;->ORIGIN:J -Ljava/util/concurrent/locks/StampedLock;->OVERFLOW_YIELD_RATE:I -Ljava/util/concurrent/locks/StampedLock;->PARKBLOCKER:J -Ljava/util/concurrent/locks/StampedLock;->RBITS:J -Ljava/util/concurrent/locks/StampedLock;->readerOverflow:I -Ljava/util/concurrent/locks/StampedLock;->readLockView:Ljava/util/concurrent/locks/StampedLock$ReadLockView; -Ljava/util/concurrent/locks/StampedLock;->readWriteLockView:Ljava/util/concurrent/locks/StampedLock$ReadWriteLockView; -Ljava/util/concurrent/locks/StampedLock;->release(Ljava/util/concurrent/locks/StampedLock$WNode;)V -Ljava/util/concurrent/locks/StampedLock;->RFULL:J -Ljava/util/concurrent/locks/StampedLock;->RMODE:I -Ljava/util/concurrent/locks/StampedLock;->RUNIT:J -Ljava/util/concurrent/locks/StampedLock;->SBITS:J -Ljava/util/concurrent/locks/StampedLock;->SPINS:I -Ljava/util/concurrent/locks/StampedLock;->STATE:J -Ljava/util/concurrent/locks/StampedLock;->state:J -Ljava/util/concurrent/locks/StampedLock;->tryDecReaderOverflow(J)J -Ljava/util/concurrent/locks/StampedLock;->tryIncReaderOverflow(J)J -Ljava/util/concurrent/locks/StampedLock;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/locks/StampedLock;->unstampedUnlockRead()V -Ljava/util/concurrent/locks/StampedLock;->unstampedUnlockWrite()V -Ljava/util/concurrent/locks/StampedLock;->WAITING:I -Ljava/util/concurrent/locks/StampedLock;->WBIT:J -Ljava/util/concurrent/locks/StampedLock;->WCOWAIT:J -Ljava/util/concurrent/locks/StampedLock;->WHEAD:J -Ljava/util/concurrent/locks/StampedLock;->whead:Ljava/util/concurrent/locks/StampedLock$WNode; -Ljava/util/concurrent/locks/StampedLock;->WMODE:I -Ljava/util/concurrent/locks/StampedLock;->WNEXT:J -Ljava/util/concurrent/locks/StampedLock;->writeLockView:Ljava/util/concurrent/locks/StampedLock$WriteLockView; -Ljava/util/concurrent/locks/StampedLock;->WSTATUS:J -Ljava/util/concurrent/locks/StampedLock;->WTAIL:J -Ljava/util/concurrent/locks/StampedLock;->wtail:Ljava/util/concurrent/locks/StampedLock$WNode; -Ljava/util/concurrent/Phaser$QNode;-><init>(Ljava/util/concurrent/Phaser;IZZJ)V -Ljava/util/concurrent/Phaser$QNode;->deadline:J -Ljava/util/concurrent/Phaser$QNode;->interruptible:Z -Ljava/util/concurrent/Phaser$QNode;->nanos:J -Ljava/util/concurrent/Phaser$QNode;->next:Ljava/util/concurrent/Phaser$QNode; -Ljava/util/concurrent/Phaser$QNode;->phase:I -Ljava/util/concurrent/Phaser$QNode;->phaser:Ljava/util/concurrent/Phaser; -Ljava/util/concurrent/Phaser$QNode;->thread:Ljava/lang/Thread; -Ljava/util/concurrent/Phaser$QNode;->timed:Z -Ljava/util/concurrent/Phaser$QNode;->wasInterrupted:Z -Ljava/util/concurrent/Phaser;->abortWait(I)I -Ljava/util/concurrent/Phaser;->arrivedOf(J)I -Ljava/util/concurrent/Phaser;->badArrive(J)Ljava/lang/String; -Ljava/util/concurrent/Phaser;->badRegister(J)Ljava/lang/String; -Ljava/util/concurrent/Phaser;->COUNTS_MASK:J -Ljava/util/concurrent/Phaser;->doArrive(I)I -Ljava/util/concurrent/Phaser;->doRegister(I)I -Ljava/util/concurrent/Phaser;->EMPTY:I -Ljava/util/concurrent/Phaser;->evenQ:Ljava/util/concurrent/atomic/AtomicReference; -Ljava/util/concurrent/Phaser;->internalAwaitAdvance(ILjava/util/concurrent/Phaser$QNode;)I -Ljava/util/concurrent/Phaser;->MAX_PARTIES:I -Ljava/util/concurrent/Phaser;->MAX_PHASE:I -Ljava/util/concurrent/Phaser;->NCPU:I -Ljava/util/concurrent/Phaser;->oddQ:Ljava/util/concurrent/atomic/AtomicReference; -Ljava/util/concurrent/Phaser;->ONE_ARRIVAL:I -Ljava/util/concurrent/Phaser;->ONE_DEREGISTER:I -Ljava/util/concurrent/Phaser;->ONE_PARTY:I -Ljava/util/concurrent/Phaser;->parent:Ljava/util/concurrent/Phaser; -Ljava/util/concurrent/Phaser;->partiesOf(J)I -Ljava/util/concurrent/Phaser;->PARTIES_MASK:J -Ljava/util/concurrent/Phaser;->PARTIES_SHIFT:I -Ljava/util/concurrent/Phaser;->phaseOf(J)I -Ljava/util/concurrent/Phaser;->PHASE_SHIFT:I -Ljava/util/concurrent/Phaser;->queueFor(I)Ljava/util/concurrent/atomic/AtomicReference; -Ljava/util/concurrent/Phaser;->reconcileState()J -Ljava/util/concurrent/Phaser;->releaseWaiters(I)V -Ljava/util/concurrent/Phaser;->root:Ljava/util/concurrent/Phaser; -Ljava/util/concurrent/Phaser;->SPINS_PER_ARRIVAL:I -Ljava/util/concurrent/Phaser;->STATE:J -Ljava/util/concurrent/Phaser;->state:J -Ljava/util/concurrent/Phaser;->stateToString(J)Ljava/lang/String; -Ljava/util/concurrent/Phaser;->TERMINATION_BIT:J -Ljava/util/concurrent/Phaser;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/Phaser;->unarrivedOf(J)I -Ljava/util/concurrent/Phaser;->UNARRIVED_MASK:I -Ljava/util/concurrent/PriorityBlockingQueue$Itr;->array:[Ljava/lang/Object; -Ljava/util/concurrent/PriorityBlockingQueue$Itr;->cursor:I -Ljava/util/concurrent/PriorityBlockingQueue$Itr;->lastRet:I -Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;-><init>(Ljava/util/concurrent/PriorityBlockingQueue;[Ljava/lang/Object;II)V -Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->array:[Ljava/lang/Object; -Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->fence:I -Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->getFence()I -Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->index:I -Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->queue:Ljava/util/concurrent/PriorityBlockingQueue; -Ljava/util/concurrent/PriorityBlockingQueue$PBQSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/concurrent/PriorityBlockingQueue;->allocationSpinLock:I -Ljava/util/concurrent/PriorityBlockingQueue;->ALLOCATIONSPINLOCK:J -Ljava/util/concurrent/PriorityBlockingQueue;->comparator:Ljava/util/Comparator; -Ljava/util/concurrent/PriorityBlockingQueue;->DEFAULT_INITIAL_CAPACITY:I -Ljava/util/concurrent/PriorityBlockingQueue;->heapify()V -Ljava/util/concurrent/PriorityBlockingQueue;->indexOf(Ljava/lang/Object;)I -Ljava/util/concurrent/PriorityBlockingQueue;->MAX_ARRAY_SIZE:I -Ljava/util/concurrent/PriorityBlockingQueue;->q:Ljava/util/PriorityQueue; -Ljava/util/concurrent/PriorityBlockingQueue;->queue:[Ljava/lang/Object; -Ljava/util/concurrent/PriorityBlockingQueue;->removeAt(I)V -Ljava/util/concurrent/PriorityBlockingQueue;->removeEQ(Ljava/lang/Object;)V -Ljava/util/concurrent/PriorityBlockingQueue;->siftDownComparable(ILjava/lang/Object;[Ljava/lang/Object;I)V -Ljava/util/concurrent/PriorityBlockingQueue;->siftDownUsingComparator(ILjava/lang/Object;[Ljava/lang/Object;ILjava/util/Comparator;)V -Ljava/util/concurrent/PriorityBlockingQueue;->siftUpComparable(ILjava/lang/Object;[Ljava/lang/Object;)V -Ljava/util/concurrent/PriorityBlockingQueue;->siftUpUsingComparator(ILjava/lang/Object;[Ljava/lang/Object;Ljava/util/Comparator;)V -Ljava/util/concurrent/PriorityBlockingQueue;->size:I -Ljava/util/concurrent/PriorityBlockingQueue;->tryGrow([Ljava/lang/Object;I)V -Ljava/util/concurrent/PriorityBlockingQueue;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/RecursiveTask;->result:Ljava/lang/Object; -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->array:[Ljava/util/concurrent/RunnableScheduledFuture; -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->cursor:I -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->lastRet:I -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;-><init>()V -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->add(Ljava/lang/Runnable;)Z -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->available:Ljava/util/concurrent/locks/Condition; -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->drainTo(Ljava/util/Collection;)I -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->drainTo(Ljava/util/Collection;I)I -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->finishPoll(Ljava/util/concurrent/RunnableScheduledFuture;)Ljava/util/concurrent/RunnableScheduledFuture; -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->grow()V -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->indexOf(Ljava/lang/Object;)I -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->INITIAL_CAPACITY:I -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->leader:Ljava/lang/Thread; -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->lock:Ljava/util/concurrent/locks/ReentrantLock; -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->offer(Ljava/lang/Runnable;)Z -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->offer(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Z -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->peekExpired()Ljava/util/concurrent/RunnableScheduledFuture; -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->put(Ljava/lang/Runnable;)V -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->queue:[Ljava/util/concurrent/RunnableScheduledFuture; -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->setIndex(Ljava/util/concurrent/RunnableScheduledFuture;I)V -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftDown(ILjava/util/concurrent/RunnableScheduledFuture;)V -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftUp(ILjava/util/concurrent/RunnableScheduledFuture;)V -Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->size:I -Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->compareTo(Ljava/util/concurrent/Delayed;)I -Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->heapIndex:I -Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->outerTask:Ljava/util/concurrent/RunnableScheduledFuture; -Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->period:J -Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->sequenceNumber:J -Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->setNextRunTime()V -Ljava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->time:J -Ljava/util/concurrent/ScheduledThreadPoolExecutor;->canRunInCurrentRunState(Z)Z -Ljava/util/concurrent/ScheduledThreadPoolExecutor;->continueExistingPeriodicTasksAfterShutdown:Z -Ljava/util/concurrent/ScheduledThreadPoolExecutor;->DEFAULT_KEEPALIVE_MILLIS:J -Ljava/util/concurrent/ScheduledThreadPoolExecutor;->delayedExecute(Ljava/util/concurrent/RunnableScheduledFuture;)V -Ljava/util/concurrent/ScheduledThreadPoolExecutor;->executeExistingDelayedTasksAfterShutdown:Z -Ljava/util/concurrent/ScheduledThreadPoolExecutor;->onShutdown()V -Ljava/util/concurrent/ScheduledThreadPoolExecutor;->overflowFree(J)J -Ljava/util/concurrent/ScheduledThreadPoolExecutor;->reExecutePeriodic(Ljava/util/concurrent/RunnableScheduledFuture;)V -Ljava/util/concurrent/ScheduledThreadPoolExecutor;->removeOnCancel:Z -Ljava/util/concurrent/ScheduledThreadPoolExecutor;->sequencer:Ljava/util/concurrent/atomic/AtomicLong; -Ljava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(J)J -Ljava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(JLjava/util/concurrent/TimeUnit;)J -Ljava/util/concurrent/Semaphore$FairSync;-><init>(I)V -Ljava/util/concurrent/Semaphore$NonfairSync;-><init>(I)V -Ljava/util/concurrent/Semaphore$Sync;-><init>(I)V -Ljava/util/concurrent/Semaphore$Sync;->drainPermits()I -Ljava/util/concurrent/Semaphore$Sync;->getPermits()I -Ljava/util/concurrent/Semaphore$Sync;->nonfairTryAcquireShared(I)I -Ljava/util/concurrent/Semaphore$Sync;->reducePermits(I)V -Ljava/util/concurrent/Semaphore;->sync:Ljava/util/concurrent/Semaphore$Sync; -Ljava/util/concurrent/SynchronousQueue$FifoWaitQueue;-><init>()V -Ljava/util/concurrent/SynchronousQueue$LifoWaitQueue;-><init>()V -Ljava/util/concurrent/SynchronousQueue$Transferer;-><init>()V -Ljava/util/concurrent/SynchronousQueue$Transferer;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object; -Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;-><init>(Ljava/lang/Object;Z)V -Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->casItem(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->casNext(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)Z -Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->isCancelled()Z -Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->isData:Z -Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->isOffList()Z -Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->ITEM:J -Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->item:Ljava/lang/Object; -Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->NEXT:J -Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->next:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode; -Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->tryCancel(Ljava/lang/Object;)V -Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;->waiter:Ljava/lang/Thread; -Ljava/util/concurrent/SynchronousQueue$TransferQueue;-><init>()V -Ljava/util/concurrent/SynchronousQueue$TransferQueue;->advanceHead(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V -Ljava/util/concurrent/SynchronousQueue$TransferQueue;->advanceTail(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V -Ljava/util/concurrent/SynchronousQueue$TransferQueue;->awaitFulfill(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/lang/Object;ZJ)Ljava/lang/Object; -Ljava/util/concurrent/SynchronousQueue$TransferQueue;->casCleanMe(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)Z -Ljava/util/concurrent/SynchronousQueue$TransferQueue;->clean(Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode;)V -Ljava/util/concurrent/SynchronousQueue$TransferQueue;->CLEANME:J -Ljava/util/concurrent/SynchronousQueue$TransferQueue;->cleanMe:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode; -Ljava/util/concurrent/SynchronousQueue$TransferQueue;->HEAD:J -Ljava/util/concurrent/SynchronousQueue$TransferQueue;->head:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode; -Ljava/util/concurrent/SynchronousQueue$TransferQueue;->TAIL:J -Ljava/util/concurrent/SynchronousQueue$TransferQueue;->tail:Ljava/util/concurrent/SynchronousQueue$TransferQueue$QNode; -Ljava/util/concurrent/SynchronousQueue$TransferQueue;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object; -Ljava/util/concurrent/SynchronousQueue$TransferQueue;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;-><init>(Ljava/lang/Object;)V -Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->casNext(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z -Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->isCancelled()Z -Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->item:Ljava/lang/Object; -Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->MATCH:J -Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->match:Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode; -Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->mode:I -Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->NEXT:J -Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->next:Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode; -Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryCancel()V -Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryMatch(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z -Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;->waiter:Ljava/lang/Thread; -Ljava/util/concurrent/SynchronousQueue$TransferStack;-><init>()V -Ljava/util/concurrent/SynchronousQueue$TransferStack;->awaitFulfill(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;ZJ)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode; -Ljava/util/concurrent/SynchronousQueue$TransferStack;->casHead(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z -Ljava/util/concurrent/SynchronousQueue$TransferStack;->clean(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)V -Ljava/util/concurrent/SynchronousQueue$TransferStack;->DATA:I -Ljava/util/concurrent/SynchronousQueue$TransferStack;->FULFILLING:I -Ljava/util/concurrent/SynchronousQueue$TransferStack;->HEAD:J -Ljava/util/concurrent/SynchronousQueue$TransferStack;->head:Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode; -Ljava/util/concurrent/SynchronousQueue$TransferStack;->isFulfilling(I)Z -Ljava/util/concurrent/SynchronousQueue$TransferStack;->REQUEST:I -Ljava/util/concurrent/SynchronousQueue$TransferStack;->shouldSpin(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z -Ljava/util/concurrent/SynchronousQueue$TransferStack;->snode(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/lang/Object;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;I)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode; -Ljava/util/concurrent/SynchronousQueue$TransferStack;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object; -Ljava/util/concurrent/SynchronousQueue$TransferStack;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/SynchronousQueue$WaitQueue;-><init>()V -Ljava/util/concurrent/SynchronousQueue;->MAX_TIMED_SPINS:I -Ljava/util/concurrent/SynchronousQueue;->MAX_UNTIMED_SPINS:I -Ljava/util/concurrent/SynchronousQueue;->qlock:Ljava/util/concurrent/locks/ReentrantLock; -Ljava/util/concurrent/SynchronousQueue;->SPIN_FOR_TIMEOUT_THRESHOLD:J -Ljava/util/concurrent/SynchronousQueue;->transferer:Ljava/util/concurrent/SynchronousQueue$Transferer; -Ljava/util/concurrent/SynchronousQueue;->waitingConsumers:Ljava/util/concurrent/SynchronousQueue$WaitQueue; -Ljava/util/concurrent/SynchronousQueue;->waitingProducers:Ljava/util/concurrent/SynchronousQueue$WaitQueue; -Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;-><init>(JJDD)V -Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->bound:D -Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->fence:J -Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->index:J -Ljava/util/concurrent/ThreadLocalRandom$RandomDoublesSpliterator;->origin:D -Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;-><init>(JJII)V -Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->bound:I -Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->fence:J -Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->index:J -Ljava/util/concurrent/ThreadLocalRandom$RandomIntsSpliterator;->origin:I -Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;-><init>(JJJJ)V -Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->bound:J -Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->fence:J -Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->index:J -Ljava/util/concurrent/ThreadLocalRandom$RandomLongsSpliterator;->origin:J -Ljava/util/concurrent/ThreadLocalRandom;-><init>()V -Ljava/util/concurrent/ThreadLocalRandom;->advanceProbe(I)I -Ljava/util/concurrent/ThreadLocalRandom;->BAD_BOUND:Ljava/lang/String; -Ljava/util/concurrent/ThreadLocalRandom;->BAD_RANGE:Ljava/lang/String; -Ljava/util/concurrent/ThreadLocalRandom;->BAD_SIZE:Ljava/lang/String; -Ljava/util/concurrent/ThreadLocalRandom;->DOUBLE_UNIT:D -Ljava/util/concurrent/ThreadLocalRandom;->FLOAT_UNIT:F -Ljava/util/concurrent/ThreadLocalRandom;->GAMMA:J -Ljava/util/concurrent/ThreadLocalRandom;->getProbe()I -Ljava/util/concurrent/ThreadLocalRandom;->initialized:Z -Ljava/util/concurrent/ThreadLocalRandom;->instance:Ljava/util/concurrent/ThreadLocalRandom; -Ljava/util/concurrent/ThreadLocalRandom;->internalNextDouble(DD)D -Ljava/util/concurrent/ThreadLocalRandom;->internalNextInt(II)I -Ljava/util/concurrent/ThreadLocalRandom;->internalNextLong(JJ)J -Ljava/util/concurrent/ThreadLocalRandom;->localInit()V -Ljava/util/concurrent/ThreadLocalRandom;->mix32(J)I -Ljava/util/concurrent/ThreadLocalRandom;->mix64(J)J -Ljava/util/concurrent/ThreadLocalRandom;->nextLocalGaussian:Ljava/lang/ThreadLocal; -Ljava/util/concurrent/ThreadLocalRandom;->nextSecondarySeed()I -Ljava/util/concurrent/ThreadLocalRandom;->nextSeed()J -Ljava/util/concurrent/ThreadLocalRandom;->PROBE:J -Ljava/util/concurrent/ThreadLocalRandom;->probeGenerator:Ljava/util/concurrent/atomic/AtomicInteger; -Ljava/util/concurrent/ThreadLocalRandom;->PROBE_INCREMENT:I -Ljava/util/concurrent/ThreadLocalRandom;->SECONDARY:J -Ljava/util/concurrent/ThreadLocalRandom;->SEED:J -Ljava/util/concurrent/ThreadLocalRandom;->seeder:Ljava/util/concurrent/atomic/AtomicLong; -Ljava/util/concurrent/ThreadLocalRandom;->SEEDER_INCREMENT:J -Ljava/util/concurrent/ThreadLocalRandom;->U:Lsun/misc/Unsafe; -Ljava/util/concurrent/ThreadPoolExecutor$Worker;->completedTasks:J -Ljava/util/concurrent/ThreadPoolExecutor$Worker;->firstTask:Ljava/lang/Runnable; -Ljava/util/concurrent/ThreadPoolExecutor$Worker;->interruptIfStarted()V -Ljava/util/concurrent/ThreadPoolExecutor$Worker;->isLocked()Z -Ljava/util/concurrent/ThreadPoolExecutor$Worker;->lock()V -Ljava/util/concurrent/ThreadPoolExecutor$Worker;->thread:Ljava/lang/Thread; -Ljava/util/concurrent/ThreadPoolExecutor$Worker;->tryLock()Z -Ljava/util/concurrent/ThreadPoolExecutor$Worker;->unlock()V -Ljava/util/concurrent/ThreadPoolExecutor;->addWorker(Ljava/lang/Runnable;Z)Z -Ljava/util/concurrent/ThreadPoolExecutor;->addWorkerFailed(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V -Ljava/util/concurrent/ThreadPoolExecutor;->advanceRunState(I)V -Ljava/util/concurrent/ThreadPoolExecutor;->CAPACITY:I -Ljava/util/concurrent/ThreadPoolExecutor;->checkShutdownAccess()V -Ljava/util/concurrent/ThreadPoolExecutor;->compareAndDecrementWorkerCount(I)Z -Ljava/util/concurrent/ThreadPoolExecutor;->compareAndIncrementWorkerCount(I)Z -Ljava/util/concurrent/ThreadPoolExecutor;->completedTaskCount:J -Ljava/util/concurrent/ThreadPoolExecutor;->corePoolSize:I -Ljava/util/concurrent/ThreadPoolExecutor;->COUNT_BITS:I -Ljava/util/concurrent/ThreadPoolExecutor;->ctlOf(II)I -Ljava/util/concurrent/ThreadPoolExecutor;->decrementWorkerCount()V -Ljava/util/concurrent/ThreadPoolExecutor;->drainQueue()Ljava/util/List; -Ljava/util/concurrent/ThreadPoolExecutor;->ensurePrestart()V -Ljava/util/concurrent/ThreadPoolExecutor;->getTask()Ljava/lang/Runnable; -Ljava/util/concurrent/ThreadPoolExecutor;->handler:Ljava/util/concurrent/RejectedExecutionHandler; -Ljava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers()V -Ljava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers(Z)V -Ljava/util/concurrent/ThreadPoolExecutor;->interruptWorkers()V -Ljava/util/concurrent/ThreadPoolExecutor;->isRunning(I)Z -Ljava/util/concurrent/ThreadPoolExecutor;->isRunningOrShutdown(Z)Z -Ljava/util/concurrent/ThreadPoolExecutor;->keepAliveTime:J -Ljava/util/concurrent/ThreadPoolExecutor;->largestPoolSize:I -Ljava/util/concurrent/ThreadPoolExecutor;->maximumPoolSize:I -Ljava/util/concurrent/ThreadPoolExecutor;->ONLY_ONE:Z -Ljava/util/concurrent/ThreadPoolExecutor;->onShutdown()V -Ljava/util/concurrent/ThreadPoolExecutor;->processWorkerExit(Ljava/util/concurrent/ThreadPoolExecutor$Worker;Z)V -Ljava/util/concurrent/ThreadPoolExecutor;->reject(Ljava/lang/Runnable;)V -Ljava/util/concurrent/ThreadPoolExecutor;->RUNNING:I -Ljava/util/concurrent/ThreadPoolExecutor;->runStateAtLeast(II)Z -Ljava/util/concurrent/ThreadPoolExecutor;->runStateLessThan(II)Z -Ljava/util/concurrent/ThreadPoolExecutor;->runStateOf(I)I -Ljava/util/concurrent/ThreadPoolExecutor;->runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V -Ljava/util/concurrent/ThreadPoolExecutor;->SHUTDOWN:I -Ljava/util/concurrent/ThreadPoolExecutor;->shutdownPerm:Ljava/lang/RuntimePermission; -Ljava/util/concurrent/ThreadPoolExecutor;->STOP:I -Ljava/util/concurrent/ThreadPoolExecutor;->TERMINATED:I -Ljava/util/concurrent/ThreadPoolExecutor;->termination:Ljava/util/concurrent/locks/Condition; -Ljava/util/concurrent/ThreadPoolExecutor;->threadFactory:Ljava/util/concurrent/ThreadFactory; -Ljava/util/concurrent/ThreadPoolExecutor;->TIDYING:I -Ljava/util/concurrent/ThreadPoolExecutor;->tryTerminate()V -Ljava/util/concurrent/ThreadPoolExecutor;->workerCountOf(I)I -Ljava/util/concurrent/ThreadPoolExecutor;->workers:Ljava/util/HashSet; -Ljava/util/concurrent/ThreadPoolExecutor;->workQueue:Ljava/util/concurrent/BlockingQueue; -Ljava/util/concurrent/TimeUnit;->C0:J -Ljava/util/concurrent/TimeUnit;->C1:J -Ljava/util/concurrent/TimeUnit;->C2:J -Ljava/util/concurrent/TimeUnit;->C3:J -Ljava/util/concurrent/TimeUnit;->C4:J -Ljava/util/concurrent/TimeUnit;->C5:J -Ljava/util/concurrent/TimeUnit;->C6:J -Ljava/util/concurrent/TimeUnit;->excessNanos(JJ)I -Ljava/util/concurrent/TimeUnit;->MAX:J -Ljava/util/concurrent/TimeUnit;->x(JJJ)J -Ljava/util/Currency;-><init>(Landroid/icu/util/Currency;)V -Ljava/util/Currency;->available:Ljava/util/HashSet; -Ljava/util/Currency;->currencyCode:Ljava/lang/String; -Ljava/util/Currency;->icuCurrency:Landroid/icu/util/Currency; -Ljava/util/Currency;->instances:Ljava/util/concurrent/ConcurrentMap; -Ljava/util/Date;->cdate:Lsun/util/calendar/BaseCalendar$Date; -Ljava/util/Date;->convertToAbbr(Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/lang/StringBuilder; -Ljava/util/Date;->defaultCenturyStart:I -Ljava/util/Date;->fastTime:J -Ljava/util/Date;->gcal:Lsun/util/calendar/BaseCalendar; -Ljava/util/Date;->getCalendarDate()Lsun/util/calendar/BaseCalendar$Date; -Ljava/util/Date;->getCalendarSystem(I)Lsun/util/calendar/BaseCalendar; -Ljava/util/Date;->getCalendarSystem(J)Lsun/util/calendar/BaseCalendar; -Ljava/util/Date;->getCalendarSystem(Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar; -Ljava/util/Date;->getJulianCalendar()Lsun/util/calendar/BaseCalendar; -Ljava/util/Date;->getMillisOf(Ljava/util/Date;)J -Ljava/util/Date;->getTimeImpl()J -Ljava/util/Date;->jcal:Lsun/util/calendar/BaseCalendar; -Ljava/util/Date;->normalize()Lsun/util/calendar/BaseCalendar$Date; -Ljava/util/Date;->normalize(Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar$Date; -Ljava/util/Date;->ttb:[I -Ljava/util/Date;->wtb:[Ljava/lang/String; -Ljava/util/DoubleSummaryStatistics;->count:J -Ljava/util/DoubleSummaryStatistics;->max:D -Ljava/util/DoubleSummaryStatistics;->min:D -Ljava/util/DoubleSummaryStatistics;->simpleSum:D -Ljava/util/DoubleSummaryStatistics;->sum:D -Ljava/util/DoubleSummaryStatistics;->sumCompensation:D -Ljava/util/DoubleSummaryStatistics;->sumWithCompensation(D)V -Ljava/util/DuplicateFormatFlagsException;->flags:Ljava/lang/String; -Ljava/util/EnumMap$EntryIterator$Entry;->checkIndexForEntryUse()V -Ljava/util/EnumMap$EntryIterator$Entry;->index:I -Ljava/util/EnumMap$EntryIterator;->lastReturnedEntry:Ljava/util/EnumMap$EntryIterator$Entry; -Ljava/util/EnumMap$EntrySet;->fillEntryArray([Ljava/lang/Object;)[Ljava/lang/Object; -Ljava/util/EnumMap$EnumMapIterator;->checkLastReturnedIndex()V -Ljava/util/EnumMap$EnumMapIterator;->index:I -Ljava/util/EnumMap$EnumMapIterator;->lastReturnedIndex:I -Ljava/util/EnumMap;->containsMapping(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/EnumMap;->entryHashCode(I)I -Ljava/util/EnumMap;->entrySet:Ljava/util/Set; -Ljava/util/EnumMap;->equals(Ljava/util/EnumMap;)Z -Ljava/util/EnumMap;->getKeyUniverse(Ljava/lang/Class;)[Ljava/lang/Enum; -Ljava/util/EnumMap;->isValidKey(Ljava/lang/Object;)Z -Ljava/util/EnumMap;->keyUniverse:[Ljava/lang/Enum; -Ljava/util/EnumMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/EnumMap;->NULL:Ljava/lang/Object; -Ljava/util/EnumMap;->removeMapping(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/EnumMap;->size:I -Ljava/util/EnumMap;->typeCheck(Ljava/lang/Enum;)V -Ljava/util/EnumMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/EnumMap;->vals:[Ljava/lang/Object; -Ljava/util/EnumMap;->ZERO_LENGTH_ENUM_ARRAY:[Ljava/lang/Enum; -Ljava/util/EnumSet$SerializationProxy;-><init>(Ljava/util/EnumSet;)V -Ljava/util/EnumSet$SerializationProxy;->elements:[Ljava/lang/Enum; -Ljava/util/EnumSet$SerializationProxy;->elementType:Ljava/lang/Class; -Ljava/util/EnumSet;-><init>(Ljava/lang/Class;[Ljava/lang/Enum;)V -Ljava/util/EnumSet;->addAll()V -Ljava/util/EnumSet;->addRange(Ljava/lang/Enum;Ljava/lang/Enum;)V -Ljava/util/EnumSet;->complement()V -Ljava/util/EnumSet;->getUniverse(Ljava/lang/Class;)[Ljava/lang/Enum; -Ljava/util/EnumSet;->typeCheck(Ljava/lang/Enum;)V -Ljava/util/EnumSet;->universe:[Ljava/lang/Enum; -Ljava/util/EnumSet;->ZERO_LENGTH_ENUM_ARRAY:[Ljava/lang/Enum; -Ljava/util/EventListenerProxy;->listener:Ljava/util/EventListener; -Ljava/util/FormatFlagsConversionMismatchException;->c:C -Ljava/util/FormatFlagsConversionMismatchException;->f:Ljava/lang/String; -Ljava/util/FormattableFlags;-><init>()V -Ljava/util/Formatter$Conversion;-><init>()V -Ljava/util/Formatter$Conversion;->BOOLEAN:C -Ljava/util/Formatter$Conversion;->BOOLEAN_UPPER:C -Ljava/util/Formatter$Conversion;->CHARACTER:C -Ljava/util/Formatter$Conversion;->CHARACTER_UPPER:C -Ljava/util/Formatter$Conversion;->DATE_TIME:C -Ljava/util/Formatter$Conversion;->DATE_TIME_UPPER:C -Ljava/util/Formatter$Conversion;->DECIMAL_FLOAT:C -Ljava/util/Formatter$Conversion;->DECIMAL_INTEGER:C -Ljava/util/Formatter$Conversion;->GENERAL:C -Ljava/util/Formatter$Conversion;->GENERAL_UPPER:C -Ljava/util/Formatter$Conversion;->HASHCODE:C -Ljava/util/Formatter$Conversion;->HASHCODE_UPPER:C -Ljava/util/Formatter$Conversion;->HEXADECIMAL_FLOAT:C -Ljava/util/Formatter$Conversion;->HEXADECIMAL_FLOAT_UPPER:C -Ljava/util/Formatter$Conversion;->HEXADECIMAL_INTEGER:C -Ljava/util/Formatter$Conversion;->HEXADECIMAL_INTEGER_UPPER:C -Ljava/util/Formatter$Conversion;->isCharacter(C)Z -Ljava/util/Formatter$Conversion;->isFloat(C)Z -Ljava/util/Formatter$Conversion;->isGeneral(C)Z -Ljava/util/Formatter$Conversion;->isInteger(C)Z -Ljava/util/Formatter$Conversion;->isText(C)Z -Ljava/util/Formatter$Conversion;->isValid(C)Z -Ljava/util/Formatter$Conversion;->LINE_SEPARATOR:C -Ljava/util/Formatter$Conversion;->OCTAL_INTEGER:C -Ljava/util/Formatter$Conversion;->PERCENT_SIGN:C -Ljava/util/Formatter$Conversion;->SCIENTIFIC:C -Ljava/util/Formatter$Conversion;->SCIENTIFIC_UPPER:C -Ljava/util/Formatter$Conversion;->STRING:C -Ljava/util/Formatter$Conversion;->STRING_UPPER:C -Ljava/util/Formatter$DateTime;-><init>()V -Ljava/util/Formatter$DateTime;->AM_PM:C -Ljava/util/Formatter$DateTime;->CENTURY:C -Ljava/util/Formatter$DateTime;->DATE:C -Ljava/util/Formatter$DateTime;->DATE_TIME:C -Ljava/util/Formatter$DateTime;->DAY_OF_MONTH:C -Ljava/util/Formatter$DateTime;->DAY_OF_MONTH_0:C -Ljava/util/Formatter$DateTime;->DAY_OF_YEAR:C -Ljava/util/Formatter$DateTime;->HOUR:C -Ljava/util/Formatter$DateTime;->HOUR_0:C -Ljava/util/Formatter$DateTime;->HOUR_OF_DAY:C -Ljava/util/Formatter$DateTime;->HOUR_OF_DAY_0:C -Ljava/util/Formatter$DateTime;->ISO_STANDARD_DATE:C -Ljava/util/Formatter$DateTime;->isValid(C)Z -Ljava/util/Formatter$DateTime;->MILLISECOND:C -Ljava/util/Formatter$DateTime;->MILLISECOND_SINCE_EPOCH:C -Ljava/util/Formatter$DateTime;->MINUTE:C -Ljava/util/Formatter$DateTime;->MONTH:C -Ljava/util/Formatter$DateTime;->NAME_OF_DAY:C -Ljava/util/Formatter$DateTime;->NAME_OF_DAY_ABBREV:C -Ljava/util/Formatter$DateTime;->NAME_OF_MONTH:C -Ljava/util/Formatter$DateTime;->NAME_OF_MONTH_ABBREV:C -Ljava/util/Formatter$DateTime;->NAME_OF_MONTH_ABBREV_X:C -Ljava/util/Formatter$DateTime;->NANOSECOND:C -Ljava/util/Formatter$DateTime;->SECOND:C -Ljava/util/Formatter$DateTime;->SECONDS_SINCE_EPOCH:C -Ljava/util/Formatter$DateTime;->TIME:C -Ljava/util/Formatter$DateTime;->TIME_12_HOUR:C -Ljava/util/Formatter$DateTime;->TIME_24_HOUR:C -Ljava/util/Formatter$DateTime;->YEAR_2:C -Ljava/util/Formatter$DateTime;->YEAR_4:C -Ljava/util/Formatter$DateTime;->ZONE:C -Ljava/util/Formatter$DateTime;->ZONE_NUMERIC:C -Ljava/util/Formatter$FixedString;->index()I -Ljava/util/Formatter$FixedString;->print(Ljava/lang/Object;Ljava/util/Locale;)V -Ljava/util/Formatter$FixedString;->s:Ljava/lang/String; -Ljava/util/Formatter$Flags;-><init>(I)V -Ljava/util/Formatter$Flags;->add(Ljava/util/Formatter$Flags;)Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->ALTERNATE:Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->contains(Ljava/util/Formatter$Flags;)Z -Ljava/util/Formatter$Flags;->dup()Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->flags:I -Ljava/util/Formatter$Flags;->GROUP:Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->LEADING_SPACE:Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->LEFT_JUSTIFY:Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->NONE:Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->PARENTHESES:Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->parse(C)Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->parse(Ljava/lang/String;)Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->PLUS:Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->PREVIOUS:Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->remove(Ljava/util/Formatter$Flags;)Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->toString(Ljava/util/Formatter$Flags;)Ljava/lang/String; -Ljava/util/Formatter$Flags;->UPPERCASE:Ljava/util/Formatter$Flags; -Ljava/util/Formatter$Flags;->valueOf()I -Ljava/util/Formatter$Flags;->ZERO_PAD:Ljava/util/Formatter$Flags; -Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->dot:Z -Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->exp:Ljava/lang/StringBuilder; -Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->exponent()[C -Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->hasDot()Z -Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->layout(Ljava/math/BigInteger;ILjava/util/Formatter$BigDecimalLayoutForm;)V -Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->layoutChars()[C -Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->mant:Ljava/lang/StringBuilder; -Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->mantissa()[C -Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->scale()I -Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->scale:I -Ljava/util/Formatter$FormatSpecifier$BigDecimalLayout;->toCharArray(Ljava/lang/StringBuilder;)[C -Ljava/util/Formatter$FormatSpecifier;->addDot([C)[C -Ljava/util/Formatter$FormatSpecifier;->addZeros([CI)[C -Ljava/util/Formatter$FormatSpecifier;->adjustWidth(ILjava/util/Formatter$Flags;Z)I -Ljava/util/Formatter$FormatSpecifier;->c:C -Ljava/util/Formatter$FormatSpecifier;->checkCharacter()V -Ljava/util/Formatter$FormatSpecifier;->checkDateTime()V -Ljava/util/Formatter$FormatSpecifier;->checkFloat()V -Ljava/util/Formatter$FormatSpecifier;->checkGeneral()V -Ljava/util/Formatter$FormatSpecifier;->checkInteger()V -Ljava/util/Formatter$FormatSpecifier;->checkNumeric()V -Ljava/util/Formatter$FormatSpecifier;->checkText()V -Ljava/util/Formatter$FormatSpecifier;->conversion()C -Ljava/util/Formatter$FormatSpecifier;->conversion(Ljava/lang/String;)C -Ljava/util/Formatter$FormatSpecifier;->dt:Z -Ljava/util/Formatter$FormatSpecifier;->f:Ljava/util/Formatter$Flags; -Ljava/util/Formatter$FormatSpecifier;->failConversion(CLjava/lang/Object;)V -Ljava/util/Formatter$FormatSpecifier;->failMismatch(Ljava/util/Formatter$Flags;C)V -Ljava/util/Formatter$FormatSpecifier;->flags()Ljava/util/Formatter$Flags; -Ljava/util/Formatter$FormatSpecifier;->flags(Ljava/lang/String;)Ljava/util/Formatter$Flags; -Ljava/util/Formatter$FormatSpecifier;->getZero(Ljava/util/Locale;)C -Ljava/util/Formatter$FormatSpecifier;->hexDouble(DI)Ljava/lang/String; -Ljava/util/Formatter$FormatSpecifier;->index()I -Ljava/util/Formatter$FormatSpecifier;->index(Ljava/lang/String;)I -Ljava/util/Formatter$FormatSpecifier;->index:I -Ljava/util/Formatter$FormatSpecifier;->justify(Ljava/lang/String;)Ljava/lang/String; -Ljava/util/Formatter$FormatSpecifier;->leadingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder; -Ljava/util/Formatter$FormatSpecifier;->localizedMagnitude(Ljava/lang/StringBuilder;JLjava/util/Formatter$Flags;ILjava/util/Locale;)Ljava/lang/StringBuilder; -Ljava/util/Formatter$FormatSpecifier;->localizedMagnitude(Ljava/lang/StringBuilder;[CLjava/util/Formatter$Flags;ILjava/util/Locale;)Ljava/lang/StringBuilder; -Ljava/util/Formatter$FormatSpecifier;->precision()I -Ljava/util/Formatter$FormatSpecifier;->precision(Ljava/lang/String;)I -Ljava/util/Formatter$FormatSpecifier;->precision:I -Ljava/util/Formatter$FormatSpecifier;->print(BLjava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->print(DLjava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->print(FLjava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->print(ILjava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->print(JLjava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/Object;Ljava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/String;)V -Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;DLjava/util/Locale;Ljava/util/Formatter$Flags;CIZ)V -Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/math/BigDecimal;Ljava/util/Locale;Ljava/util/Formatter$Flags;CIZ)V -Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/time/temporal/TemporalAccessor;CLjava/util/Locale;)Ljava/lang/Appendable; -Ljava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/util/Calendar;CLjava/util/Locale;)Ljava/lang/Appendable; -Ljava/util/Formatter$FormatSpecifier;->print(Ljava/math/BigDecimal;Ljava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->print(Ljava/math/BigInteger;Ljava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->print(Ljava/time/temporal/TemporalAccessor;CLjava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->print(Ljava/util/Calendar;CLjava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->print(SLjava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->printBoolean(Ljava/lang/Object;)V -Ljava/util/Formatter$FormatSpecifier;->printCharacter(Ljava/lang/Object;)V -Ljava/util/Formatter$FormatSpecifier;->printDateTime(Ljava/lang/Object;Ljava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->printFloat(Ljava/lang/Object;Ljava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->printHashCode(Ljava/lang/Object;)V -Ljava/util/Formatter$FormatSpecifier;->printInteger(Ljava/lang/Object;Ljava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->printString(Ljava/lang/Object;Ljava/util/Locale;)V -Ljava/util/Formatter$FormatSpecifier;->trailingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder; -Ljava/util/Formatter$FormatSpecifier;->trailingZeros([CI)[C -Ljava/util/Formatter$FormatSpecifier;->width()I -Ljava/util/Formatter$FormatSpecifier;->width(Ljava/lang/String;)I -Ljava/util/Formatter$FormatSpecifier;->width:I -Ljava/util/Formatter$FormatSpecifierParser;->advance()C -Ljava/util/Formatter$FormatSpecifierParser;->back(I)V -Ljava/util/Formatter$FormatSpecifierParser;->conv:Ljava/lang/String; -Ljava/util/Formatter$FormatSpecifierParser;->cursor:I -Ljava/util/Formatter$FormatSpecifierParser;->FLAGS:Ljava/lang/String; -Ljava/util/Formatter$FormatSpecifierParser;->flags:Ljava/lang/String; -Ljava/util/Formatter$FormatSpecifierParser;->format:Ljava/lang/String; -Ljava/util/Formatter$FormatSpecifierParser;->fs:Ljava/util/Formatter$FormatSpecifier; -Ljava/util/Formatter$FormatSpecifierParser;->getEndIdx()I -Ljava/util/Formatter$FormatSpecifierParser;->getFormatSpecifier()Ljava/util/Formatter$FormatSpecifier; -Ljava/util/Formatter$FormatSpecifierParser;->index:Ljava/lang/String; -Ljava/util/Formatter$FormatSpecifierParser;->isEnd()Z -Ljava/util/Formatter$FormatSpecifierParser;->nextInt()Ljava/lang/String; -Ljava/util/Formatter$FormatSpecifierParser;->nextIsInt()Z -Ljava/util/Formatter$FormatSpecifierParser;->peek()C -Ljava/util/Formatter$FormatSpecifierParser;->precision:Ljava/lang/String; -Ljava/util/Formatter$FormatSpecifierParser;->tT:Ljava/lang/String; -Ljava/util/Formatter$FormatSpecifierParser;->width:Ljava/lang/String; -Ljava/util/Formatter$FormatString;->index()I -Ljava/util/Formatter$FormatString;->print(Ljava/lang/Object;Ljava/util/Locale;)V -Ljava/util/Formatter;-><init>(Ljava/nio/charset/Charset;Ljava/util/Locale;Ljava/io/File;)V -Ljava/util/Formatter;-><init>(Ljava/util/Locale;Ljava/lang/Appendable;)V -Ljava/util/Formatter;->a:Ljava/lang/Appendable; -Ljava/util/Formatter;->ensureOpen()V -Ljava/util/Formatter;->getZero(Ljava/util/Locale;)C -Ljava/util/Formatter;->l:Ljava/util/Locale; -Ljava/util/Formatter;->lastException:Ljava/io/IOException; -Ljava/util/Formatter;->MAX_FD_CHARS:I -Ljava/util/Formatter;->nonNullAppendable(Ljava/lang/Appendable;)Ljava/lang/Appendable; -Ljava/util/Formatter;->parse(Ljava/lang/String;)[Ljava/util/Formatter$FormatString; -Ljava/util/Formatter;->scaleUp:D -Ljava/util/Formatter;->toCharset(Ljava/lang/String;)Ljava/nio/charset/Charset; -Ljava/util/Formatter;->zero:C -Ljava/util/GregorianCalendar;-><init>(IIIIIII)V -Ljava/util/GregorianCalendar;-><init>(J)V -Ljava/util/GregorianCalendar;-><init>(Ljava/util/TimeZone;Ljava/util/Locale;Z)V -Ljava/util/GregorianCalendar;->actualMonthLength()I -Ljava/util/GregorianCalendar;->adjustDstOffsetForInvalidWallClock(JLjava/util/TimeZone;I)I -Ljava/util/GregorianCalendar;->adjustForZoneAndDaylightSavingsTime(IJLjava/util/TimeZone;)J -Ljava/util/GregorianCalendar;->BCE:I -Ljava/util/GregorianCalendar;->cachedFixedDate:J -Ljava/util/GregorianCalendar;->calsys:Lsun/util/calendar/BaseCalendar; -Ljava/util/GregorianCalendar;->cdate:Lsun/util/calendar/BaseCalendar$Date; -Ljava/util/GregorianCalendar;->CE:I -Ljava/util/GregorianCalendar;->computeFields(II)I -Ljava/util/GregorianCalendar;->DEFAULT_GREGORIAN_CUTOVER:J -Ljava/util/GregorianCalendar;->EPOCH_OFFSET:I -Ljava/util/GregorianCalendar;->EPOCH_YEAR:I -Ljava/util/GregorianCalendar;->gcal:Lsun/util/calendar/Gregorian; -Ljava/util/GregorianCalendar;->gdate:Lsun/util/calendar/BaseCalendar$Date; -Ljava/util/GregorianCalendar;->getCalendarDate(J)Lsun/util/calendar/BaseCalendar$Date; -Ljava/util/GregorianCalendar;->getCurrentFixedDate()J -Ljava/util/GregorianCalendar;->getCutoverCalendarSystem()Lsun/util/calendar/BaseCalendar; -Ljava/util/GregorianCalendar;->getFixedDate(Lsun/util/calendar/BaseCalendar;II)J -Ljava/util/GregorianCalendar;->getFixedDateJan1(Lsun/util/calendar/BaseCalendar$Date;J)J -Ljava/util/GregorianCalendar;->getFixedDateMonth1(Lsun/util/calendar/BaseCalendar$Date;J)J -Ljava/util/GregorianCalendar;->getGregorianCutoverDate()Lsun/util/calendar/BaseCalendar$Date; -Ljava/util/GregorianCalendar;->getJulianCalendarSystem()Lsun/util/calendar/BaseCalendar; -Ljava/util/GregorianCalendar;->getLastJulianDate()Lsun/util/calendar/BaseCalendar$Date; -Ljava/util/GregorianCalendar;->getNormalizedCalendar()Ljava/util/GregorianCalendar; -Ljava/util/GregorianCalendar;->getRolledValue(IIII)I -Ljava/util/GregorianCalendar;->getWeekNumber(JJ)I -Ljava/util/GregorianCalendar;->getYearOffsetInMillis()J -Ljava/util/GregorianCalendar;->gregorianCutover:J -Ljava/util/GregorianCalendar;->gregorianCutoverDate:J -Ljava/util/GregorianCalendar;->gregorianCutoverYear:I -Ljava/util/GregorianCalendar;->gregorianCutoverYearJulian:I -Ljava/util/GregorianCalendar;->internalGetEra()I -Ljava/util/GregorianCalendar;->isCutoverYear(I)Z -Ljava/util/GregorianCalendar;->jcal:Lsun/util/calendar/JulianCalendar; -Ljava/util/GregorianCalendar;->jeras:[Lsun/util/calendar/Era; -Ljava/util/GregorianCalendar;->LEAP_MONTH_LENGTH:[I -Ljava/util/GregorianCalendar;->LEAST_MAX_VALUES:[I -Ljava/util/GregorianCalendar;->MAX_VALUES:[I -Ljava/util/GregorianCalendar;->MIN_VALUES:[I -Ljava/util/GregorianCalendar;->monthLength(I)I -Ljava/util/GregorianCalendar;->monthLength(II)I -Ljava/util/GregorianCalendar;->MONTH_LENGTH:[I -Ljava/util/GregorianCalendar;->ONE_DAY:J -Ljava/util/GregorianCalendar;->ONE_HOUR:I -Ljava/util/GregorianCalendar;->ONE_MINUTE:I -Ljava/util/GregorianCalendar;->ONE_SECOND:I -Ljava/util/GregorianCalendar;->ONE_WEEK:J -Ljava/util/GregorianCalendar;->originalFields:[I -Ljava/util/GregorianCalendar;->pinDayOfMonth()V -Ljava/util/GregorianCalendar;->setGregorianChange(J)V -Ljava/util/GregorianCalendar;->yearLength()I -Ljava/util/GregorianCalendar;->yearLength(I)I -Ljava/util/GregorianCalendar;->zoneOffsets:[I -Ljava/util/HashMap$EntrySet;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/HashMap$EntrySpliterator;-><init>(Ljava/util/HashMap;IIII)V -Ljava/util/HashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/HashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/HashMap$HashIterator;->current:Ljava/util/HashMap$Node; -Ljava/util/HashMap$HashIterator;->expectedModCount:I -Ljava/util/HashMap$HashIterator;->index:I -Ljava/util/HashMap$HashIterator;->next:Ljava/util/HashMap$Node; -Ljava/util/HashMap$HashIterator;->nextNode()Ljava/util/HashMap$Node; -Ljava/util/HashMap$HashMapSpliterator;-><init>(Ljava/util/HashMap;IIII)V -Ljava/util/HashMap$HashMapSpliterator;->current:Ljava/util/HashMap$Node; -Ljava/util/HashMap$HashMapSpliterator;->est:I -Ljava/util/HashMap$HashMapSpliterator;->estimateSize()J -Ljava/util/HashMap$HashMapSpliterator;->expectedModCount:I -Ljava/util/HashMap$HashMapSpliterator;->fence:I -Ljava/util/HashMap$HashMapSpliterator;->getFence()I -Ljava/util/HashMap$HashMapSpliterator;->index:I -Ljava/util/HashMap$HashMapSpliterator;->map:Ljava/util/HashMap; -Ljava/util/HashMap$KeySet;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/HashMap$KeySpliterator;-><init>(Ljava/util/HashMap;IIII)V -Ljava/util/HashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/HashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/HashMap$Node;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V -Ljava/util/HashMap$Node;->hash:I -Ljava/util/HashMap$TreeNode;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V -Ljava/util/HashMap$TreeNode;->balanceDeletion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap$TreeNode;->balanceInsertion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap$TreeNode;->checkInvariants(Ljava/util/HashMap$TreeNode;)Z -Ljava/util/HashMap$TreeNode;->find(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap$TreeNode;->getTreeNode(ILjava/lang/Object;)Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap$TreeNode;->left:Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap$TreeNode;->moveRootToFront([Ljava/util/HashMap$Node;Ljava/util/HashMap$TreeNode;)V -Ljava/util/HashMap$TreeNode;->parent:Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap$TreeNode;->prev:Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap$TreeNode;->putTreeVal(Ljava/util/HashMap;[Ljava/util/HashMap$Node;ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap$TreeNode;->red:Z -Ljava/util/HashMap$TreeNode;->removeTreeNode(Ljava/util/HashMap;[Ljava/util/HashMap$Node;Z)V -Ljava/util/HashMap$TreeNode;->right:Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap$TreeNode;->root()Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap$TreeNode;->rotateLeft(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap$TreeNode;->rotateRight(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap$TreeNode;->split(Ljava/util/HashMap;[Ljava/util/HashMap$Node;II)V -Ljava/util/HashMap$TreeNode;->tieBreakOrder(Ljava/lang/Object;Ljava/lang/Object;)I -Ljava/util/HashMap$TreeNode;->treeify([Ljava/util/HashMap$Node;)V -Ljava/util/HashMap$TreeNode;->untreeify(Ljava/util/HashMap;)Ljava/util/HashMap$Node; -Ljava/util/HashMap$Values;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/HashMap$ValueSpliterator;-><init>(Ljava/util/HashMap;IIII)V -Ljava/util/HashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/HashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/HashMap;->afterNodeAccess(Ljava/util/HashMap$Node;)V -Ljava/util/HashMap;->afterNodeInsertion(Z)V -Ljava/util/HashMap;->afterNodeRemoval(Ljava/util/HashMap$Node;)V -Ljava/util/HashMap;->capacity()I -Ljava/util/HashMap;->comparableClassFor(Ljava/lang/Object;)Ljava/lang/Class; -Ljava/util/HashMap;->compareComparables(Ljava/lang/Class;Ljava/lang/Object;Ljava/lang/Object;)I -Ljava/util/HashMap;->DEFAULT_INITIAL_CAPACITY:I -Ljava/util/HashMap;->DEFAULT_LOAD_FACTOR:F -Ljava/util/HashMap;->entrySet:Ljava/util/Set; -Ljava/util/HashMap;->getNode(ILjava/lang/Object;)Ljava/util/HashMap$Node; -Ljava/util/HashMap;->hash(Ljava/lang/Object;)I -Ljava/util/HashMap;->internalWriteEntries(Ljava/io/ObjectOutputStream;)V -Ljava/util/HashMap;->loadFactor()F -Ljava/util/HashMap;->loadFactor:F -Ljava/util/HashMap;->MAXIMUM_CAPACITY:I -Ljava/util/HashMap;->MIN_TREEIFY_CAPACITY:I -Ljava/util/HashMap;->newNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node; -Ljava/util/HashMap;->newTreeNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap;->putMapEntries(Ljava/util/Map;Z)V -Ljava/util/HashMap;->putVal(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/lang/Object; -Ljava/util/HashMap;->reinitialize()V -Ljava/util/HashMap;->removeNode(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node; -Ljava/util/HashMap;->replacementNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node; -Ljava/util/HashMap;->replacementTreeNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode; -Ljava/util/HashMap;->resize()[Ljava/util/HashMap$Node; -Ljava/util/HashMap;->size:I -Ljava/util/HashMap;->tableSizeFor(I)I -Ljava/util/HashMap;->threshold:I -Ljava/util/HashMap;->treeifyBin([Ljava/util/HashMap$Node;I)V -Ljava/util/HashMap;->TREEIFY_THRESHOLD:I -Ljava/util/HashMap;->UNTREEIFY_THRESHOLD:I -Ljava/util/HashSet;-><init>(IFZ)V -Ljava/util/HashSet;->PRESENT:Ljava/lang/Object; -Ljava/util/Hashtable$EntrySet;->add(Ljava/util/Map$Entry;)Z -Ljava/util/Hashtable$Enumerator;->entry:Ljava/util/Hashtable$HashtableEntry; -Ljava/util/Hashtable$Enumerator;->expectedModCount:I -Ljava/util/Hashtable$Enumerator;->index:I -Ljava/util/Hashtable$Enumerator;->iterator:Z -Ljava/util/Hashtable$Enumerator;->lastReturned:Ljava/util/Hashtable$HashtableEntry; -Ljava/util/Hashtable$Enumerator;->table:[Ljava/util/Hashtable$HashtableEntry; -Ljava/util/Hashtable$Enumerator;->type:I -Ljava/util/Hashtable$HashtableEntry;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/Hashtable$HashtableEntry;)V -Ljava/util/Hashtable$HashtableEntry;->hash:I -Ljava/util/Hashtable$HashtableEntry;->key:Ljava/lang/Object; -Ljava/util/Hashtable$HashtableEntry;->next:Ljava/util/Hashtable$HashtableEntry; -Ljava/util/Hashtable$HashtableEntry;->value:Ljava/lang/Object; -Ljava/util/Hashtable;->addEntry(ILjava/lang/Object;Ljava/lang/Object;I)V -Ljava/util/Hashtable;->count:I -Ljava/util/Hashtable;->ENTRIES:I -Ljava/util/Hashtable;->entrySet:Ljava/util/Set; -Ljava/util/Hashtable;->getEnumeration(I)Ljava/util/Enumeration; -Ljava/util/Hashtable;->getIterator(I)Ljava/util/Iterator; -Ljava/util/Hashtable;->KEYS:I -Ljava/util/Hashtable;->keySet:Ljava/util/Set; -Ljava/util/Hashtable;->loadFactor:F -Ljava/util/Hashtable;->MAX_ARRAY_SIZE:I -Ljava/util/Hashtable;->modCount:I -Ljava/util/Hashtable;->reconstitutionPut([Ljava/util/Hashtable$HashtableEntry;Ljava/lang/Object;Ljava/lang/Object;)V -Ljava/util/Hashtable;->table:[Ljava/util/Hashtable$HashtableEntry; -Ljava/util/Hashtable;->threshold:I -Ljava/util/Hashtable;->VALUES:I -Ljava/util/Hashtable;->values:Ljava/util/Collection; -Ljava/util/IdentityHashMap$EntryIterator$Entry;->checkIndexForEntryUse()V -Ljava/util/IdentityHashMap$EntryIterator$Entry;->index:I -Ljava/util/IdentityHashMap$EntryIterator;->lastReturnedEntry:Ljava/util/IdentityHashMap$EntryIterator$Entry; -Ljava/util/IdentityHashMap$EntrySpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V -Ljava/util/IdentityHashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/IdentityHashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/IdentityHashMap$IdentityHashMapIterator;->expectedModCount:I -Ljava/util/IdentityHashMap$IdentityHashMapIterator;->index:I -Ljava/util/IdentityHashMap$IdentityHashMapIterator;->indexValid:Z -Ljava/util/IdentityHashMap$IdentityHashMapIterator;->lastReturnedIndex:I -Ljava/util/IdentityHashMap$IdentityHashMapIterator;->nextIndex()I -Ljava/util/IdentityHashMap$IdentityHashMapIterator;->traversalTable:[Ljava/lang/Object; -Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V -Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->est:I -Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->estimateSize()J -Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->expectedModCount:I -Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->fence:I -Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->getFence()I -Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->index:I -Ljava/util/IdentityHashMap$IdentityHashMapSpliterator;->map:Ljava/util/IdentityHashMap; -Ljava/util/IdentityHashMap$KeySpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V -Ljava/util/IdentityHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/IdentityHashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/IdentityHashMap$ValueSpliterator;-><init>(Ljava/util/IdentityHashMap;IIII)V -Ljava/util/IdentityHashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/IdentityHashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/IdentityHashMap;->capacity(I)I -Ljava/util/IdentityHashMap;->closeDeletion(I)V -Ljava/util/IdentityHashMap;->containsMapping(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/IdentityHashMap;->DEFAULT_CAPACITY:I -Ljava/util/IdentityHashMap;->entrySet:Ljava/util/Set; -Ljava/util/IdentityHashMap;->hash(Ljava/lang/Object;I)I -Ljava/util/IdentityHashMap;->init(I)V -Ljava/util/IdentityHashMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/IdentityHashMap;->MAXIMUM_CAPACITY:I -Ljava/util/IdentityHashMap;->MINIMUM_CAPACITY:I -Ljava/util/IdentityHashMap;->modCount:I -Ljava/util/IdentityHashMap;->nextKeyIndex(II)I -Ljava/util/IdentityHashMap;->NULL_KEY:Ljava/lang/Object; -Ljava/util/IdentityHashMap;->putForCreate(Ljava/lang/Object;Ljava/lang/Object;)V -Ljava/util/IdentityHashMap;->removeMapping(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/IdentityHashMap;->resize(I)Z -Ljava/util/IdentityHashMap;->size:I -Ljava/util/IdentityHashMap;->table:[Ljava/lang/Object; -Ljava/util/IdentityHashMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/IllegalFormatCodePointException;->c:I -Ljava/util/IllegalFormatConversionException;->arg:Ljava/lang/Class; -Ljava/util/IllegalFormatConversionException;->c:C -Ljava/util/IllegalFormatException;-><init>()V -Ljava/util/IllegalFormatFlagsException;->flags:Ljava/lang/String; -Ljava/util/IllegalFormatPrecisionException;->p:I -Ljava/util/IllegalFormatWidthException;->w:I -Ljava/util/IllformedLocaleException;->_errIdx:I -Ljava/util/IntSummaryStatistics;->count:J -Ljava/util/IntSummaryStatistics;->max:I -Ljava/util/IntSummaryStatistics;->min:I -Ljava/util/IntSummaryStatistics;->sum:J -Ljava/util/jar/Attributes$Name;->hashCode:I -Ljava/util/jar/Attributes$Name;->isAlpha(C)Z -Ljava/util/jar/Attributes$Name;->isDigit(C)Z -Ljava/util/jar/Attributes$Name;->isValid(C)Z -Ljava/util/jar/Attributes$Name;->isValid(Ljava/lang/String;)Z -Ljava/util/jar/Attributes$Name;->name:Ljava/lang/String; -Ljava/util/jar/Attributes$Name;->NAME:Ljava/util/jar/Attributes$Name; -Ljava/util/jar/Attributes;->read(Ljava/util/jar/Manifest$FastInputStream;[B)V -Ljava/util/jar/Attributes;->write(Ljava/io/DataOutputStream;)V -Ljava/util/jar/Attributes;->writeMain(Ljava/io/DataOutputStream;)V -Ljava/util/jar/JarEntry;->attr:Ljava/util/jar/Attributes; -Ljava/util/jar/JarEntry;->certs:[Ljava/security/cert/Certificate; -Ljava/util/jar/JarEntry;->signers:[Ljava/security/CodeSigner; -Ljava/util/jar/JarFile$JarEntryIterator;->e:Ljava/util/Enumeration; -Ljava/util/jar/JarFile;->checkForSpecialAttributes()V -Ljava/util/jar/JarFile;->CLASSPATH_CHARS:[C -Ljava/util/jar/JarFile;->CLASSPATH_LASTOCC:[I -Ljava/util/jar/JarFile;->CLASSPATH_OPTOSFT:[I -Ljava/util/jar/JarFile;->getBytes(Ljava/util/zip/ZipEntry;)[B -Ljava/util/jar/JarFile;->getManEntry()Ljava/util/jar/JarEntry; -Ljava/util/jar/JarFile;->getManifestFromReference()Ljava/util/jar/Manifest; -Ljava/util/jar/JarFile;->getMetaInfEntryNames()[Ljava/lang/String; -Ljava/util/jar/JarFile;->hasCheckedSpecialAttributes:Z -Ljava/util/jar/JarFile;->hasClassPathAttribute()Z -Ljava/util/jar/JarFile;->hasClassPathAttribute:Z -Ljava/util/jar/JarFile;->initializeVerifier()V -Ljava/util/jar/JarFile;->jv:Ljava/util/jar/JarVerifier; -Ljava/util/jar/JarFile;->jvInitialized:Z -Ljava/util/jar/JarFile;->manEntry:Ljava/util/jar/JarEntry; -Ljava/util/jar/JarFile;->match([C[B[I[I)Z -Ljava/util/jar/JarFile;->maybeInstantiateVerifier()V -Ljava/util/jar/JarFile;->META_DIR:Ljava/lang/String; -Ljava/util/jar/JarFile;->newEntry(Ljava/util/zip/ZipEntry;)Ljava/util/jar/JarEntry; -Ljava/util/jar/JarFile;->verify:Z -Ljava/util/jar/JarInputStream;->checkManifest(Ljava/util/jar/JarEntry;)Ljava/util/jar/JarEntry; -Ljava/util/jar/JarInputStream;->doVerify:Z -Ljava/util/jar/JarInputStream;->first:Ljava/util/jar/JarEntry; -Ljava/util/jar/JarInputStream;->getBytes(Ljava/io/InputStream;)[B -Ljava/util/jar/JarInputStream;->jv:Ljava/util/jar/JarVerifier; -Ljava/util/jar/JarInputStream;->man:Ljava/util/jar/Manifest; -Ljava/util/jar/JarInputStream;->mev:Lsun/security/util/ManifestEntryVerifier; -Ljava/util/jar/JarInputStream;->tryManifest:Z -Ljava/util/jar/JarOutputStream;->firstEntry:Z -Ljava/util/jar/JarOutputStream;->get16([BI)I -Ljava/util/jar/JarOutputStream;->hasMagic([B)Z -Ljava/util/jar/JarOutputStream;->JAR_MAGIC:I -Ljava/util/jar/JarOutputStream;->set16([BII)V -Ljava/util/jar/JarVerifier$VerifierCodeSource;-><init>(Ljava/lang/Object;Ljava/net/URL;[Ljava/security/cert/Certificate;)V -Ljava/util/jar/JarVerifier$VerifierCodeSource;-><init>(Ljava/lang/Object;Ljava/net/URL;[Ljava/security/CodeSigner;)V -Ljava/util/jar/JarVerifier$VerifierCodeSource;->csdomain:Ljava/lang/Object; -Ljava/util/jar/JarVerifier$VerifierCodeSource;->getPrivateCertificates()[Ljava/security/cert/Certificate; -Ljava/util/jar/JarVerifier$VerifierCodeSource;->getPrivateSigners()[Ljava/security/CodeSigner; -Ljava/util/jar/JarVerifier$VerifierCodeSource;->isSameDomain(Ljava/lang/Object;)Z -Ljava/util/jar/JarVerifier$VerifierCodeSource;->vcerts:[Ljava/security/cert/Certificate; -Ljava/util/jar/JarVerifier$VerifierCodeSource;->vlocation:Ljava/net/URL; -Ljava/util/jar/JarVerifier$VerifierCodeSource;->vsigners:[Ljava/security/CodeSigner; -Ljava/util/jar/JarVerifier$VerifierStream;-><init>(Ljava/util/jar/Manifest;Ljava/util/jar/JarEntry;Ljava/io/InputStream;Ljava/util/jar/JarVerifier;)V -Ljava/util/jar/JarVerifier$VerifierStream;->is:Ljava/io/InputStream; -Ljava/util/jar/JarVerifier$VerifierStream;->jv:Ljava/util/jar/JarVerifier; -Ljava/util/jar/JarVerifier$VerifierStream;->mev:Lsun/security/util/ManifestEntryVerifier; -Ljava/util/jar/JarVerifier$VerifierStream;->numLeft:J -Ljava/util/jar/JarVerifier;-><init>([B)V -Ljava/util/jar/JarVerifier;->anyToVerify:Z -Ljava/util/jar/JarVerifier;->baos:Ljava/io/ByteArrayOutputStream; -Ljava/util/jar/JarVerifier;->beginEntry(Ljava/util/jar/JarEntry;Lsun/security/util/ManifestEntryVerifier;)V -Ljava/util/jar/JarVerifier;->csdomain:Ljava/lang/Object; -Ljava/util/jar/JarVerifier;->debug:Lsun/security/util/Debug; -Ljava/util/jar/JarVerifier;->doneWithMeta()V -Ljava/util/jar/JarVerifier;->eagerValidation:Z -Ljava/util/jar/JarVerifier;->emptyEnumeration:Ljava/util/Enumeration; -Ljava/util/jar/JarVerifier;->emptySigner:[Ljava/security/CodeSigner; -Ljava/util/jar/JarVerifier;->entries2(Ljava/util/jar/JarFile;Ljava/util/Enumeration;)Ljava/util/Enumeration; -Ljava/util/jar/JarVerifier;->entryNames(Ljava/util/jar/JarFile;[Ljava/security/CodeSource;)Ljava/util/Enumeration; -Ljava/util/jar/JarVerifier;->findMatchingSigners(Ljava/security/CodeSource;)[Ljava/security/CodeSigner; -Ljava/util/jar/JarVerifier;->getCerts(Ljava/lang/String;)[Ljava/security/cert/Certificate; -Ljava/util/jar/JarVerifier;->getCerts(Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)[Ljava/security/cert/Certificate; -Ljava/util/jar/JarVerifier;->getCodeSigners(Ljava/lang/String;)[Ljava/security/CodeSigner; -Ljava/util/jar/JarVerifier;->getCodeSigners(Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)[Ljava/security/CodeSigner; -Ljava/util/jar/JarVerifier;->getCodeSource(Ljava/net/URL;Ljava/lang/String;)Ljava/security/CodeSource; -Ljava/util/jar/JarVerifier;->getCodeSource(Ljava/net/URL;Ljava/util/jar/JarFile;Ljava/util/jar/JarEntry;)Ljava/security/CodeSource; -Ljava/util/jar/JarVerifier;->getCodeSources(Ljava/util/jar/JarFile;Ljava/net/URL;)[Ljava/security/CodeSource; -Ljava/util/jar/JarVerifier;->getJarCodeSigners()Ljava/util/List; -Ljava/util/jar/JarVerifier;->getManifestDigests()Ljava/util/List; -Ljava/util/jar/JarVerifier;->getUnsignedCS(Ljava/net/URL;)Ljava/security/CodeSource; -Ljava/util/jar/JarVerifier;->isSigningRelated(Ljava/lang/String;)Z -Ljava/util/jar/JarVerifier;->jarCodeSigners:Ljava/util/List; -Ljava/util/jar/JarVerifier;->lastURL:Ljava/net/URL; -Ljava/util/jar/JarVerifier;->lastURLMap:Ljava/util/Map; -Ljava/util/jar/JarVerifier;->manDig:Lsun/security/util/ManifestDigester; -Ljava/util/jar/JarVerifier;->manifestDigests:Ljava/util/List; -Ljava/util/jar/JarVerifier;->manifestRawBytes:[B -Ljava/util/jar/JarVerifier;->mapSignersToCertArray([Ljava/security/CodeSigner;)[Ljava/security/cert/Certificate; -Ljava/util/jar/JarVerifier;->mapSignersToCodeSource(Ljava/net/URL;[Ljava/security/CodeSigner;)Ljava/security/CodeSource; -Ljava/util/jar/JarVerifier;->mapSignersToCodeSources(Ljava/net/URL;Ljava/util/List;Z)[Ljava/security/CodeSource; -Ljava/util/jar/JarVerifier;->nothingToVerify()Z -Ljava/util/jar/JarVerifier;->parsingBlockOrSF:Z -Ljava/util/jar/JarVerifier;->parsingMeta:Z -Ljava/util/jar/JarVerifier;->pendingBlocks:Ljava/util/ArrayList; -Ljava/util/jar/JarVerifier;->processEntry(Lsun/security/util/ManifestEntryVerifier;)V -Ljava/util/jar/JarVerifier;->setEagerValidation(Z)V -Ljava/util/jar/JarVerifier;->sigFileData:Ljava/util/Hashtable; -Ljava/util/jar/JarVerifier;->sigFileSigners:Ljava/util/Hashtable; -Ljava/util/jar/JarVerifier;->signerCache:Ljava/util/ArrayList; -Ljava/util/jar/JarVerifier;->signerMap()Ljava/util/Map; -Ljava/util/jar/JarVerifier;->signerMap:Ljava/util/Map; -Ljava/util/jar/JarVerifier;->signerToCodeSource:Ljava/util/Map; -Ljava/util/jar/JarVerifier;->unsignedEntryNames(Ljava/util/jar/JarFile;)Ljava/util/Enumeration; -Ljava/util/jar/JarVerifier;->update(ILsun/security/util/ManifestEntryVerifier;)V -Ljava/util/jar/JarVerifier;->update(I[BIILsun/security/util/ManifestEntryVerifier;)V -Ljava/util/jar/JarVerifier;->urlToCodeSourceMap:Ljava/util/Map; -Ljava/util/jar/JarVerifier;->verifiedSigners:Ljava/util/Hashtable; -Ljava/util/jar/Manifest$FastInputStream;-><init>(Ljava/io/InputStream;)V -Ljava/util/jar/Manifest$FastInputStream;-><init>(Ljava/io/InputStream;I)V -Ljava/util/jar/Manifest$FastInputStream;->buf:[B -Ljava/util/jar/Manifest$FastInputStream;->count:I -Ljava/util/jar/Manifest$FastInputStream;->fill()V -Ljava/util/jar/Manifest$FastInputStream;->peek()B -Ljava/util/jar/Manifest$FastInputStream;->pos:I -Ljava/util/jar/Manifest$FastInputStream;->readLine([B)I -Ljava/util/jar/Manifest$FastInputStream;->readLine([BII)I -Ljava/util/jar/Manifest;->attr:Ljava/util/jar/Attributes; -Ljava/util/jar/Manifest;->entries:Ljava/util/Map; -Ljava/util/jar/Manifest;->make72Safe(Ljava/lang/StringBuffer;)V -Ljava/util/jar/Manifest;->parseName([BI)Ljava/lang/String; -Ljava/util/jar/Manifest;->toLower(I)I -Ljava/util/jar/Pack200;-><init>()V -Ljava/util/jar/Pack200;->newInstance(Ljava/lang/String;)Ljava/lang/Object; -Ljava/util/jar/Pack200;->packerImpl:Ljava/lang/Class; -Ljava/util/jar/Pack200;->PACK_PROVIDER:Ljava/lang/String; -Ljava/util/jar/Pack200;->unpackerImpl:Ljava/lang/Class; -Ljava/util/jar/Pack200;->UNPACK_PROVIDER:Ljava/lang/String; -Ljava/util/LinkedHashMap$LinkedEntrySet;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/LinkedHashMap$LinkedHashIterator;->current:Ljava/util/LinkedHashMap$LinkedHashMapEntry; -Ljava/util/LinkedHashMap$LinkedHashIterator;->expectedModCount:I -Ljava/util/LinkedHashMap$LinkedHashIterator;->next:Ljava/util/LinkedHashMap$LinkedHashMapEntry; -Ljava/util/LinkedHashMap$LinkedHashIterator;->nextNode()Ljava/util/LinkedHashMap$LinkedHashMapEntry; -Ljava/util/LinkedHashMap$LinkedHashIterator;->remove()V -Ljava/util/LinkedHashMap$LinkedHashMapEntry;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V -Ljava/util/LinkedHashMap$LinkedHashMapEntry;->after:Ljava/util/LinkedHashMap$LinkedHashMapEntry; -Ljava/util/LinkedHashMap$LinkedHashMapEntry;->before:Ljava/util/LinkedHashMap$LinkedHashMapEntry; -Ljava/util/LinkedHashMap$LinkedKeySet;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/LinkedHashMap$LinkedValues;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/LinkedHashMap;->afterNodeAccess(Ljava/util/HashMap$Node;)V -Ljava/util/LinkedHashMap;->afterNodeInsertion(Z)V -Ljava/util/LinkedHashMap;->afterNodeRemoval(Ljava/util/HashMap$Node;)V -Ljava/util/LinkedHashMap;->head:Ljava/util/LinkedHashMap$LinkedHashMapEntry; -Ljava/util/LinkedHashMap;->internalWriteEntries(Ljava/io/ObjectOutputStream;)V -Ljava/util/LinkedHashMap;->linkNodeLast(Ljava/util/LinkedHashMap$LinkedHashMapEntry;)V -Ljava/util/LinkedHashMap;->newNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node; -Ljava/util/LinkedHashMap;->newTreeNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode; -Ljava/util/LinkedHashMap;->reinitialize()V -Ljava/util/LinkedHashMap;->replacementNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node; -Ljava/util/LinkedHashMap;->replacementTreeNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode; -Ljava/util/LinkedHashMap;->tail:Ljava/util/LinkedHashMap$LinkedHashMapEntry; -Ljava/util/LinkedHashMap;->transferLinks(Ljava/util/LinkedHashMap$LinkedHashMapEntry;Ljava/util/LinkedHashMap$LinkedHashMapEntry;)V -Ljava/util/LinkedList$DescendingIterator;->itr:Ljava/util/LinkedList$ListItr; -Ljava/util/LinkedList$ListItr;->checkForComodification()V -Ljava/util/LinkedList$ListItr;->expectedModCount:I -Ljava/util/LinkedList$ListItr;->lastReturned:Ljava/util/LinkedList$Node; -Ljava/util/LinkedList$ListItr;->next:Ljava/util/LinkedList$Node; -Ljava/util/LinkedList$ListItr;->nextIndex:I -Ljava/util/LinkedList$LLSpliterator;-><init>(Ljava/util/LinkedList;II)V -Ljava/util/LinkedList$LLSpliterator;->batch:I -Ljava/util/LinkedList$LLSpliterator;->BATCH_UNIT:I -Ljava/util/LinkedList$LLSpliterator;->current:Ljava/util/LinkedList$Node; -Ljava/util/LinkedList$LLSpliterator;->est:I -Ljava/util/LinkedList$LLSpliterator;->expectedModCount:I -Ljava/util/LinkedList$LLSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/LinkedList$LLSpliterator;->getEst()I -Ljava/util/LinkedList$LLSpliterator;->list:Ljava/util/LinkedList; -Ljava/util/LinkedList$LLSpliterator;->MAX_BATCH:I -Ljava/util/LinkedList$LLSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/LinkedList$Node;-><init>(Ljava/util/LinkedList$Node;Ljava/lang/Object;Ljava/util/LinkedList$Node;)V -Ljava/util/LinkedList$Node;->prev:Ljava/util/LinkedList$Node; -Ljava/util/LinkedList;->checkElementIndex(I)V -Ljava/util/LinkedList;->checkPositionIndex(I)V -Ljava/util/LinkedList;->isElementIndex(I)Z -Ljava/util/LinkedList;->isPositionIndex(I)Z -Ljava/util/LinkedList;->last:Ljava/util/LinkedList$Node; -Ljava/util/LinkedList;->linkBefore(Ljava/lang/Object;Ljava/util/LinkedList$Node;)V -Ljava/util/LinkedList;->linkFirst(Ljava/lang/Object;)V -Ljava/util/LinkedList;->linkLast(Ljava/lang/Object;)V -Ljava/util/LinkedList;->node(I)Ljava/util/LinkedList$Node; -Ljava/util/LinkedList;->outOfBoundsMsg(I)Ljava/lang/String; -Ljava/util/LinkedList;->superClone()Ljava/util/LinkedList; -Ljava/util/LinkedList;->unlink(Ljava/util/LinkedList$Node;)Ljava/lang/Object; -Ljava/util/LinkedList;->unlinkFirst(Ljava/util/LinkedList$Node;)Ljava/lang/Object; -Ljava/util/LinkedList;->unlinkLast(Ljava/util/LinkedList$Node;)Ljava/lang/Object; -Ljava/util/ListResourceBundle;->loadLookup()V -Ljava/util/ListResourceBundle;->lookup:Ljava/util/Map; -Ljava/util/Locale$Builder;->localeBuilder:Lsun/util/locale/InternalLocaleBuilder; -Ljava/util/Locale$Cache;-><init>()V -Ljava/util/Locale$Cache;->createObject(Ljava/util/Locale$LocaleKey;)Ljava/util/Locale; -Ljava/util/Locale$Category;->countryKey:Ljava/lang/String; -Ljava/util/Locale$Category;->languageKey:Ljava/lang/String; -Ljava/util/Locale$Category;->scriptKey:Ljava/lang/String; -Ljava/util/Locale$Category;->variantKey:Ljava/lang/String; -Ljava/util/Locale$LanguageRange;->hash:I -Ljava/util/Locale$LanguageRange;->isSubtagIllFormed(Ljava/lang/String;Z)Z -Ljava/util/Locale$LanguageRange;->range:Ljava/lang/String; -Ljava/util/Locale$LanguageRange;->weight:D -Ljava/util/Locale$LocaleKey;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V -Ljava/util/Locale$LocaleKey;->base:Lsun/util/locale/BaseLocale; -Ljava/util/Locale$LocaleKey;->exts:Lsun/util/locale/LocaleExtensions; -Ljava/util/Locale$LocaleKey;->hash:I -Ljava/util/Locale$NoImagePreloadHolder;-><init>()V -Ljava/util/Locale$NoImagePreloadHolder;->defaultLocale:Ljava/util/Locale; -Ljava/util/Locale;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V -Ljava/util/Locale;->adjustLanguageCode(Ljava/lang/String;)Ljava/lang/String; -Ljava/util/Locale;->baseLocale:Lsun/util/locale/BaseLocale; -Ljava/util/Locale;->composeList(Ljava/text/MessageFormat;[Ljava/lang/String;)[Ljava/lang/String; -Ljava/util/Locale;->convertOldISOCodes(Ljava/lang/String;)Ljava/lang/String; -Ljava/util/Locale;->defaultDisplayLocale:Ljava/util/Locale; -Ljava/util/Locale;->defaultFormatLocale:Ljava/util/Locale; -Ljava/util/Locale;->DISPLAY_COUNTRY:I -Ljava/util/Locale;->DISPLAY_LANGUAGE:I -Ljava/util/Locale;->DISPLAY_SCRIPT:I -Ljava/util/Locale;->DISPLAY_VARIANT:I -Ljava/util/Locale;->formatList([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Ljava/util/Locale;->getBaseLocale()Lsun/util/locale/BaseLocale; -Ljava/util/Locale;->getCompatibilityExtensions(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/LocaleExtensions; -Ljava/util/Locale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/Locale; -Ljava/util/Locale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/LocaleExtensions;)Ljava/util/Locale; -Ljava/util/Locale;->getLocaleExtensions()Lsun/util/locale/LocaleExtensions; -Ljava/util/Locale;->hashCodeValue:I -Ljava/util/Locale;->initDefault()Ljava/util/Locale; -Ljava/util/Locale;->initDefault(Ljava/util/Locale$Category;)Ljava/util/Locale; -Ljava/util/Locale;->isAsciiAlphaNum(Ljava/lang/String;)Z -Ljava/util/Locale;->isoCountries:[Ljava/lang/String; -Ljava/util/Locale;->isoLanguages:[Ljava/lang/String; -Ljava/util/Locale;->isUnicodeExtensionKey(Ljava/lang/String;)Z -Ljava/util/Locale;->isUnM49AreaCode(Ljava/lang/String;)Z -Ljava/util/Locale;->isValidBcp47Alpha(Ljava/lang/String;II)Z -Ljava/util/Locale;->isValidVariantSubtag(Ljava/lang/String;)Z -Ljava/util/Locale;->languageTag:Ljava/lang/String; -Ljava/util/Locale;->LOCALECACHE:Ljava/util/Locale$Cache; -Ljava/util/Locale;->localeExtensions:Lsun/util/locale/LocaleExtensions; -Ljava/util/Locale;->normalizeAndValidateLanguage(Ljava/lang/String;Z)Ljava/lang/String; -Ljava/util/Locale;->normalizeAndValidateRegion(Ljava/lang/String;Z)Ljava/lang/String; -Ljava/util/Locale;->normalizeAndValidateVariant(Ljava/lang/String;)Ljava/lang/String; -Ljava/util/Locale;->UNDETERMINED_LANGUAGE:Ljava/lang/String; -Ljava/util/logging/ConsoleHandler;->configure()V -Ljava/util/logging/ErrorManager;->reported:Z -Ljava/util/logging/FileHandler$InitializationErrorManager;-><init>()V -Ljava/util/logging/FileHandler$InitializationErrorManager;->lastException:Ljava/lang/Exception; -Ljava/util/logging/FileHandler$MeteredStream;->out:Ljava/io/OutputStream; -Ljava/util/logging/FileHandler$MeteredStream;->written:I -Ljava/util/logging/FileHandler;->append:Z -Ljava/util/logging/FileHandler;->configure()V -Ljava/util/logging/FileHandler;->count:I -Ljava/util/logging/FileHandler;->files:[Ljava/io/File; -Ljava/util/logging/FileHandler;->generate(Ljava/lang/String;II)Ljava/io/File; -Ljava/util/logging/FileHandler;->isParentWritable(Ljava/nio/file/Path;)Z -Ljava/util/logging/FileHandler;->limit:I -Ljava/util/logging/FileHandler;->lockFileChannel:Ljava/nio/channels/FileChannel; -Ljava/util/logging/FileHandler;->lockFileName:Ljava/lang/String; -Ljava/util/logging/FileHandler;->locks:Ljava/util/Set; -Ljava/util/logging/FileHandler;->MAX_LOCKS:I -Ljava/util/logging/FileHandler;->meter:Ljava/util/logging/FileHandler$MeteredStream; -Ljava/util/logging/FileHandler;->open(Ljava/io/File;Z)V -Ljava/util/logging/FileHandler;->openFiles()V -Ljava/util/logging/FileHandler;->pattern:Ljava/lang/String; -Ljava/util/logging/FileHandler;->rotate()V -Ljava/util/logging/Handler;->checkPermission()V -Ljava/util/logging/Handler;->encoding:Ljava/lang/String; -Ljava/util/logging/Handler;->errorManager:Ljava/util/logging/ErrorManager; -Ljava/util/logging/Handler;->filter:Ljava/util/logging/Filter; -Ljava/util/logging/Handler;->formatter:Ljava/util/logging/Formatter; -Ljava/util/logging/Handler;->logLevel:Ljava/util/logging/Level; -Ljava/util/logging/Handler;->manager:Ljava/util/logging/LogManager; -Ljava/util/logging/Handler;->offValue:I -Ljava/util/logging/Level$KnownLevel;-><init>(Ljava/util/logging/Level;)V -Ljava/util/logging/Level$KnownLevel;->add(Ljava/util/logging/Level;)V -Ljava/util/logging/Level$KnownLevel;->findByLocalizedLevelName(Ljava/lang/String;)Ljava/util/logging/Level$KnownLevel; -Ljava/util/logging/Level$KnownLevel;->findByName(Ljava/lang/String;)Ljava/util/logging/Level$KnownLevel; -Ljava/util/logging/Level$KnownLevel;->findByValue(I)Ljava/util/logging/Level$KnownLevel; -Ljava/util/logging/Level$KnownLevel;->intToLevels:Ljava/util/Map; -Ljava/util/logging/Level$KnownLevel;->levelObject:Ljava/util/logging/Level; -Ljava/util/logging/Level$KnownLevel;->matches(Ljava/util/logging/Level;)Ljava/util/logging/Level$KnownLevel; -Ljava/util/logging/Level$KnownLevel;->mirroredLevel:Ljava/util/logging/Level; -Ljava/util/logging/Level$KnownLevel;->nameToLevels:Ljava/util/Map; -Ljava/util/logging/Level;-><init>(Ljava/lang/String;ILjava/lang/String;Z)V -Ljava/util/logging/Level;->cachedLocale:Ljava/util/Locale; -Ljava/util/logging/Level;->computeLocalizedLevelName(Ljava/util/Locale;)Ljava/lang/String; -Ljava/util/logging/Level;->defaultBundle:Ljava/lang/String; -Ljava/util/logging/Level;->findLevel(Ljava/lang/String;)Ljava/util/logging/Level; -Ljava/util/logging/Level;->getCachedLocalizedLevelName()Ljava/lang/String; -Ljava/util/logging/Level;->getLevelName()Ljava/lang/String; -Ljava/util/logging/Level;->getLocalizedLevelName()Ljava/lang/String; -Ljava/util/logging/Level;->localizedLevelName:Ljava/lang/String; -Ljava/util/logging/Level;->name:Ljava/lang/String; -Ljava/util/logging/Level;->resourceBundleName:Ljava/lang/String; -Ljava/util/logging/Level;->value:I -Ljava/util/logging/Logger$LoggerBundle;-><init>(Ljava/lang/String;Ljava/util/ResourceBundle;)V -Ljava/util/logging/Logger$LoggerBundle;->get(Ljava/lang/String;Ljava/util/ResourceBundle;)Ljava/util/logging/Logger$LoggerBundle; -Ljava/util/logging/Logger$LoggerBundle;->isSystemBundle()Z -Ljava/util/logging/Logger$LoggerBundle;->resourceBundleName:Ljava/lang/String; -Ljava/util/logging/Logger$LoggerBundle;->userBundle:Ljava/util/ResourceBundle; -Ljava/util/logging/Logger$SystemLoggerHelper;-><init>()V -Ljava/util/logging/Logger$SystemLoggerHelper;->disableCallerCheck:Z -Ljava/util/logging/Logger$SystemLoggerHelper;->getBooleanProperty(Ljava/lang/String;)Z -Ljava/util/logging/Logger;-><init>(Ljava/lang/String;)V -Ljava/util/logging/Logger;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/util/logging/LogManager;Z)V -Ljava/util/logging/Logger;->accessCheckedHandlers()[Ljava/util/logging/Handler; -Ljava/util/logging/Logger;->anonymous:Z -Ljava/util/logging/Logger;->callersClassLoaderRef:Ljava/lang/ref/WeakReference; -Ljava/util/logging/Logger;->catalog:Ljava/util/ResourceBundle; -Ljava/util/logging/Logger;->catalogLocale:Ljava/util/Locale; -Ljava/util/logging/Logger;->catalogName:Ljava/lang/String; -Ljava/util/logging/Logger;->checkPermission()V -Ljava/util/logging/Logger;->demandLogger(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/logging/Logger; -Ljava/util/logging/Logger;->doLog(Ljava/util/logging/LogRecord;)V -Ljava/util/logging/Logger;->doLog(Ljava/util/logging/LogRecord;Ljava/lang/String;)V -Ljava/util/logging/Logger;->doLog(Ljava/util/logging/LogRecord;Ljava/util/ResourceBundle;)V -Ljava/util/logging/Logger;->doSetParent(Ljava/util/logging/Logger;)V -Ljava/util/logging/Logger;->emptyHandlers:[Ljava/util/logging/Handler; -Ljava/util/logging/Logger;->filter:Ljava/util/logging/Filter; -Ljava/util/logging/Logger;->findResourceBundle(Ljava/lang/String;Z)Ljava/util/ResourceBundle; -Ljava/util/logging/Logger;->findSystemResourceBundle(Ljava/util/Locale;)Ljava/util/ResourceBundle; -Ljava/util/logging/Logger;->getCallersClassLoader()Ljava/lang/ClassLoader; -Ljava/util/logging/Logger;->getEffectiveLoggerBundle()Ljava/util/logging/Logger$LoggerBundle; -Ljava/util/logging/Logger;->getPlatformLogger(Ljava/lang/String;)Ljava/util/logging/Logger; -Ljava/util/logging/Logger;->handlers:Ljava/util/concurrent/CopyOnWriteArrayList; -Ljava/util/logging/Logger;->isLevelInitialized()Z -Ljava/util/logging/Logger;->isSystemLogger:Z -Ljava/util/logging/Logger;->kids:Ljava/util/ArrayList; -Ljava/util/logging/Logger;->levelObject:Ljava/util/logging/Level; -Ljava/util/logging/Logger;->levelValue:I -Ljava/util/logging/Logger;->loggerBundle:Ljava/util/logging/Logger$LoggerBundle; -Ljava/util/logging/Logger;->manager:Ljava/util/logging/LogManager; -Ljava/util/logging/Logger;->name:Ljava/lang/String; -Ljava/util/logging/Logger;->NO_RESOURCE_BUNDLE:Ljava/util/logging/Logger$LoggerBundle; -Ljava/util/logging/Logger;->offValue:I -Ljava/util/logging/Logger;->parent:Ljava/util/logging/Logger; -Ljava/util/logging/Logger;->removeChildLogger(Ljava/util/logging/LogManager$LoggerWeakRef;)V -Ljava/util/logging/Logger;->setCallersClassLoaderRef(Ljava/lang/Class;)V -Ljava/util/logging/Logger;->setLogManager(Ljava/util/logging/LogManager;)V -Ljava/util/logging/Logger;->setupResourceInfo(Ljava/lang/String;Ljava/lang/Class;)V -Ljava/util/logging/Logger;->SYSTEM_BUNDLE:Ljava/util/logging/Logger$LoggerBundle; -Ljava/util/logging/Logger;->SYSTEM_LOGGER_RB_NAME:Ljava/lang/String; -Ljava/util/logging/Logger;->updateEffectiveLevel()V -Ljava/util/logging/Logger;->useParentHandlers:Z -Ljava/util/logging/LogManager$Beans;-><init>()V -Ljava/util/logging/LogManager$Beans;->getClass(Ljava/lang/String;)Ljava/lang/Class; -Ljava/util/logging/LogManager$Beans;->invokePropertyChange(Ljava/lang/Object;Ljava/lang/Object;)V -Ljava/util/logging/LogManager$Beans;->isBeansPresent()Z -Ljava/util/logging/LogManager$Beans;->newPropertyChangeEvent(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/logging/LogManager$Beans;->propertyChangeEventClass:Ljava/lang/Class; -Ljava/util/logging/LogManager$Beans;->propertyChangeListenerClass:Ljava/lang/Class; -Ljava/util/logging/LogManager$Beans;->propertyChangeMethod:Ljava/lang/reflect/Method; -Ljava/util/logging/LogManager$Beans;->propertyEventCtor:Ljava/lang/reflect/Constructor; -Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;)Z -Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;Ljava/util/logging/LogManager;)Z -Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;Z)Z -Ljava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;ZLjava/util/logging/LogManager;)Z -Ljava/util/logging/LogManager$LoggerContext;->demandLogger(Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger; -Ljava/util/logging/LogManager$LoggerContext;->ensureAllDefaultLoggers(Ljava/util/logging/Logger;)V -Ljava/util/logging/LogManager$LoggerContext;->ensureDefaultLogger(Ljava/util/logging/Logger;)V -Ljava/util/logging/LogManager$LoggerContext;->ensureInitialized()V -Ljava/util/logging/LogManager$LoggerContext;->findLogger(Ljava/lang/String;)Ljava/util/logging/Logger; -Ljava/util/logging/LogManager$LoggerContext;->getGlobalLogger()Ljava/util/logging/Logger; -Ljava/util/logging/LogManager$LoggerContext;->getLoggerNames()Ljava/util/Enumeration; -Ljava/util/logging/LogManager$LoggerContext;->getNode(Ljava/lang/String;)Ljava/util/logging/LogManager$LogNode; -Ljava/util/logging/LogManager$LoggerContext;->getOwner()Ljava/util/logging/LogManager; -Ljava/util/logging/LogManager$LoggerContext;->getRootLogger()Ljava/util/logging/Logger; -Ljava/util/logging/LogManager$LoggerContext;->namedLoggers:Ljava/util/Hashtable; -Ljava/util/logging/LogManager$LoggerContext;->processParentHandlers(Ljava/util/logging/Logger;Ljava/lang/String;)V -Ljava/util/logging/LogManager$LoggerContext;->removeLoggerRef(Ljava/lang/String;Ljava/util/logging/LogManager$LoggerWeakRef;)V -Ljava/util/logging/LogManager$LoggerContext;->requiresDefaultLoggers()Z -Ljava/util/logging/LogManager$LoggerContext;->root:Ljava/util/logging/LogManager$LogNode; -Ljava/util/logging/LogManager$LoggerWeakRef;->dispose()V -Ljava/util/logging/LogManager$LoggerWeakRef;->disposed:Z -Ljava/util/logging/LogManager$LoggerWeakRef;->name:Ljava/lang/String; -Ljava/util/logging/LogManager$LoggerWeakRef;->node:Ljava/util/logging/LogManager$LogNode; -Ljava/util/logging/LogManager$LoggerWeakRef;->parentRef:Ljava/lang/ref/WeakReference; -Ljava/util/logging/LogManager$LoggerWeakRef;->setNode(Ljava/util/logging/LogManager$LogNode;)V -Ljava/util/logging/LogManager$LoggerWeakRef;->setParentRef(Ljava/lang/ref/WeakReference;)V -Ljava/util/logging/LogManager$LogNode;-><init>(Ljava/util/logging/LogManager$LogNode;Ljava/util/logging/LogManager$LoggerContext;)V -Ljava/util/logging/LogManager$LogNode;->children:Ljava/util/HashMap; -Ljava/util/logging/LogManager$LogNode;->context:Ljava/util/logging/LogManager$LoggerContext; -Ljava/util/logging/LogManager$LogNode;->loggerRef:Ljava/util/logging/LogManager$LoggerWeakRef; -Ljava/util/logging/LogManager$LogNode;->parent:Ljava/util/logging/LogManager$LogNode; -Ljava/util/logging/LogManager$LogNode;->walkAndSetParent(Ljava/util/logging/Logger;)V -Ljava/util/logging/LogManager$RootLogger;->accessCheckedHandlers()[Ljava/util/logging/Handler; -Ljava/util/logging/LogManager$SystemLoggerContext;->demandLogger(Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger; -Ljava/util/logging/LogManager;-><init>(Ljava/lang/Void;)V -Ljava/util/logging/LogManager;->checkPermission()V -Ljava/util/logging/LogManager;->checkSubclassPermissions()Ljava/lang/Void; -Ljava/util/logging/LogManager;->contexts()Ljava/util/List; -Ljava/util/logging/LogManager;->contextsMap:Ljava/util/WeakHashMap; -Ljava/util/logging/LogManager;->controlPermission:Ljava/security/Permission; -Ljava/util/logging/LogManager;->deathImminent:Z -Ljava/util/logging/LogManager;->defaultLevel:Ljava/util/logging/Level; -Ljava/util/logging/LogManager;->demandLogger(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/logging/Logger; -Ljava/util/logging/LogManager;->demandSystemLogger(Ljava/lang/String;Ljava/lang/String;)Ljava/util/logging/Logger; -Ljava/util/logging/LogManager;->doSetLevel(Ljava/util/logging/Logger;Ljava/util/logging/Level;)V -Ljava/util/logging/LogManager;->doSetParent(Ljava/util/logging/Logger;Ljava/util/logging/Logger;)V -Ljava/util/logging/LogManager;->drainLoggerRefQueueBounded()V -Ljava/util/logging/LogManager;->ensureLogManagerInitialized()V -Ljava/util/logging/LogManager;->getBooleanProperty(Ljava/lang/String;Z)Z -Ljava/util/logging/LogManager;->getClassInstance(Ljava/lang/String;)Ljava/lang/Class; -Ljava/util/logging/LogManager;->getFilterProperty(Ljava/lang/String;Ljava/util/logging/Filter;)Ljava/util/logging/Filter; -Ljava/util/logging/LogManager;->getIntProperty(Ljava/lang/String;I)I -Ljava/util/logging/LogManager;->getLevelProperty(Ljava/lang/String;Ljava/util/logging/Level;)Ljava/util/logging/Level; -Ljava/util/logging/LogManager;->getStringProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Ljava/util/logging/LogManager;->getSystemContext()Ljava/util/logging/LogManager$LoggerContext; -Ljava/util/logging/LogManager;->getUserContext()Ljava/util/logging/LogManager$LoggerContext; -Ljava/util/logging/LogManager;->initializationDone:Z -Ljava/util/logging/LogManager;->initializedCalled:Z -Ljava/util/logging/LogManager;->initializedGlobalHandlers:Z -Ljava/util/logging/LogManager;->initializeGlobalHandlers()V -Ljava/util/logging/LogManager;->listenerMap:Ljava/util/Map; -Ljava/util/logging/LogManager;->loadLoggerHandlers(Ljava/util/logging/Logger;Ljava/lang/String;Ljava/lang/String;)V -Ljava/util/logging/LogManager;->loggerRefQueue:Ljava/lang/ref/ReferenceQueue; -Ljava/util/logging/LogManager;->loggingMXBean:Ljava/util/logging/LoggingMXBean; -Ljava/util/logging/LogManager;->manager:Ljava/util/logging/LogManager; -Ljava/util/logging/LogManager;->MAX_ITERATIONS:I -Ljava/util/logging/LogManager;->parseClassNames(Ljava/lang/String;)[Ljava/lang/String; -Ljava/util/logging/LogManager;->props:Ljava/util/Properties; -Ljava/util/logging/LogManager;->readPrimordialConfiguration()V -Ljava/util/logging/LogManager;->readPrimordialConfiguration:Z -Ljava/util/logging/LogManager;->resetLogger(Ljava/util/logging/Logger;)V -Ljava/util/logging/LogManager;->rootLogger:Ljava/util/logging/Logger; -Ljava/util/logging/LogManager;->setLevelsOnExistingLoggers()V -Ljava/util/logging/LogManager;->systemContext:Ljava/util/logging/LogManager$LoggerContext; -Ljava/util/logging/LogManager;->userContext:Ljava/util/logging/LogManager$LoggerContext; -Ljava/util/logging/LogRecord;->defaultThreadID()I -Ljava/util/logging/LogRecord;->globalSequenceNumber:Ljava/util/concurrent/atomic/AtomicLong; -Ljava/util/logging/LogRecord;->inferCaller()V -Ljava/util/logging/LogRecord;->isLoggerImplFrame(Ljava/lang/String;)Z -Ljava/util/logging/LogRecord;->level:Ljava/util/logging/Level; -Ljava/util/logging/LogRecord;->loggerName:Ljava/lang/String; -Ljava/util/logging/LogRecord;->message:Ljava/lang/String; -Ljava/util/logging/LogRecord;->millis:J -Ljava/util/logging/LogRecord;->MIN_SEQUENTIAL_THREAD_ID:I -Ljava/util/logging/LogRecord;->needToInferCaller:Z -Ljava/util/logging/LogRecord;->nextThreadId:Ljava/util/concurrent/atomic/AtomicInteger; -Ljava/util/logging/LogRecord;->parameters:[Ljava/lang/Object; -Ljava/util/logging/LogRecord;->resourceBundle:Ljava/util/ResourceBundle; -Ljava/util/logging/LogRecord;->resourceBundleName:Ljava/lang/String; -Ljava/util/logging/LogRecord;->sequenceNumber:J -Ljava/util/logging/LogRecord;->sourceClassName:Ljava/lang/String; -Ljava/util/logging/LogRecord;->sourceMethodName:Ljava/lang/String; -Ljava/util/logging/LogRecord;->threadID:I -Ljava/util/logging/LogRecord;->threadIds:Ljava/lang/ThreadLocal; -Ljava/util/logging/LogRecord;->thrown:Ljava/lang/Throwable; -Ljava/util/logging/MemoryHandler;->buffer:[Ljava/util/logging/LogRecord; -Ljava/util/logging/MemoryHandler;->configure()V -Ljava/util/logging/MemoryHandler;->count:I -Ljava/util/logging/MemoryHandler;->DEFAULT_SIZE:I -Ljava/util/logging/MemoryHandler;->init()V -Ljava/util/logging/MemoryHandler;->pushLevel:Ljava/util/logging/Level; -Ljava/util/logging/MemoryHandler;->size:I -Ljava/util/logging/MemoryHandler;->start:I -Ljava/util/logging/MemoryHandler;->target:Ljava/util/logging/Handler; -Ljava/util/logging/SimpleFormatter;->dat:Ljava/util/Date; -Ljava/util/logging/SimpleFormatter;->format:Ljava/lang/String; -Ljava/util/logging/SocketHandler;->configure()V -Ljava/util/logging/SocketHandler;->connect()V -Ljava/util/logging/SocketHandler;->host:Ljava/lang/String; -Ljava/util/logging/SocketHandler;->port:I -Ljava/util/logging/SocketHandler;->sock:Ljava/net/Socket; -Ljava/util/logging/StreamHandler;->configure()V -Ljava/util/logging/StreamHandler;->doneHeader:Z -Ljava/util/logging/StreamHandler;->flushAndClose()V -Ljava/util/logging/StreamHandler;->output:Ljava/io/OutputStream; -Ljava/util/logging/StreamHandler;->writer:Ljava/io/Writer; -Ljava/util/logging/XMLFormatter;->a2(Ljava/lang/StringBuilder;I)V -Ljava/util/logging/XMLFormatter;->appendISO8601(Ljava/lang/StringBuilder;J)V -Ljava/util/logging/XMLFormatter;->escape(Ljava/lang/StringBuilder;Ljava/lang/String;)V -Ljava/util/logging/XMLFormatter;->manager:Ljava/util/logging/LogManager; -Ljava/util/LongSummaryStatistics;->count:J -Ljava/util/LongSummaryStatistics;->max:J -Ljava/util/LongSummaryStatistics;->min:J -Ljava/util/LongSummaryStatistics;->sum:J -Ljava/util/MissingFormatArgumentException;->s:Ljava/lang/String; -Ljava/util/MissingFormatWidthException;->s:Ljava/lang/String; -Ljava/util/MissingResourceException;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V -Ljava/util/MissingResourceException;->className:Ljava/lang/String; -Ljava/util/MissingResourceException;->key:Ljava/lang/String; -Ljava/util/Objects;-><init>()V -Ljava/util/Observable;->changed:Z -Ljava/util/Observable;->obs:Ljava/util/Vector; -Ljava/util/Optional;-><init>()V -Ljava/util/Optional;-><init>(Ljava/lang/Object;)V -Ljava/util/Optional;->EMPTY:Ljava/util/Optional; -Ljava/util/Optional;->value:Ljava/lang/Object; -Ljava/util/OptionalDouble;-><init>()V -Ljava/util/OptionalDouble;-><init>(D)V -Ljava/util/OptionalDouble;->EMPTY:Ljava/util/OptionalDouble; -Ljava/util/OptionalDouble;->isPresent:Z -Ljava/util/OptionalDouble;->value:D -Ljava/util/OptionalInt;-><init>()V -Ljava/util/OptionalInt;-><init>(I)V -Ljava/util/OptionalInt;->EMPTY:Ljava/util/OptionalInt; -Ljava/util/OptionalInt;->isPresent:Z -Ljava/util/OptionalInt;->value:I -Ljava/util/OptionalLong;-><init>()V -Ljava/util/OptionalLong;-><init>(J)V -Ljava/util/OptionalLong;->EMPTY:Ljava/util/OptionalLong; -Ljava/util/OptionalLong;->isPresent:Z -Ljava/util/OptionalLong;->value:J -Ljava/util/prefs/AbstractPreferences$EventDispatchThread;-><init>()V -Ljava/util/prefs/AbstractPreferences;->absolutePath:Ljava/lang/String; -Ljava/util/prefs/AbstractPreferences;->EMPTY_ABSTRACT_PREFS_ARRAY:[Ljava/util/prefs/AbstractPreferences; -Ljava/util/prefs/AbstractPreferences;->EMPTY_STRING_ARRAY:[Ljava/lang/String; -Ljava/util/prefs/AbstractPreferences;->enqueueNodeAddedEvent(Ljava/util/prefs/Preferences;)V -Ljava/util/prefs/AbstractPreferences;->enqueueNodeRemovedEvent(Ljava/util/prefs/Preferences;)V -Ljava/util/prefs/AbstractPreferences;->enqueuePreferenceChangeEvent(Ljava/lang/String;Ljava/lang/String;)V -Ljava/util/prefs/AbstractPreferences;->eventDispatchThread:Ljava/lang/Thread; -Ljava/util/prefs/AbstractPreferences;->eventQueue:Ljava/util/List; -Ljava/util/prefs/AbstractPreferences;->flush2()V -Ljava/util/prefs/AbstractPreferences;->kidCache:Ljava/util/Map; -Ljava/util/prefs/AbstractPreferences;->name:Ljava/lang/String; -Ljava/util/prefs/AbstractPreferences;->node(Ljava/util/StringTokenizer;)Ljava/util/prefs/Preferences; -Ljava/util/prefs/AbstractPreferences;->nodeExists(Ljava/util/StringTokenizer;)Z -Ljava/util/prefs/AbstractPreferences;->nodeListeners()[Ljava/util/prefs/NodeChangeListener; -Ljava/util/prefs/AbstractPreferences;->nodeListeners:Ljava/util/ArrayList; -Ljava/util/prefs/AbstractPreferences;->parent:Ljava/util/prefs/AbstractPreferences; -Ljava/util/prefs/AbstractPreferences;->prefListeners()[Ljava/util/prefs/PreferenceChangeListener; -Ljava/util/prefs/AbstractPreferences;->prefListeners:Ljava/util/ArrayList; -Ljava/util/prefs/AbstractPreferences;->removed:Z -Ljava/util/prefs/AbstractPreferences;->removeNode2()V -Ljava/util/prefs/AbstractPreferences;->root:Ljava/util/prefs/AbstractPreferences; -Ljava/util/prefs/AbstractPreferences;->startEventDispatchThreadIfNecessary()V -Ljava/util/prefs/AbstractPreferences;->sync2()V -Ljava/util/prefs/FileSystemPreferences$Change;->replay()V -Ljava/util/prefs/FileSystemPreferences$NodeCreate;->replay()V -Ljava/util/prefs/FileSystemPreferences$Put;->key:Ljava/lang/String; -Ljava/util/prefs/FileSystemPreferences$Put;->replay()V -Ljava/util/prefs/FileSystemPreferences$Put;->value:Ljava/lang/String; -Ljava/util/prefs/FileSystemPreferences$Remove;->key:Ljava/lang/String; -Ljava/util/prefs/FileSystemPreferences$Remove;->replay()V -Ljava/util/prefs/FileSystemPreferences;-><init>(Ljava/lang/String;Ljava/io/File;Z)V -Ljava/util/prefs/FileSystemPreferences;-><init>(Ljava/util/prefs/FileSystemPreferences;Ljava/lang/String;)V -Ljava/util/prefs/FileSystemPreferences;-><init>(Z)V -Ljava/util/prefs/FileSystemPreferences;->byteArray(Ljava/lang/String;)[B -Ljava/util/prefs/FileSystemPreferences;->changeLog:Ljava/util/List; -Ljava/util/prefs/FileSystemPreferences;->checkLockFile0ErrorCode(I)V -Ljava/util/prefs/FileSystemPreferences;->chmod(Ljava/lang/String;I)I -Ljava/util/prefs/FileSystemPreferences;->dir:Ljava/io/File; -Ljava/util/prefs/FileSystemPreferences;->dirName(Ljava/lang/String;)Ljava/lang/String; -Ljava/util/prefs/FileSystemPreferences;->EACCES:I -Ljava/util/prefs/FileSystemPreferences;->EAGAIN:I -Ljava/util/prefs/FileSystemPreferences;->EMPTY_STRING_ARRAY:[Ljava/lang/String; -Ljava/util/prefs/FileSystemPreferences;->ERROR_CODE:I -Ljava/util/prefs/FileSystemPreferences;->getLogger()Lsun/util/logging/PlatformLogger; -Ljava/util/prefs/FileSystemPreferences;->getSystemRoot()Ljava/util/prefs/Preferences; -Ljava/util/prefs/FileSystemPreferences;->getUserRoot()Ljava/util/prefs/Preferences; -Ljava/util/prefs/FileSystemPreferences;->initCacheIfNecessary()V -Ljava/util/prefs/FileSystemPreferences;->INIT_SLEEP_TIME:I -Ljava/util/prefs/FileSystemPreferences;->isDirChar(C)Z -Ljava/util/prefs/FileSystemPreferences;->isSystemRootModified:Z -Ljava/util/prefs/FileSystemPreferences;->isSystemRootWritable:Z -Ljava/util/prefs/FileSystemPreferences;->isUserNode:Z -Ljava/util/prefs/FileSystemPreferences;->isUserRootModified:Z -Ljava/util/prefs/FileSystemPreferences;->isUserRootWritable:Z -Ljava/util/prefs/FileSystemPreferences;->lastSyncTime:J -Ljava/util/prefs/FileSystemPreferences;->loadCache()V -Ljava/util/prefs/FileSystemPreferences;->lockFile(Z)Z -Ljava/util/prefs/FileSystemPreferences;->lockFile0(Ljava/lang/String;IZ)[I -Ljava/util/prefs/FileSystemPreferences;->LOCK_HANDLE:I -Ljava/util/prefs/FileSystemPreferences;->MAX_ATTEMPTS:I -Ljava/util/prefs/FileSystemPreferences;->nodeCreate:Ljava/util/prefs/FileSystemPreferences$NodeCreate; -Ljava/util/prefs/FileSystemPreferences;->nodeName(Ljava/lang/String;)Ljava/lang/String; -Ljava/util/prefs/FileSystemPreferences;->prefsCache:Ljava/util/Map; -Ljava/util/prefs/FileSystemPreferences;->prefsFile:Ljava/io/File; -Ljava/util/prefs/FileSystemPreferences;->replayChanges()V -Ljava/util/prefs/FileSystemPreferences;->setupSystemRoot()V -Ljava/util/prefs/FileSystemPreferences;->setupUserRoot()V -Ljava/util/prefs/FileSystemPreferences;->syncSpiPrivileged()V -Ljava/util/prefs/FileSystemPreferences;->syncWorld()V -Ljava/util/prefs/FileSystemPreferences;->systemLockFile:Ljava/io/File; -Ljava/util/prefs/FileSystemPreferences;->systemRoot:Ljava/util/prefs/Preferences; -Ljava/util/prefs/FileSystemPreferences;->systemRootDir:Ljava/io/File; -Ljava/util/prefs/FileSystemPreferences;->systemRootLockHandle:I -Ljava/util/prefs/FileSystemPreferences;->systemRootModFile:Ljava/io/File; -Ljava/util/prefs/FileSystemPreferences;->systemRootModTime:J -Ljava/util/prefs/FileSystemPreferences;->tmpFile:Ljava/io/File; -Ljava/util/prefs/FileSystemPreferences;->unlockFile()V -Ljava/util/prefs/FileSystemPreferences;->unlockFile0(I)I -Ljava/util/prefs/FileSystemPreferences;->userLockFile:Ljava/io/File; -Ljava/util/prefs/FileSystemPreferences;->userRoot:Ljava/util/prefs/Preferences; -Ljava/util/prefs/FileSystemPreferences;->userRootDir:Ljava/io/File; -Ljava/util/prefs/FileSystemPreferences;->userRootLockHandle:I -Ljava/util/prefs/FileSystemPreferences;->userRootModFile:Ljava/io/File; -Ljava/util/prefs/FileSystemPreferences;->userRootModTime:J -Ljava/util/prefs/FileSystemPreferences;->USER_READ_WRITE:I -Ljava/util/prefs/FileSystemPreferences;->USER_RWX:I -Ljava/util/prefs/FileSystemPreferences;->USER_RWX_ALL_RX:I -Ljava/util/prefs/FileSystemPreferences;->USER_RW_ALL_READ:I -Ljava/util/prefs/FileSystemPreferences;->writeBackCache()V -Ljava/util/prefs/NodeChangeEvent;->child:Ljava/util/prefs/Preferences; -Ljava/util/prefs/PreferenceChangeEvent;->key:Ljava/lang/String; -Ljava/util/prefs/PreferenceChangeEvent;->newValue:Ljava/lang/String; -Ljava/util/prefs/Preferences;->factory:Ljava/util/prefs/PreferencesFactory; -Ljava/util/prefs/Preferences;->findPreferencesFactory()Ljava/util/prefs/PreferencesFactory; -Ljava/util/prefs/Preferences;->nodeName(Ljava/lang/Class;)Ljava/lang/String; -Ljava/util/prefs/Preferences;->prefsPerm:Ljava/security/Permission; -Ljava/util/prefs/Preferences;->setPreferencesFactory(Ljava/util/prefs/PreferencesFactory;)Ljava/util/prefs/PreferencesFactory; -Ljava/util/PriorityQueue$Itr;->cursor:I -Ljava/util/PriorityQueue$Itr;->expectedModCount:I -Ljava/util/PriorityQueue$Itr;->forgetMeNot:Ljava/util/ArrayDeque; -Ljava/util/PriorityQueue$Itr;->lastRet:I -Ljava/util/PriorityQueue$Itr;->lastRetElt:Ljava/lang/Object; -Ljava/util/PriorityQueue$PriorityQueueSpliterator;-><init>(Ljava/util/PriorityQueue;III)V -Ljava/util/PriorityQueue$PriorityQueueSpliterator;->expectedModCount:I -Ljava/util/PriorityQueue$PriorityQueueSpliterator;->fence:I -Ljava/util/PriorityQueue$PriorityQueueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/PriorityQueue$PriorityQueueSpliterator;->getFence()I -Ljava/util/PriorityQueue$PriorityQueueSpliterator;->index:I -Ljava/util/PriorityQueue$PriorityQueueSpliterator;->pq:Ljava/util/PriorityQueue; -Ljava/util/PriorityQueue$PriorityQueueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/PriorityQueue;->comparator:Ljava/util/Comparator; -Ljava/util/PriorityQueue;->DEFAULT_INITIAL_CAPACITY:I -Ljava/util/PriorityQueue;->grow(I)V -Ljava/util/PriorityQueue;->heapify()V -Ljava/util/PriorityQueue;->hugeCapacity(I)I -Ljava/util/PriorityQueue;->indexOf(Ljava/lang/Object;)I -Ljava/util/PriorityQueue;->initElementsFromCollection(Ljava/util/Collection;)V -Ljava/util/PriorityQueue;->initFromCollection(Ljava/util/Collection;)V -Ljava/util/PriorityQueue;->initFromPriorityQueue(Ljava/util/PriorityQueue;)V -Ljava/util/PriorityQueue;->MAX_ARRAY_SIZE:I -Ljava/util/PriorityQueue;->removeAt(I)Ljava/lang/Object; -Ljava/util/PriorityQueue;->removeEq(Ljava/lang/Object;)Z -Ljava/util/PriorityQueue;->siftDown(ILjava/lang/Object;)V -Ljava/util/PriorityQueue;->siftDownComparable(ILjava/lang/Object;)V -Ljava/util/PriorityQueue;->siftDownUsingComparator(ILjava/lang/Object;)V -Ljava/util/PriorityQueue;->siftUp(ILjava/lang/Object;)V -Ljava/util/PriorityQueue;->siftUpComparable(ILjava/lang/Object;)V -Ljava/util/PriorityQueue;->siftUpUsingComparator(ILjava/lang/Object;)V -Ljava/util/Properties$LineReader;->inByteBuf:[B -Ljava/util/Properties$LineReader;->inCharBuf:[C -Ljava/util/Properties$LineReader;->inLimit:I -Ljava/util/Properties$LineReader;->inOff:I -Ljava/util/Properties$LineReader;->inStream:Ljava/io/InputStream; -Ljava/util/Properties$LineReader;->lineBuf:[C -Ljava/util/Properties$LineReader;->reader:Ljava/io/Reader; -Ljava/util/Properties$LineReader;->readLine()I -Ljava/util/Properties;->enumerate(Ljava/util/Hashtable;)V -Ljava/util/Properties;->enumerateStringProperties(Ljava/util/Hashtable;)V -Ljava/util/Properties;->hexDigit:[C -Ljava/util/Properties;->load0(Ljava/util/Properties$LineReader;)V -Ljava/util/Properties;->loadConvert([CII[C)Ljava/lang/String; -Ljava/util/Properties;->store0(Ljava/io/BufferedWriter;Ljava/lang/String;Z)V -Ljava/util/Properties;->toHex(I)C -Ljava/util/Properties;->writeComments(Ljava/io/BufferedWriter;Ljava/lang/String;)V -Ljava/util/PropertyResourceBundle;->lookup:Ljava/util/Map; -Ljava/util/Random$RandomDoublesSpliterator;-><init>(Ljava/util/Random;JJDD)V -Ljava/util/Random$RandomDoublesSpliterator;->bound:D -Ljava/util/Random$RandomDoublesSpliterator;->fence:J -Ljava/util/Random$RandomDoublesSpliterator;->index:J -Ljava/util/Random$RandomDoublesSpliterator;->origin:D -Ljava/util/Random$RandomDoublesSpliterator;->rng:Ljava/util/Random; -Ljava/util/Random$RandomIntsSpliterator;-><init>(Ljava/util/Random;JJII)V -Ljava/util/Random$RandomIntsSpliterator;->bound:I -Ljava/util/Random$RandomIntsSpliterator;->fence:J -Ljava/util/Random$RandomIntsSpliterator;->index:J -Ljava/util/Random$RandomIntsSpliterator;->origin:I -Ljava/util/Random$RandomIntsSpliterator;->rng:Ljava/util/Random; -Ljava/util/Random$RandomLongsSpliterator;-><init>(Ljava/util/Random;JJJJ)V -Ljava/util/Random$RandomLongsSpliterator;->bound:J -Ljava/util/Random$RandomLongsSpliterator;->fence:J -Ljava/util/Random$RandomLongsSpliterator;->index:J -Ljava/util/Random$RandomLongsSpliterator;->origin:J -Ljava/util/Random$RandomLongsSpliterator;->rng:Ljava/util/Random; -Ljava/util/Random;->addend:J -Ljava/util/Random;->BadBound:Ljava/lang/String; -Ljava/util/Random;->BadRange:Ljava/lang/String; -Ljava/util/Random;->BadSize:Ljava/lang/String; -Ljava/util/Random;->DOUBLE_UNIT:D -Ljava/util/Random;->haveNextNextGaussian:Z -Ljava/util/Random;->initialScramble(J)J -Ljava/util/Random;->internalNextDouble(DD)D -Ljava/util/Random;->internalNextInt(II)I -Ljava/util/Random;->internalNextLong(JJ)J -Ljava/util/Random;->mask:J -Ljava/util/Random;->multiplier:J -Ljava/util/Random;->nextNextGaussian:D -Ljava/util/Random;->resetSeed(J)V -Ljava/util/Random;->seed:Ljava/util/concurrent/atomic/AtomicLong; -Ljava/util/Random;->seedOffset:J -Ljava/util/Random;->seedUniquifier:Ljava/util/concurrent/atomic/AtomicLong; -Ljava/util/Random;->unsafe:Lsun/misc/Unsafe; -Ljava/util/regex/Matcher$OffsetBasedMatchResult;-><init>(Ljava/lang/String;[I)V -Ljava/util/regex/Matcher$OffsetBasedMatchResult;->input:Ljava/lang/String; -Ljava/util/regex/Matcher$OffsetBasedMatchResult;->offsets:[I -Ljava/util/regex/Matcher;-><init>(Ljava/util/regex/Pattern;Ljava/lang/CharSequence;)V -Ljava/util/regex/Matcher;->address:J -Ljava/util/regex/Matcher;->anchoringBounds:Z -Ljava/util/regex/Matcher;->appendEvaluated(Ljava/lang/StringBuffer;Ljava/lang/String;)V -Ljava/util/regex/Matcher;->ensureMatch()V -Ljava/util/regex/Matcher;->findImpl(JI[I)Z -Ljava/util/regex/Matcher;->findNextImpl(J[I)Z -Ljava/util/regex/Matcher;->getMatchedGroupIndex(JLjava/lang/String;)I -Ljava/util/regex/Matcher;->getMatchedGroupIndex0(JLjava/lang/String;)I -Ljava/util/regex/Matcher;->getNativeFinalizer()J -Ljava/util/regex/Matcher;->groupCountImpl(J)I -Ljava/util/regex/Matcher;->hitEndImpl(J)Z -Ljava/util/regex/Matcher;->input:Ljava/lang/String; -Ljava/util/regex/Matcher;->lookingAtImpl(J[I)Z -Ljava/util/regex/Matcher;->matchesImpl(J[I)Z -Ljava/util/regex/Matcher;->matchFound:Z -Ljava/util/regex/Matcher;->matchOffsets:[I -Ljava/util/regex/Matcher;->nativeFinalizer:Ljava/lang/Runnable; -Ljava/util/regex/Matcher;->nativeSize()I -Ljava/util/regex/Matcher;->openImpl(J)J -Ljava/util/regex/Matcher;->originalInput:Ljava/lang/CharSequence; -Ljava/util/regex/Matcher;->pattern:Ljava/util/regex/Pattern; -Ljava/util/regex/Matcher;->regionEnd:I -Ljava/util/regex/Matcher;->regionStart:I -Ljava/util/regex/Matcher;->registry:Llibcore/util/NativeAllocationRegistry; -Ljava/util/regex/Matcher;->requireEndImpl(J)Z -Ljava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;II)Ljava/util/regex/Matcher; -Ljava/util/regex/Matcher;->resetForInput()V -Ljava/util/regex/Matcher;->setInputImpl(JLjava/lang/String;II)V -Ljava/util/regex/Matcher;->transparentBounds:Z -Ljava/util/regex/Matcher;->useAnchoringBoundsImpl(JZ)V -Ljava/util/regex/Matcher;->useTransparentBoundsImpl(JZ)V -Ljava/util/regex/Pattern;-><init>(Ljava/lang/String;I)V -Ljava/util/regex/Pattern;->address:J -Ljava/util/regex/Pattern;->compile()V -Ljava/util/regex/Pattern;->compileImpl(Ljava/lang/String;I)J -Ljava/util/regex/Pattern;->fastSplit(Ljava/lang/String;Ljava/lang/String;I)[Ljava/lang/String; -Ljava/util/regex/Pattern;->FASTSPLIT_METACHARACTERS:Ljava/lang/String; -Ljava/util/regex/Pattern;->flags:I -Ljava/util/regex/Pattern;->getNativeFinalizer()J -Ljava/util/regex/Pattern;->nativeSize()I -Ljava/util/regex/Pattern;->pattern:Ljava/lang/String; -Ljava/util/regex/Pattern;->registry:Llibcore/util/NativeAllocationRegistry; -Ljava/util/regex/PatternSyntaxException;->desc:Ljava/lang/String; -Ljava/util/regex/PatternSyntaxException;->index:I -Ljava/util/regex/PatternSyntaxException;->nl:Ljava/lang/String; -Ljava/util/regex/PatternSyntaxException;->pattern:Ljava/lang/String; -Ljava/util/ResourceBundle$BundleReference;-><init>(Ljava/util/ResourceBundle;Ljava/lang/ref/ReferenceQueue;Ljava/util/ResourceBundle$CacheKey;)V -Ljava/util/ResourceBundle$BundleReference;->cacheKey:Ljava/util/ResourceBundle$CacheKey; -Ljava/util/ResourceBundle$BundleReference;->getCacheKey()Ljava/util/ResourceBundle$CacheKey; -Ljava/util/ResourceBundle$CacheKey;-><init>(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;)V -Ljava/util/ResourceBundle$CacheKey;->calculateHashCode()V -Ljava/util/ResourceBundle$CacheKey;->cause:Ljava/lang/Throwable; -Ljava/util/ResourceBundle$CacheKey;->expirationTime:J -Ljava/util/ResourceBundle$CacheKey;->format:Ljava/lang/String; -Ljava/util/ResourceBundle$CacheKey;->getCause()Ljava/lang/Throwable; -Ljava/util/ResourceBundle$CacheKey;->getFormat()Ljava/lang/String; -Ljava/util/ResourceBundle$CacheKey;->getLoader()Ljava/lang/ClassLoader; -Ljava/util/ResourceBundle$CacheKey;->getLocale()Ljava/util/Locale; -Ljava/util/ResourceBundle$CacheKey;->getName()Ljava/lang/String; -Ljava/util/ResourceBundle$CacheKey;->hashCodeCache:I -Ljava/util/ResourceBundle$CacheKey;->loaderRef:Ljava/util/ResourceBundle$LoaderReference; -Ljava/util/ResourceBundle$CacheKey;->loadTime:J -Ljava/util/ResourceBundle$CacheKey;->locale:Ljava/util/Locale; -Ljava/util/ResourceBundle$CacheKey;->name:Ljava/lang/String; -Ljava/util/ResourceBundle$CacheKey;->setCause(Ljava/lang/Throwable;)V -Ljava/util/ResourceBundle$CacheKey;->setFormat(Ljava/lang/String;)V -Ljava/util/ResourceBundle$CacheKey;->setLocale(Ljava/util/Locale;)Ljava/util/ResourceBundle$CacheKey; -Ljava/util/ResourceBundle$CacheKey;->setName(Ljava/lang/String;)Ljava/util/ResourceBundle$CacheKey; -Ljava/util/ResourceBundle$CacheKeyReference;->getCacheKey()Ljava/util/ResourceBundle$CacheKey; -Ljava/util/ResourceBundle$Control$CandidateListCache;-><init>()V -Ljava/util/ResourceBundle$Control$CandidateListCache;->createObject(Lsun/util/locale/BaseLocale;)Ljava/util/List; -Ljava/util/ResourceBundle$Control$CandidateListCache;->getDefaultList(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List; -Ljava/util/ResourceBundle$Control;->CANDIDATES_CACHE:Ljava/util/ResourceBundle$Control$CandidateListCache; -Ljava/util/ResourceBundle$Control;->INSTANCE:Ljava/util/ResourceBundle$Control; -Ljava/util/ResourceBundle$Control;->toResourceName0(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Ljava/util/ResourceBundle$LoaderReference;-><init>(Ljava/lang/ClassLoader;Ljava/lang/ref/ReferenceQueue;Ljava/util/ResourceBundle$CacheKey;)V -Ljava/util/ResourceBundle$LoaderReference;->cacheKey:Ljava/util/ResourceBundle$CacheKey; -Ljava/util/ResourceBundle$LoaderReference;->getCacheKey()Ljava/util/ResourceBundle$CacheKey; -Ljava/util/ResourceBundle$NoFallbackControl;-><init>(Ljava/util/List;)V -Ljava/util/ResourceBundle$NoFallbackControl;->CLASS_ONLY_NO_FALLBACK:Ljava/util/ResourceBundle$Control; -Ljava/util/ResourceBundle$NoFallbackControl;->NO_FALLBACK:Ljava/util/ResourceBundle$Control; -Ljava/util/ResourceBundle$NoFallbackControl;->PROPERTIES_ONLY_NO_FALLBACK:Ljava/util/ResourceBundle$Control; -Ljava/util/ResourceBundle$RBClassLoader;-><init>()V -Ljava/util/ResourceBundle$RBClassLoader;->INSTANCE:Ljava/util/ResourceBundle$RBClassLoader; -Ljava/util/ResourceBundle$RBClassLoader;->loader:Ljava/lang/ClassLoader; -Ljava/util/ResourceBundle$SingleFormatControl;-><init>(Ljava/util/List;)V -Ljava/util/ResourceBundle$SingleFormatControl;->CLASS_ONLY:Ljava/util/ResourceBundle$Control; -Ljava/util/ResourceBundle$SingleFormatControl;->formats:Ljava/util/List; -Ljava/util/ResourceBundle$SingleFormatControl;->PROPERTIES_ONLY:Ljava/util/ResourceBundle$Control; -Ljava/util/ResourceBundle;->cacheKey:Ljava/util/ResourceBundle$CacheKey; -Ljava/util/ResourceBundle;->cacheList:Ljava/util/concurrent/ConcurrentMap; -Ljava/util/ResourceBundle;->checkList(Ljava/util/List;)Z -Ljava/util/ResourceBundle;->expired:Z -Ljava/util/ResourceBundle;->findBundle(Ljava/util/ResourceBundle$CacheKey;Ljava/util/List;Ljava/util/List;ILjava/util/ResourceBundle$Control;Ljava/util/ResourceBundle;)Ljava/util/ResourceBundle; -Ljava/util/ResourceBundle;->findBundleInCache(Ljava/util/ResourceBundle$CacheKey;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle; -Ljava/util/ResourceBundle;->getBundleImpl(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/ClassLoader;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle; -Ljava/util/ResourceBundle;->getDefaultControl(Ljava/lang/String;)Ljava/util/ResourceBundle$Control; -Ljava/util/ResourceBundle;->getLoader(Ljava/lang/ClassLoader;)Ljava/lang/ClassLoader; -Ljava/util/ResourceBundle;->hasValidParentChain(Ljava/util/ResourceBundle;)Z -Ljava/util/ResourceBundle;->INITIAL_CACHE_SIZE:I -Ljava/util/ResourceBundle;->isValidBundle(Ljava/util/ResourceBundle;)Z -Ljava/util/ResourceBundle;->keySet:Ljava/util/Set; -Ljava/util/ResourceBundle;->loadBundle(Ljava/util/ResourceBundle$CacheKey;Ljava/util/List;Ljava/util/ResourceBundle$Control;Z)Ljava/util/ResourceBundle; -Ljava/util/ResourceBundle;->locale:Ljava/util/Locale; -Ljava/util/ResourceBundle;->name:Ljava/lang/String; -Ljava/util/ResourceBundle;->NONEXISTENT_BUNDLE:Ljava/util/ResourceBundle; -Ljava/util/ResourceBundle;->putBundleInCache(Ljava/util/ResourceBundle$CacheKey;Ljava/util/ResourceBundle;Ljava/util/ResourceBundle$Control;)Ljava/util/ResourceBundle; -Ljava/util/ResourceBundle;->referenceQueue:Ljava/lang/ref/ReferenceQueue; -Ljava/util/ResourceBundle;->setExpirationTime(Ljava/util/ResourceBundle$CacheKey;Ljava/util/ResourceBundle$Control;)V -Ljava/util/ResourceBundle;->throwMissingResourceException(Ljava/lang/String;Ljava/util/Locale;Ljava/lang/Throwable;)V -Ljava/util/Scanner;-><init>(Ljava/io/File;Ljava/nio/charset/CharsetDecoder;)V -Ljava/util/Scanner;-><init>(Ljava/lang/Readable;Ljava/util/regex/Pattern;)V -Ljava/util/Scanner;-><init>(Ljava/nio/file/Path;Ljava/nio/charset/Charset;)V -Ljava/util/Scanner;->BOOLEAN_PATTERN:Ljava/lang/String; -Ljava/util/Scanner;->boolPattern()Ljava/util/regex/Pattern; -Ljava/util/Scanner;->boolPattern:Ljava/util/regex/Pattern; -Ljava/util/Scanner;->buf:Ljava/nio/CharBuffer; -Ljava/util/Scanner;->BUFFER_SIZE:I -Ljava/util/Scanner;->buildFloatAndDecimalPattern()V -Ljava/util/Scanner;->buildIntegerPatternString()Ljava/lang/String; -Ljava/util/Scanner;->cacheResult()V -Ljava/util/Scanner;->cacheResult(Ljava/lang/String;)V -Ljava/util/Scanner;->clearCaches()V -Ljava/util/Scanner;->closed:Z -Ljava/util/Scanner;->decimalPattern()Ljava/util/regex/Pattern; -Ljava/util/Scanner;->decimalPattern:Ljava/util/regex/Pattern; -Ljava/util/Scanner;->decimalSeparator:Ljava/lang/String; -Ljava/util/Scanner;->defaultRadix:I -Ljava/util/Scanner;->delimPattern:Ljava/util/regex/Pattern; -Ljava/util/Scanner;->digits:Ljava/lang/String; -Ljava/util/Scanner;->ensureOpen()V -Ljava/util/Scanner;->findPatternInBuffer(Ljava/util/regex/Pattern;I)Ljava/lang/String; -Ljava/util/Scanner;->FIND_ANY_PATTERN:Ljava/util/regex/Pattern; -Ljava/util/Scanner;->floatPattern()Ljava/util/regex/Pattern; -Ljava/util/Scanner;->floatPattern:Ljava/util/regex/Pattern; -Ljava/util/Scanner;->getCachedResult()Ljava/lang/String; -Ljava/util/Scanner;->getCompleteTokenInBuffer(Ljava/util/regex/Pattern;)Ljava/lang/String; -Ljava/util/Scanner;->groupSeparator:Ljava/lang/String; -Ljava/util/Scanner;->hasNextPattern:Ljava/util/regex/Pattern; -Ljava/util/Scanner;->hasNextPosition:I -Ljava/util/Scanner;->hasNextResult:Ljava/lang/String; -Ljava/util/Scanner;->hasTokenInBuffer()Z -Ljava/util/Scanner;->infinityString:Ljava/lang/String; -Ljava/util/Scanner;->integerPattern()Ljava/util/regex/Pattern; -Ljava/util/Scanner;->integerPattern:Ljava/util/regex/Pattern; -Ljava/util/Scanner;->lastException:Ljava/io/IOException; -Ljava/util/Scanner;->linePattern()Ljava/util/regex/Pattern; -Ljava/util/Scanner;->linePattern:Ljava/util/regex/Pattern; -Ljava/util/Scanner;->LINE_PATTERN:Ljava/lang/String; -Ljava/util/Scanner;->LINE_SEPARATOR_PATTERN:Ljava/lang/String; -Ljava/util/Scanner;->locale:Ljava/util/Locale; -Ljava/util/Scanner;->makeReadable(Ljava/io/InputStream;Ljava/nio/charset/Charset;)Ljava/lang/Readable; -Ljava/util/Scanner;->makeReadable(Ljava/nio/channels/ReadableByteChannel;)Ljava/lang/Readable; -Ljava/util/Scanner;->makeReadable(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;)Ljava/lang/Readable; -Ljava/util/Scanner;->makeSpace()Z -Ljava/util/Scanner;->matcher:Ljava/util/regex/Matcher; -Ljava/util/Scanner;->matchPatternInBuffer(Ljava/util/regex/Pattern;)Ljava/lang/String; -Ljava/util/Scanner;->matchValid:Z -Ljava/util/Scanner;->nanString:Ljava/lang/String; -Ljava/util/Scanner;->needInput:Z -Ljava/util/Scanner;->negativePrefix:Ljava/lang/String; -Ljava/util/Scanner;->negativeSuffix:Ljava/lang/String; -Ljava/util/Scanner;->non0Digit:Ljava/lang/String; -Ljava/util/Scanner;->NON_ASCII_DIGIT:Ljava/util/regex/Pattern; -Ljava/util/Scanner;->patternCache:Lsun/misc/LRUCache; -Ljava/util/Scanner;->position:I -Ljava/util/Scanner;->positivePrefix:Ljava/lang/String; -Ljava/util/Scanner;->positiveSuffix:Ljava/lang/String; -Ljava/util/Scanner;->processFloatToken(Ljava/lang/String;)Ljava/lang/String; -Ljava/util/Scanner;->processIntegerToken(Ljava/lang/String;)Ljava/lang/String; -Ljava/util/Scanner;->radix:I -Ljava/util/Scanner;->readInput()V -Ljava/util/Scanner;->revertState()V -Ljava/util/Scanner;->revertState(Z)Z -Ljava/util/Scanner;->savedScannerPosition:I -Ljava/util/Scanner;->saveState()V -Ljava/util/Scanner;->separatorPattern()Ljava/util/regex/Pattern; -Ljava/util/Scanner;->separatorPattern:Ljava/util/regex/Pattern; -Ljava/util/Scanner;->setRadix(I)V -Ljava/util/Scanner;->SIMPLE_GROUP_INDEX:I -Ljava/util/Scanner;->skipped:Z -Ljava/util/Scanner;->source:Ljava/lang/Readable; -Ljava/util/Scanner;->sourceClosed:Z -Ljava/util/Scanner;->throwFor()V -Ljava/util/Scanner;->toCharset(Ljava/lang/String;)Ljava/nio/charset/Charset; -Ljava/util/Scanner;->toDecoder(Ljava/lang/String;)Ljava/nio/charset/CharsetDecoder; -Ljava/util/Scanner;->translateSavedIndexes(I)V -Ljava/util/Scanner;->typeCache:Ljava/lang/Object; -Ljava/util/Scanner;->useTypeCache()V -Ljava/util/Scanner;->WHITESPACE_PATTERN:Ljava/util/regex/Pattern; -Ljava/util/ServiceLoader$LazyIterator;->configs:Ljava/util/Enumeration; -Ljava/util/ServiceLoader$LazyIterator;->hasNextService()Z -Ljava/util/ServiceLoader$LazyIterator;->loader:Ljava/lang/ClassLoader; -Ljava/util/ServiceLoader$LazyIterator;->nextName:Ljava/lang/String; -Ljava/util/ServiceLoader$LazyIterator;->nextService()Ljava/lang/Object; -Ljava/util/ServiceLoader$LazyIterator;->pending:Ljava/util/Iterator; -Ljava/util/ServiceLoader$LazyIterator;->service:Ljava/lang/Class; -Ljava/util/ServiceLoader;-><init>(Ljava/lang/Class;Ljava/lang/ClassLoader;)V -Ljava/util/ServiceLoader;->fail(Ljava/lang/Class;Ljava/lang/String;)V -Ljava/util/ServiceLoader;->fail(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Throwable;)V -Ljava/util/ServiceLoader;->fail(Ljava/lang/Class;Ljava/net/URL;ILjava/lang/String;)V -Ljava/util/ServiceLoader;->loader:Ljava/lang/ClassLoader; -Ljava/util/ServiceLoader;->loadFromSystemProperty(Ljava/lang/Class;)Ljava/lang/Object; -Ljava/util/ServiceLoader;->lookupIterator:Ljava/util/ServiceLoader$LazyIterator; -Ljava/util/ServiceLoader;->parse(Ljava/lang/Class;Ljava/net/URL;)Ljava/util/Iterator; -Ljava/util/ServiceLoader;->parseLine(Ljava/lang/Class;Ljava/net/URL;Ljava/io/BufferedReader;ILjava/util/List;)I -Ljava/util/ServiceLoader;->PREFIX:Ljava/lang/String; -Ljava/util/ServiceLoader;->providers:Ljava/util/LinkedHashMap; -Ljava/util/ServiceLoader;->service:Ljava/lang/Class; -Ljava/util/SimpleTimeZone;->cacheEnd:J -Ljava/util/SimpleTimeZone;->cacheStart:J -Ljava/util/SimpleTimeZone;->cacheYear:J -Ljava/util/SimpleTimeZone;->currentSerialVersion:I -Ljava/util/SimpleTimeZone;->decodeEndRule()V -Ljava/util/SimpleTimeZone;->decodeRules()V -Ljava/util/SimpleTimeZone;->decodeStartRule()V -Ljava/util/SimpleTimeZone;->DOM_MODE:I -Ljava/util/SimpleTimeZone;->DOW_GE_DOM_MODE:I -Ljava/util/SimpleTimeZone;->DOW_IN_MONTH_MODE:I -Ljava/util/SimpleTimeZone;->DOW_LE_DOM_MODE:I -Ljava/util/SimpleTimeZone;->dstSavings:I -Ljava/util/SimpleTimeZone;->endDay:I -Ljava/util/SimpleTimeZone;->endDayOfWeek:I -Ljava/util/SimpleTimeZone;->endMode:I -Ljava/util/SimpleTimeZone;->endMonth:I -Ljava/util/SimpleTimeZone;->endTime:I -Ljava/util/SimpleTimeZone;->endTimeMode:I -Ljava/util/SimpleTimeZone;->gcal:Lsun/util/calendar/Gregorian; -Ljava/util/SimpleTimeZone;->getEnd(Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/BaseCalendar$Date;I)J -Ljava/util/SimpleTimeZone;->getOffset(Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/BaseCalendar$Date;IJ)I -Ljava/util/SimpleTimeZone;->getOffsets(J[I)I -Ljava/util/SimpleTimeZone;->getStart(Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/BaseCalendar$Date;I)J -Ljava/util/SimpleTimeZone;->getTransition(Lsun/util/calendar/BaseCalendar;Lsun/util/calendar/BaseCalendar$Date;IIIIII)J -Ljava/util/SimpleTimeZone;->invalidateCache()V -Ljava/util/SimpleTimeZone;->makeRulesCompatible()V -Ljava/util/SimpleTimeZone;->millisPerDay:I -Ljava/util/SimpleTimeZone;->millisPerHour:I -Ljava/util/SimpleTimeZone;->monthLength:[B -Ljava/util/SimpleTimeZone;->packRules()[B -Ljava/util/SimpleTimeZone;->packTimes()[I -Ljava/util/SimpleTimeZone;->rawOffset:I -Ljava/util/SimpleTimeZone;->serialVersionOnStream:I -Ljava/util/SimpleTimeZone;->startDay:I -Ljava/util/SimpleTimeZone;->startDayOfWeek:I -Ljava/util/SimpleTimeZone;->startMode:I -Ljava/util/SimpleTimeZone;->startMonth:I -Ljava/util/SimpleTimeZone;->startTime:I -Ljava/util/SimpleTimeZone;->startTimeMode:I -Ljava/util/SimpleTimeZone;->startYear:I -Ljava/util/SimpleTimeZone;->staticLeapMonthLength:[B -Ljava/util/SimpleTimeZone;->staticMonthLength:[B -Ljava/util/SimpleTimeZone;->unpackRules([B)V -Ljava/util/SimpleTimeZone;->unpackTimes([I)V -Ljava/util/SimpleTimeZone;->useDaylight:Z -Ljava/util/Spliterators$AbstractDoubleSpliterator$HoldingDoubleConsumer;-><init>()V -Ljava/util/Spliterators$AbstractDoubleSpliterator$HoldingDoubleConsumer;->value:D -Ljava/util/Spliterators$AbstractDoubleSpliterator;->batch:I -Ljava/util/Spliterators$AbstractDoubleSpliterator;->BATCH_UNIT:I -Ljava/util/Spliterators$AbstractDoubleSpliterator;->characteristics:I -Ljava/util/Spliterators$AbstractDoubleSpliterator;->est:J -Ljava/util/Spliterators$AbstractDoubleSpliterator;->MAX_BATCH:I -Ljava/util/Spliterators$AbstractIntSpliterator$HoldingIntConsumer;-><init>()V -Ljava/util/Spliterators$AbstractIntSpliterator$HoldingIntConsumer;->value:I -Ljava/util/Spliterators$AbstractIntSpliterator;->batch:I -Ljava/util/Spliterators$AbstractIntSpliterator;->BATCH_UNIT:I -Ljava/util/Spliterators$AbstractIntSpliterator;->characteristics:I -Ljava/util/Spliterators$AbstractIntSpliterator;->est:J -Ljava/util/Spliterators$AbstractIntSpliterator;->MAX_BATCH:I -Ljava/util/Spliterators$AbstractLongSpliterator$HoldingLongConsumer;-><init>()V -Ljava/util/Spliterators$AbstractLongSpliterator$HoldingLongConsumer;->value:J -Ljava/util/Spliterators$AbstractLongSpliterator;->batch:I -Ljava/util/Spliterators$AbstractLongSpliterator;->BATCH_UNIT:I -Ljava/util/Spliterators$AbstractLongSpliterator;->characteristics:I -Ljava/util/Spliterators$AbstractLongSpliterator;->est:J -Ljava/util/Spliterators$AbstractLongSpliterator;->MAX_BATCH:I -Ljava/util/Spliterators$AbstractSpliterator$HoldingConsumer;-><init>()V -Ljava/util/Spliterators$AbstractSpliterator$HoldingConsumer;->value:Ljava/lang/Object; -Ljava/util/Spliterators$AbstractSpliterator;->batch:I -Ljava/util/Spliterators$AbstractSpliterator;->BATCH_UNIT:I -Ljava/util/Spliterators$AbstractSpliterator;->characteristics:I -Ljava/util/Spliterators$AbstractSpliterator;->est:J -Ljava/util/Spliterators$AbstractSpliterator;->MAX_BATCH:I -Ljava/util/Spliterators$ArraySpliterator;-><init>([Ljava/lang/Object;I)V -Ljava/util/Spliterators$ArraySpliterator;-><init>([Ljava/lang/Object;III)V -Ljava/util/Spliterators$ArraySpliterator;->array:[Ljava/lang/Object; -Ljava/util/Spliterators$ArraySpliterator;->characteristics:I -Ljava/util/Spliterators$ArraySpliterator;->fence:I -Ljava/util/Spliterators$ArraySpliterator;->index:I -Ljava/util/Spliterators$DoubleArraySpliterator;-><init>([DI)V -Ljava/util/Spliterators$DoubleArraySpliterator;-><init>([DIII)V -Ljava/util/Spliterators$DoubleArraySpliterator;->array:[D -Ljava/util/Spliterators$DoubleArraySpliterator;->characteristics:I -Ljava/util/Spliterators$DoubleArraySpliterator;->fence:I -Ljava/util/Spliterators$DoubleArraySpliterator;->index:I -Ljava/util/Spliterators$DoubleIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfDouble;I)V -Ljava/util/Spliterators$DoubleIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfDouble;JI)V -Ljava/util/Spliterators$DoubleIteratorSpliterator;->batch:I -Ljava/util/Spliterators$DoubleIteratorSpliterator;->BATCH_UNIT:I -Ljava/util/Spliterators$DoubleIteratorSpliterator;->characteristics:I -Ljava/util/Spliterators$DoubleIteratorSpliterator;->est:J -Ljava/util/Spliterators$DoubleIteratorSpliterator;->it:Ljava/util/PrimitiveIterator$OfDouble; -Ljava/util/Spliterators$DoubleIteratorSpliterator;->MAX_BATCH:I -Ljava/util/Spliterators$EmptySpliterator$OfDouble;-><init>()V -Ljava/util/Spliterators$EmptySpliterator$OfInt;-><init>()V -Ljava/util/Spliterators$EmptySpliterator$OfLong;-><init>()V -Ljava/util/Spliterators$EmptySpliterator$OfRef;-><init>()V -Ljava/util/Spliterators$EmptySpliterator;-><init>()V -Ljava/util/Spliterators$EmptySpliterator;->characteristics()I -Ljava/util/Spliterators$EmptySpliterator;->estimateSize()J -Ljava/util/Spliterators$EmptySpliterator;->forEachRemaining(Ljava/lang/Object;)V -Ljava/util/Spliterators$EmptySpliterator;->tryAdvance(Ljava/lang/Object;)Z -Ljava/util/Spliterators$EmptySpliterator;->trySplit()Ljava/util/Spliterator; -Ljava/util/Spliterators$IntArraySpliterator;-><init>([II)V -Ljava/util/Spliterators$IntArraySpliterator;-><init>([IIII)V -Ljava/util/Spliterators$IntArraySpliterator;->array:[I -Ljava/util/Spliterators$IntArraySpliterator;->characteristics:I -Ljava/util/Spliterators$IntArraySpliterator;->fence:I -Ljava/util/Spliterators$IntArraySpliterator;->index:I -Ljava/util/Spliterators$IntIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfInt;I)V -Ljava/util/Spliterators$IntIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfInt;JI)V -Ljava/util/Spliterators$IntIteratorSpliterator;->batch:I -Ljava/util/Spliterators$IntIteratorSpliterator;->BATCH_UNIT:I -Ljava/util/Spliterators$IntIteratorSpliterator;->characteristics:I -Ljava/util/Spliterators$IntIteratorSpliterator;->est:J -Ljava/util/Spliterators$IntIteratorSpliterator;->it:Ljava/util/PrimitiveIterator$OfInt; -Ljava/util/Spliterators$IntIteratorSpliterator;->MAX_BATCH:I -Ljava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Collection;I)V -Ljava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Iterator;I)V -Ljava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Iterator;JI)V -Ljava/util/Spliterators$IteratorSpliterator;->batch:I -Ljava/util/Spliterators$IteratorSpliterator;->BATCH_UNIT:I -Ljava/util/Spliterators$IteratorSpliterator;->characteristics:I -Ljava/util/Spliterators$IteratorSpliterator;->collection:Ljava/util/Collection; -Ljava/util/Spliterators$IteratorSpliterator;->est:J -Ljava/util/Spliterators$IteratorSpliterator;->it:Ljava/util/Iterator; -Ljava/util/Spliterators$IteratorSpliterator;->MAX_BATCH:I -Ljava/util/Spliterators$LongArraySpliterator;-><init>([JI)V -Ljava/util/Spliterators$LongArraySpliterator;-><init>([JIII)V -Ljava/util/Spliterators$LongArraySpliterator;->array:[J -Ljava/util/Spliterators$LongArraySpliterator;->characteristics:I -Ljava/util/Spliterators$LongArraySpliterator;->fence:I -Ljava/util/Spliterators$LongArraySpliterator;->index:I -Ljava/util/Spliterators$LongIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfLong;I)V -Ljava/util/Spliterators$LongIteratorSpliterator;-><init>(Ljava/util/PrimitiveIterator$OfLong;JI)V -Ljava/util/Spliterators$LongIteratorSpliterator;->batch:I -Ljava/util/Spliterators$LongIteratorSpliterator;->BATCH_UNIT:I -Ljava/util/Spliterators$LongIteratorSpliterator;->characteristics:I -Ljava/util/Spliterators$LongIteratorSpliterator;->est:J -Ljava/util/Spliterators$LongIteratorSpliterator;->it:Ljava/util/PrimitiveIterator$OfLong; -Ljava/util/Spliterators$LongIteratorSpliterator;->MAX_BATCH:I -Ljava/util/Spliterators;-><init>()V -Ljava/util/Spliterators;->checkFromToBounds(III)V -Ljava/util/Spliterators;->EMPTY_DOUBLE_SPLITERATOR:Ljava/util/Spliterator$OfDouble; -Ljava/util/Spliterators;->EMPTY_INT_SPLITERATOR:Ljava/util/Spliterator$OfInt; -Ljava/util/Spliterators;->EMPTY_LONG_SPLITERATOR:Ljava/util/Spliterator$OfLong; -Ljava/util/Spliterators;->EMPTY_SPLITERATOR:Ljava/util/Spliterator; -Ljava/util/SplittableRandom$RandomDoublesSpliterator;-><init>(Ljava/util/SplittableRandom;JJDD)V -Ljava/util/SplittableRandom$RandomDoublesSpliterator;->bound:D -Ljava/util/SplittableRandom$RandomDoublesSpliterator;->fence:J -Ljava/util/SplittableRandom$RandomDoublesSpliterator;->index:J -Ljava/util/SplittableRandom$RandomDoublesSpliterator;->origin:D -Ljava/util/SplittableRandom$RandomDoublesSpliterator;->rng:Ljava/util/SplittableRandom; -Ljava/util/SplittableRandom$RandomIntsSpliterator;-><init>(Ljava/util/SplittableRandom;JJII)V -Ljava/util/SplittableRandom$RandomIntsSpliterator;->bound:I -Ljava/util/SplittableRandom$RandomIntsSpliterator;->fence:J -Ljava/util/SplittableRandom$RandomIntsSpliterator;->index:J -Ljava/util/SplittableRandom$RandomIntsSpliterator;->origin:I -Ljava/util/SplittableRandom$RandomIntsSpliterator;->rng:Ljava/util/SplittableRandom; -Ljava/util/SplittableRandom$RandomLongsSpliterator;-><init>(Ljava/util/SplittableRandom;JJJJ)V -Ljava/util/SplittableRandom$RandomLongsSpliterator;->bound:J -Ljava/util/SplittableRandom$RandomLongsSpliterator;->fence:J -Ljava/util/SplittableRandom$RandomLongsSpliterator;->index:J -Ljava/util/SplittableRandom$RandomLongsSpliterator;->origin:J -Ljava/util/SplittableRandom$RandomLongsSpliterator;->rng:Ljava/util/SplittableRandom; -Ljava/util/SplittableRandom;-><init>(JJ)V -Ljava/util/SplittableRandom;->BAD_BOUND:Ljava/lang/String; -Ljava/util/SplittableRandom;->BAD_RANGE:Ljava/lang/String; -Ljava/util/SplittableRandom;->BAD_SIZE:Ljava/lang/String; -Ljava/util/SplittableRandom;->defaultGen:Ljava/util/concurrent/atomic/AtomicLong; -Ljava/util/SplittableRandom;->DOUBLE_UNIT:D -Ljava/util/SplittableRandom;->gamma:J -Ljava/util/SplittableRandom;->GOLDEN_GAMMA:J -Ljava/util/SplittableRandom;->internalNextDouble(DD)D -Ljava/util/SplittableRandom;->internalNextInt(II)I -Ljava/util/SplittableRandom;->internalNextLong(JJ)J -Ljava/util/SplittableRandom;->mix32(J)I -Ljava/util/SplittableRandom;->mix64(J)J -Ljava/util/SplittableRandom;->mixGamma(J)J -Ljava/util/SplittableRandom;->nextSeed()J -Ljava/util/SplittableRandom;->seed:J -Ljava/util/stream/AbstractPipeline;-><init>(Ljava/util/function/Supplier;IZ)V -Ljava/util/stream/AbstractPipeline;-><init>(Ljava/util/Spliterator;IZ)V -Ljava/util/stream/AbstractPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V -Ljava/util/stream/AbstractPipeline;->combinedFlags:I -Ljava/util/stream/AbstractPipeline;->copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V -Ljava/util/stream/AbstractPipeline;->copyIntoWithCancel(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V -Ljava/util/stream/AbstractPipeline;->depth:I -Ljava/util/stream/AbstractPipeline;->evaluate(Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/AbstractPipeline;->evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object; -Ljava/util/stream/AbstractPipeline;->evaluateToArrayNode(Ljava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/AbstractPipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/AbstractPipeline;->exactOutputSizeIfKnown(Ljava/util/Spliterator;)J -Ljava/util/stream/AbstractPipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V -Ljava/util/stream/AbstractPipeline;->getOutputShape()Ljava/util/stream/StreamShape; -Ljava/util/stream/AbstractPipeline;->getSourceShape()Ljava/util/stream/StreamShape; -Ljava/util/stream/AbstractPipeline;->getStreamAndOpFlags()I -Ljava/util/stream/AbstractPipeline;->getStreamFlags()I -Ljava/util/stream/AbstractPipeline;->isOrdered()Z -Ljava/util/stream/AbstractPipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator; -Ljava/util/stream/AbstractPipeline;->linkedOrConsumed:Z -Ljava/util/stream/AbstractPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder; -Ljava/util/stream/AbstractPipeline;->MSG_CONSUMED:Ljava/lang/String; -Ljava/util/stream/AbstractPipeline;->MSG_STREAM_LINKED:Ljava/lang/String; -Ljava/util/stream/AbstractPipeline;->nextStage:Ljava/util/stream/AbstractPipeline; -Ljava/util/stream/AbstractPipeline;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/AbstractPipeline;->opEvaluateParallelLazy(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/util/Spliterator; -Ljava/util/stream/AbstractPipeline;->opIsStateful()Z -Ljava/util/stream/AbstractPipeline;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; -Ljava/util/stream/AbstractPipeline;->parallel:Z -Ljava/util/stream/AbstractPipeline;->previousStage:Ljava/util/stream/AbstractPipeline; -Ljava/util/stream/AbstractPipeline;->sourceAnyStateful:Z -Ljava/util/stream/AbstractPipeline;->sourceCloseAction:Ljava/lang/Runnable; -Ljava/util/stream/AbstractPipeline;->sourceOrOpFlags:I -Ljava/util/stream/AbstractPipeline;->sourceSpliterator(I)Ljava/util/Spliterator; -Ljava/util/stream/AbstractPipeline;->sourceSpliterator:Ljava/util/Spliterator; -Ljava/util/stream/AbstractPipeline;->sourceStage:Ljava/util/stream/AbstractPipeline; -Ljava/util/stream/AbstractPipeline;->sourceStageSpliterator()Ljava/util/Spliterator; -Ljava/util/stream/AbstractPipeline;->sourceSupplier:Ljava/util/function/Supplier; -Ljava/util/stream/AbstractPipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator; -Ljava/util/stream/AbstractPipeline;->wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink; -Ljava/util/stream/AbstractPipeline;->wrapSink(Ljava/util/stream/Sink;)Ljava/util/stream/Sink; -Ljava/util/stream/AbstractPipeline;->wrapSpliterator(Ljava/util/Spliterator;)Ljava/util/Spliterator; -Ljava/util/stream/AbstractSpinedBuffer;-><init>()V -Ljava/util/stream/AbstractSpinedBuffer;-><init>(I)V -Ljava/util/stream/AbstractSpinedBuffer;->chunkSize(I)I -Ljava/util/stream/AbstractSpinedBuffer;->clear()V -Ljava/util/stream/AbstractSpinedBuffer;->count()J -Ljava/util/stream/AbstractSpinedBuffer;->elementIndex:I -Ljava/util/stream/AbstractSpinedBuffer;->initialChunkPower:I -Ljava/util/stream/AbstractSpinedBuffer;->isEmpty()Z -Ljava/util/stream/AbstractSpinedBuffer;->MAX_CHUNK_POWER:I -Ljava/util/stream/AbstractSpinedBuffer;->MIN_CHUNK_POWER:I -Ljava/util/stream/AbstractSpinedBuffer;->MIN_CHUNK_SIZE:I -Ljava/util/stream/AbstractSpinedBuffer;->MIN_SPINE_SIZE:I -Ljava/util/stream/AbstractSpinedBuffer;->priorElementCount:[J -Ljava/util/stream/AbstractSpinedBuffer;->spineIndex:I -Ljava/util/stream/Collectors$CollectorImpl;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/function/Function;Ljava/util/Set;)V -Ljava/util/stream/Collectors$CollectorImpl;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/Set;)V -Ljava/util/stream/Collectors$CollectorImpl;->accumulator:Ljava/util/function/BiConsumer; -Ljava/util/stream/Collectors$CollectorImpl;->characteristics:Ljava/util/Set; -Ljava/util/stream/Collectors$CollectorImpl;->combiner:Ljava/util/function/BinaryOperator; -Ljava/util/stream/Collectors$CollectorImpl;->finisher:Ljava/util/function/Function; -Ljava/util/stream/Collectors$CollectorImpl;->supplier:Ljava/util/function/Supplier; -Ljava/util/stream/Collectors$Partition;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V -Ljava/util/stream/Collectors$Partition;->forFalse:Ljava/lang/Object; -Ljava/util/stream/Collectors$Partition;->forTrue:Ljava/lang/Object; -Ljava/util/stream/Collectors;-><init>()V -Ljava/util/stream/Collectors;->boxSupplier(Ljava/lang/Object;)Ljava/util/function/Supplier; -Ljava/util/stream/Collectors;->castingIdentity()Ljava/util/function/Function; -Ljava/util/stream/Collectors;->CH_CONCURRENT_ID:Ljava/util/Set; -Ljava/util/stream/Collectors;->CH_CONCURRENT_NOID:Ljava/util/Set; -Ljava/util/stream/Collectors;->CH_ID:Ljava/util/Set; -Ljava/util/stream/Collectors;->CH_NOID:Ljava/util/Set; -Ljava/util/stream/Collectors;->CH_UNORDERED_ID:Ljava/util/Set; -Ljava/util/stream/Collectors;->computeFinalSum([D)D -Ljava/util/stream/Collectors;->mapMerger(Ljava/util/function/BinaryOperator;)Ljava/util/function/BinaryOperator; -Ljava/util/stream/Collectors;->sumWithCompensation([DD)[D -Ljava/util/stream/Collectors;->throwingMerger()Ljava/util/function/BinaryOperator; -Ljava/util/stream/DoublePipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V -Ljava/util/stream/DoublePipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V -Ljava/util/stream/DoublePipeline$Head;->opIsStateful()Z -Ljava/util/stream/DoublePipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; -Ljava/util/stream/DoublePipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V -Ljava/util/stream/DoublePipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/DoublePipeline$StatefulOp;->opIsStateful()Z -Ljava/util/stream/DoublePipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V -Ljava/util/stream/DoublePipeline$StatelessOp;->opIsStateful()Z -Ljava/util/stream/DoublePipeline;-><init>(Ljava/util/function/Supplier;IZ)V -Ljava/util/stream/DoublePipeline;-><init>(Ljava/util/Spliterator;IZ)V -Ljava/util/stream/DoublePipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V -Ljava/util/stream/DoublePipeline;->adapt(Ljava/util/Spliterator;)Ljava/util/Spliterator$OfDouble; -Ljava/util/stream/DoublePipeline;->adapt(Ljava/util/stream/Sink;)Ljava/util/function/DoubleConsumer; -Ljava/util/stream/DoublePipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/DoublePipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V -Ljava/util/stream/DoublePipeline;->getOutputShape()Ljava/util/stream/StreamShape; -Ljava/util/stream/DoublePipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator$OfDouble; -Ljava/util/stream/DoublePipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder; -Ljava/util/stream/DoublePipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator; -Ljava/util/stream/IntPipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V -Ljava/util/stream/IntPipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V -Ljava/util/stream/IntPipeline$Head;->opIsStateful()Z -Ljava/util/stream/IntPipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; -Ljava/util/stream/IntPipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V -Ljava/util/stream/IntPipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/IntPipeline$StatefulOp;->opIsStateful()Z -Ljava/util/stream/IntPipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V -Ljava/util/stream/IntPipeline$StatelessOp;->opIsStateful()Z -Ljava/util/stream/IntPipeline;-><init>(Ljava/util/function/Supplier;IZ)V -Ljava/util/stream/IntPipeline;-><init>(Ljava/util/Spliterator;IZ)V -Ljava/util/stream/IntPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V -Ljava/util/stream/IntPipeline;->adapt(Ljava/util/Spliterator;)Ljava/util/Spliterator$OfInt; -Ljava/util/stream/IntPipeline;->adapt(Ljava/util/stream/Sink;)Ljava/util/function/IntConsumer; -Ljava/util/stream/IntPipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/IntPipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V -Ljava/util/stream/IntPipeline;->getOutputShape()Ljava/util/stream/StreamShape; -Ljava/util/stream/IntPipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator$OfInt; -Ljava/util/stream/IntPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder; -Ljava/util/stream/IntPipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator; -Ljava/util/stream/LongPipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V -Ljava/util/stream/LongPipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V -Ljava/util/stream/LongPipeline$Head;->opIsStateful()Z -Ljava/util/stream/LongPipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; -Ljava/util/stream/LongPipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V -Ljava/util/stream/LongPipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/LongPipeline$StatefulOp;->opIsStateful()Z -Ljava/util/stream/LongPipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V -Ljava/util/stream/LongPipeline$StatelessOp;->opIsStateful()Z -Ljava/util/stream/LongPipeline;-><init>(Ljava/util/function/Supplier;IZ)V -Ljava/util/stream/LongPipeline;-><init>(Ljava/util/Spliterator;IZ)V -Ljava/util/stream/LongPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V -Ljava/util/stream/LongPipeline;->adapt(Ljava/util/Spliterator;)Ljava/util/Spliterator$OfLong; -Ljava/util/stream/LongPipeline;->adapt(Ljava/util/stream/Sink;)Ljava/util/function/LongConsumer; -Ljava/util/stream/LongPipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/LongPipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V -Ljava/util/stream/LongPipeline;->getOutputShape()Ljava/util/stream/StreamShape; -Ljava/util/stream/LongPipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator$OfLong; -Ljava/util/stream/LongPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder; -Ljava/util/stream/LongPipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator; -Ljava/util/stream/Node$Builder$OfDouble;->build()Ljava/util/stream/Node$OfDouble; -Ljava/util/stream/Node$Builder$OfInt;->build()Ljava/util/stream/Node$OfInt; -Ljava/util/stream/Node$Builder$OfLong;->build()Ljava/util/stream/Node$OfLong; -Ljava/util/stream/Node$Builder;->build()Ljava/util/stream/Node; -Ljava/util/stream/Node$OfDouble;->copyInto([Ljava/lang/Double;I)V -Ljava/util/stream/Node$OfDouble;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/stream/Node$OfDouble;->getShape()Ljava/util/stream/StreamShape; -Ljava/util/stream/Node$OfDouble;->newArray(I)[D -Ljava/util/stream/Node$OfDouble;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfDouble; -Ljava/util/stream/Node$OfInt;->copyInto([Ljava/lang/Integer;I)V -Ljava/util/stream/Node$OfInt;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/stream/Node$OfInt;->getShape()Ljava/util/stream/StreamShape; -Ljava/util/stream/Node$OfInt;->newArray(I)[I -Ljava/util/stream/Node$OfInt;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfInt; -Ljava/util/stream/Node$OfLong;->copyInto([Ljava/lang/Long;I)V -Ljava/util/stream/Node$OfLong;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/stream/Node$OfLong;->getShape()Ljava/util/stream/StreamShape; -Ljava/util/stream/Node$OfLong;->newArray(I)[J -Ljava/util/stream/Node$OfLong;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfLong; -Ljava/util/stream/Node$OfPrimitive;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object; -Ljava/util/stream/Node$OfPrimitive;->asPrimitiveArray()Ljava/lang/Object; -Ljava/util/stream/Node$OfPrimitive;->copyInto(Ljava/lang/Object;I)V -Ljava/util/stream/Node$OfPrimitive;->forEach(Ljava/lang/Object;)V -Ljava/util/stream/Node$OfPrimitive;->getChild(I)Ljava/util/stream/Node$OfPrimitive; -Ljava/util/stream/Node$OfPrimitive;->newArray(I)Ljava/lang/Object; -Ljava/util/stream/Node$OfPrimitive;->spliterator()Ljava/util/Spliterator$OfPrimitive; -Ljava/util/stream/Node$OfPrimitive;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node$OfPrimitive; -Ljava/util/stream/Node;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object; -Ljava/util/stream/Node;->copyInto([Ljava/lang/Object;I)V -Ljava/util/stream/Node;->count()J -Ljava/util/stream/Node;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/stream/Node;->getChild(I)Ljava/util/stream/Node; -Ljava/util/stream/Node;->getChildCount()I -Ljava/util/stream/Node;->getShape()Ljava/util/stream/StreamShape; -Ljava/util/stream/Node;->spliterator()Ljava/util/Spliterator; -Ljava/util/stream/Node;->truncate(JJLjava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/PipelineHelper;-><init>()V -Ljava/util/stream/PipelineHelper;->copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V -Ljava/util/stream/PipelineHelper;->copyIntoWithCancel(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V -Ljava/util/stream/PipelineHelper;->evaluate(Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/PipelineHelper;->exactOutputSizeIfKnown(Ljava/util/Spliterator;)J -Ljava/util/stream/PipelineHelper;->getSourceShape()Ljava/util/stream/StreamShape; -Ljava/util/stream/PipelineHelper;->getStreamAndOpFlags()I -Ljava/util/stream/PipelineHelper;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder; -Ljava/util/stream/PipelineHelper;->wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink; -Ljava/util/stream/PipelineHelper;->wrapSink(Ljava/util/stream/Sink;)Ljava/util/stream/Sink; -Ljava/util/stream/PipelineHelper;->wrapSpliterator(Ljava/util/Spliterator;)Ljava/util/Spliterator; -Ljava/util/stream/ReferencePipeline$Head;-><init>(Ljava/util/function/Supplier;IZ)V -Ljava/util/stream/ReferencePipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V -Ljava/util/stream/ReferencePipeline$Head;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/stream/ReferencePipeline$Head;->forEachOrdered(Ljava/util/function/Consumer;)V -Ljava/util/stream/ReferencePipeline$Head;->opIsStateful()Z -Ljava/util/stream/ReferencePipeline$Head;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink; -Ljava/util/stream/ReferencePipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V -Ljava/util/stream/ReferencePipeline$StatefulOp;->opEvaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;Ljava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/ReferencePipeline$StatefulOp;->opIsStateful()Z -Ljava/util/stream/ReferencePipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V -Ljava/util/stream/ReferencePipeline$StatelessOp;->opIsStateful()Z -Ljava/util/stream/ReferencePipeline;-><init>(Ljava/util/function/Supplier;IZ)V -Ljava/util/stream/ReferencePipeline;-><init>(Ljava/util/Spliterator;IZ)V -Ljava/util/stream/ReferencePipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V -Ljava/util/stream/ReferencePipeline;->allMatch(Ljava/util/function/Predicate;)Z -Ljava/util/stream/ReferencePipeline;->anyMatch(Ljava/util/function/Predicate;)Z -Ljava/util/stream/ReferencePipeline;->collect(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BiConsumer;)Ljava/lang/Object; -Ljava/util/stream/ReferencePipeline;->collect(Ljava/util/stream/Collector;)Ljava/lang/Object; -Ljava/util/stream/ReferencePipeline;->evaluateToNode(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node; -Ljava/util/stream/ReferencePipeline;->filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream; -Ljava/util/stream/ReferencePipeline;->flatMap(Ljava/util/function/Function;)Ljava/util/stream/Stream; -Ljava/util/stream/ReferencePipeline;->flatMapToDouble(Ljava/util/function/Function;)Ljava/util/stream/DoubleStream; -Ljava/util/stream/ReferencePipeline;->flatMapToInt(Ljava/util/function/Function;)Ljava/util/stream/IntStream; -Ljava/util/stream/ReferencePipeline;->flatMapToLong(Ljava/util/function/Function;)Ljava/util/stream/LongStream; -Ljava/util/stream/ReferencePipeline;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/stream/ReferencePipeline;->forEachOrdered(Ljava/util/function/Consumer;)V -Ljava/util/stream/ReferencePipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V -Ljava/util/stream/ReferencePipeline;->getOutputShape()Ljava/util/stream/StreamShape; -Ljava/util/stream/ReferencePipeline;->lazySpliterator(Ljava/util/function/Supplier;)Ljava/util/Spliterator; -Ljava/util/stream/ReferencePipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder; -Ljava/util/stream/ReferencePipeline;->map(Ljava/util/function/Function;)Ljava/util/stream/Stream; -Ljava/util/stream/ReferencePipeline;->mapToDouble(Ljava/util/function/ToDoubleFunction;)Ljava/util/stream/DoubleStream; -Ljava/util/stream/ReferencePipeline;->mapToInt(Ljava/util/function/ToIntFunction;)Ljava/util/stream/IntStream; -Ljava/util/stream/ReferencePipeline;->mapToLong(Ljava/util/function/ToLongFunction;)Ljava/util/stream/LongStream; -Ljava/util/stream/ReferencePipeline;->max(Ljava/util/Comparator;)Ljava/util/Optional; -Ljava/util/stream/ReferencePipeline;->min(Ljava/util/Comparator;)Ljava/util/Optional; -Ljava/util/stream/ReferencePipeline;->noneMatch(Ljava/util/function/Predicate;)Z -Ljava/util/stream/ReferencePipeline;->peek(Ljava/util/function/Consumer;)Ljava/util/stream/Stream; -Ljava/util/stream/ReferencePipeline;->reduce(Ljava/lang/Object;Ljava/util/function/BiFunction;Ljava/util/function/BinaryOperator;)Ljava/lang/Object; -Ljava/util/stream/ReferencePipeline;->reduce(Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object; -Ljava/util/stream/ReferencePipeline;->reduce(Ljava/util/function/BinaryOperator;)Ljava/util/Optional; -Ljava/util/stream/ReferencePipeline;->sorted(Ljava/util/Comparator;)Ljava/util/stream/Stream; -Ljava/util/stream/ReferencePipeline;->wrap(Ljava/util/stream/PipelineHelper;Ljava/util/function/Supplier;Z)Ljava/util/Spliterator; -Ljava/util/stream/Sink$ChainedDouble;-><init>(Ljava/util/stream/Sink;)V -Ljava/util/stream/Sink$ChainedDouble;->begin(J)V -Ljava/util/stream/Sink$ChainedDouble;->cancellationRequested()Z -Ljava/util/stream/Sink$ChainedDouble;->downstream:Ljava/util/stream/Sink; -Ljava/util/stream/Sink$ChainedDouble;->end()V -Ljava/util/stream/Sink$ChainedInt;-><init>(Ljava/util/stream/Sink;)V -Ljava/util/stream/Sink$ChainedInt;->begin(J)V -Ljava/util/stream/Sink$ChainedInt;->cancellationRequested()Z -Ljava/util/stream/Sink$ChainedInt;->downstream:Ljava/util/stream/Sink; -Ljava/util/stream/Sink$ChainedInt;->end()V -Ljava/util/stream/Sink$ChainedLong;-><init>(Ljava/util/stream/Sink;)V -Ljava/util/stream/Sink$ChainedLong;->begin(J)V -Ljava/util/stream/Sink$ChainedLong;->cancellationRequested()Z -Ljava/util/stream/Sink$ChainedLong;->downstream:Ljava/util/stream/Sink; -Ljava/util/stream/Sink$ChainedLong;->end()V -Ljava/util/stream/Sink$ChainedReference;-><init>(Ljava/util/stream/Sink;)V -Ljava/util/stream/Sink$ChainedReference;->begin(J)V -Ljava/util/stream/Sink$ChainedReference;->cancellationRequested()Z -Ljava/util/stream/Sink$ChainedReference;->downstream:Ljava/util/stream/Sink; -Ljava/util/stream/Sink$ChainedReference;->end()V -Ljava/util/stream/Sink$OfDouble;->accept(Ljava/lang/Double;)V -Ljava/util/stream/Sink$OfInt;->accept(Ljava/lang/Integer;)V -Ljava/util/stream/Sink$OfLong;->accept(Ljava/lang/Long;)V -Ljava/util/stream/Sink;->accept(D)V -Ljava/util/stream/Sink;->accept(I)V -Ljava/util/stream/Sink;->accept(J)V -Ljava/util/stream/Sink;->begin(J)V -Ljava/util/stream/Sink;->cancellationRequested()Z -Ljava/util/stream/Sink;->end()V -Ljava/util/stream/SpinedBuffer$OfDouble;-><init>()V -Ljava/util/stream/SpinedBuffer$OfDouble;-><init>(I)V -Ljava/util/stream/SpinedBuffer$OfDouble;->arrayForEach([DIILjava/util/function/DoubleConsumer;)V -Ljava/util/stream/SpinedBuffer$OfDouble;->arrayLength([D)I -Ljava/util/stream/SpinedBuffer$OfDouble;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/stream/SpinedBuffer$OfDouble;->get(J)D -Ljava/util/stream/SpinedBuffer$OfDouble;->newArray(I)[D -Ljava/util/stream/SpinedBuffer$OfDouble;->newArrayArray(I)[[D -Ljava/util/stream/SpinedBuffer$OfInt;-><init>()V -Ljava/util/stream/SpinedBuffer$OfInt;-><init>(I)V -Ljava/util/stream/SpinedBuffer$OfInt;->arrayForEach([IIILjava/util/function/IntConsumer;)V -Ljava/util/stream/SpinedBuffer$OfInt;->arrayLength([I)I -Ljava/util/stream/SpinedBuffer$OfInt;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/stream/SpinedBuffer$OfInt;->get(J)I -Ljava/util/stream/SpinedBuffer$OfInt;->newArray(I)[I -Ljava/util/stream/SpinedBuffer$OfInt;->newArrayArray(I)[[I -Ljava/util/stream/SpinedBuffer$OfLong;-><init>()V -Ljava/util/stream/SpinedBuffer$OfLong;-><init>(I)V -Ljava/util/stream/SpinedBuffer$OfLong;->arrayForEach([JIILjava/util/function/LongConsumer;)V -Ljava/util/stream/SpinedBuffer$OfLong;->arrayLength([J)I -Ljava/util/stream/SpinedBuffer$OfLong;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/stream/SpinedBuffer$OfLong;->get(J)J -Ljava/util/stream/SpinedBuffer$OfLong;->newArray(I)[J -Ljava/util/stream/SpinedBuffer$OfLong;->newArrayArray(I)[[J -Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->arrayForOne(Ljava/lang/Object;ILjava/lang/Object;)V -Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->arraySpliterator(Ljava/lang/Object;II)Ljava/util/Spliterator$OfPrimitive; -Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->lastSpineElementFence:I -Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->lastSpineIndex:I -Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->newSpliterator(IIII)Ljava/util/Spliterator$OfPrimitive; -Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->splChunk:Ljava/lang/Object; -Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->splElementIndex:I -Ljava/util/stream/SpinedBuffer$OfPrimitive$BaseSpliterator;->splSpineIndex:I -Ljava/util/stream/SpinedBuffer$OfPrimitive;-><init>()V -Ljava/util/stream/SpinedBuffer$OfPrimitive;-><init>(I)V -Ljava/util/stream/SpinedBuffer$OfPrimitive;->arrayForEach(Ljava/lang/Object;IILjava/lang/Object;)V -Ljava/util/stream/SpinedBuffer$OfPrimitive;->arrayLength(Ljava/lang/Object;)I -Ljava/util/stream/SpinedBuffer$OfPrimitive;->asPrimitiveArray()Ljava/lang/Object; -Ljava/util/stream/SpinedBuffer$OfPrimitive;->capacity()J -Ljava/util/stream/SpinedBuffer$OfPrimitive;->chunkFor(J)I -Ljava/util/stream/SpinedBuffer$OfPrimitive;->clear()V -Ljava/util/stream/SpinedBuffer$OfPrimitive;->copyInto(Ljava/lang/Object;I)V -Ljava/util/stream/SpinedBuffer$OfPrimitive;->curChunk:Ljava/lang/Object; -Ljava/util/stream/SpinedBuffer$OfPrimitive;->ensureCapacity(J)V -Ljava/util/stream/SpinedBuffer$OfPrimitive;->forEach(Ljava/lang/Object;)V -Ljava/util/stream/SpinedBuffer$OfPrimitive;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/stream/SpinedBuffer$OfPrimitive;->increaseCapacity()V -Ljava/util/stream/SpinedBuffer$OfPrimitive;->inflateSpine()V -Ljava/util/stream/SpinedBuffer$OfPrimitive;->newArray(I)Ljava/lang/Object; -Ljava/util/stream/SpinedBuffer$OfPrimitive;->newArrayArray(I)[Ljava/lang/Object; -Ljava/util/stream/SpinedBuffer$OfPrimitive;->preAccept()V -Ljava/util/stream/SpinedBuffer$OfPrimitive;->spine:[Ljava/lang/Object; -Ljava/util/stream/SpinedBuffer;-><init>()V -Ljava/util/stream/SpinedBuffer;-><init>(I)V -Ljava/util/stream/SpinedBuffer;->accept(Ljava/lang/Object;)V -Ljava/util/stream/SpinedBuffer;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object; -Ljava/util/stream/SpinedBuffer;->capacity()J -Ljava/util/stream/SpinedBuffer;->clear()V -Ljava/util/stream/SpinedBuffer;->copyInto([Ljava/lang/Object;I)V -Ljava/util/stream/SpinedBuffer;->curChunk:[Ljava/lang/Object; -Ljava/util/stream/SpinedBuffer;->ensureCapacity(J)V -Ljava/util/stream/SpinedBuffer;->forEach(Ljava/util/function/Consumer;)V -Ljava/util/stream/SpinedBuffer;->get(J)Ljava/lang/Object; -Ljava/util/stream/SpinedBuffer;->increaseCapacity()V -Ljava/util/stream/SpinedBuffer;->inflateSpine()V -Ljava/util/stream/SpinedBuffer;->spine:[[Ljava/lang/Object; -Ljava/util/stream/SpinedBuffer;->SPLITERATOR_CHARACTERISTICS:I -Ljava/util/stream/StreamOpFlag$MaskBuilder;-><init>(Ljava/util/Map;)V -Ljava/util/stream/StreamOpFlag$MaskBuilder;->build()Ljava/util/Map; -Ljava/util/stream/StreamOpFlag$MaskBuilder;->clear(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder; -Ljava/util/stream/StreamOpFlag$MaskBuilder;->map:Ljava/util/Map; -Ljava/util/stream/StreamOpFlag$MaskBuilder;->mask(Ljava/util/stream/StreamOpFlag$Type;Ljava/lang/Integer;)Ljava/util/stream/StreamOpFlag$MaskBuilder; -Ljava/util/stream/StreamOpFlag$MaskBuilder;->set(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder; -Ljava/util/stream/StreamOpFlag$MaskBuilder;->setAndClear(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder; -Ljava/util/stream/StreamOpFlag$Type;->OP:Ljava/util/stream/StreamOpFlag$Type; -Ljava/util/stream/StreamOpFlag$Type;->SPLITERATOR:Ljava/util/stream/StreamOpFlag$Type; -Ljava/util/stream/StreamOpFlag$Type;->STREAM:Ljava/util/stream/StreamOpFlag$Type; -Ljava/util/stream/StreamOpFlag$Type;->TERMINAL_OP:Ljava/util/stream/StreamOpFlag$Type; -Ljava/util/stream/StreamOpFlag$Type;->UPSTREAM_TERMINAL_OP:Ljava/util/stream/StreamOpFlag$Type; -Ljava/util/stream/StreamOpFlag$Type;->valueOf(Ljava/lang/String;)Ljava/util/stream/StreamOpFlag$Type; -Ljava/util/stream/StreamOpFlag$Type;->values()[Ljava/util/stream/StreamOpFlag$Type; -Ljava/util/stream/StreamOpFlag;->bitPosition:I -Ljava/util/stream/StreamOpFlag;->canSet(Ljava/util/stream/StreamOpFlag$Type;)Z -Ljava/util/stream/StreamOpFlag;->clear()I -Ljava/util/stream/StreamOpFlag;->clear:I -Ljava/util/stream/StreamOpFlag;->CLEAR_BITS:I -Ljava/util/stream/StreamOpFlag;->combineOpFlags(II)I -Ljava/util/stream/StreamOpFlag;->createFlagMask()I -Ljava/util/stream/StreamOpFlag;->createMask(Ljava/util/stream/StreamOpFlag$Type;)I -Ljava/util/stream/StreamOpFlag;->DISTINCT:Ljava/util/stream/StreamOpFlag; -Ljava/util/stream/StreamOpFlag;->FLAG_MASK:I -Ljava/util/stream/StreamOpFlag;->FLAG_MASK_IS:I -Ljava/util/stream/StreamOpFlag;->FLAG_MASK_NOT:I -Ljava/util/stream/StreamOpFlag;->fromCharacteristics(I)I -Ljava/util/stream/StreamOpFlag;->fromCharacteristics(Ljava/util/Spliterator;)I -Ljava/util/stream/StreamOpFlag;->getMask(I)I -Ljava/util/stream/StreamOpFlag;->INITIAL_OPS_VALUE:I -Ljava/util/stream/StreamOpFlag;->isCleared(I)Z -Ljava/util/stream/StreamOpFlag;->isKnown(I)Z -Ljava/util/stream/StreamOpFlag;->isPreserved(I)Z -Ljava/util/stream/StreamOpFlag;->isStreamFlag()Z -Ljava/util/stream/StreamOpFlag;->IS_DISTINCT:I -Ljava/util/stream/StreamOpFlag;->IS_ORDERED:I -Ljava/util/stream/StreamOpFlag;->IS_SHORT_CIRCUIT:I -Ljava/util/stream/StreamOpFlag;->IS_SIZED:I -Ljava/util/stream/StreamOpFlag;->IS_SORTED:I -Ljava/util/stream/StreamOpFlag;->maskTable:Ljava/util/Map; -Ljava/util/stream/StreamOpFlag;->NOT_DISTINCT:I -Ljava/util/stream/StreamOpFlag;->NOT_ORDERED:I -Ljava/util/stream/StreamOpFlag;->NOT_SIZED:I -Ljava/util/stream/StreamOpFlag;->NOT_SORTED:I -Ljava/util/stream/StreamOpFlag;->OP_MASK:I -Ljava/util/stream/StreamOpFlag;->ORDERED:Ljava/util/stream/StreamOpFlag; -Ljava/util/stream/StreamOpFlag;->preserve:I -Ljava/util/stream/StreamOpFlag;->PRESERVE_BITS:I -Ljava/util/stream/StreamOpFlag;->set()I -Ljava/util/stream/StreamOpFlag;->set(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder; -Ljava/util/stream/StreamOpFlag;->set:I -Ljava/util/stream/StreamOpFlag;->SET_BITS:I -Ljava/util/stream/StreamOpFlag;->SHORT_CIRCUIT:Ljava/util/stream/StreamOpFlag; -Ljava/util/stream/StreamOpFlag;->SIZED:Ljava/util/stream/StreamOpFlag; -Ljava/util/stream/StreamOpFlag;->SORTED:Ljava/util/stream/StreamOpFlag; -Ljava/util/stream/StreamOpFlag;->SPLITERATOR_CHARACTERISTICS_MASK:I -Ljava/util/stream/StreamOpFlag;->STREAM_MASK:I -Ljava/util/stream/StreamOpFlag;->TERMINAL_OP_MASK:I -Ljava/util/stream/StreamOpFlag;->toCharacteristics(I)I -Ljava/util/stream/StreamOpFlag;->toStreamFlags(I)I -Ljava/util/stream/StreamOpFlag;->UPSTREAM_TERMINAL_OP_MASK:I -Ljava/util/stream/StreamOpFlag;->valueOf(Ljava/lang/String;)Ljava/util/stream/StreamOpFlag; -Ljava/util/stream/StreamOpFlag;->values()[Ljava/util/stream/StreamOpFlag; -Ljava/util/stream/StreamShape;->DOUBLE_VALUE:Ljava/util/stream/StreamShape; -Ljava/util/stream/StreamShape;->INT_VALUE:Ljava/util/stream/StreamShape; -Ljava/util/stream/StreamShape;->LONG_VALUE:Ljava/util/stream/StreamShape; -Ljava/util/stream/StreamShape;->REFERENCE:Ljava/util/stream/StreamShape; -Ljava/util/stream/StreamShape;->valueOf(Ljava/lang/String;)Ljava/util/stream/StreamShape; -Ljava/util/stream/StreamShape;->values()[Ljava/util/stream/StreamShape; -Ljava/util/stream/StreamSupport;-><init>()V -Ljava/util/stream/TerminalOp;->evaluateParallel(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object; -Ljava/util/stream/TerminalOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object; -Ljava/util/stream/TerminalOp;->getOpFlags()I -Ljava/util/stream/TerminalOp;->inputShape()Ljava/util/stream/StreamShape; -Ljava/util/StringJoiner;->delimiter:Ljava/lang/String; -Ljava/util/StringJoiner;->emptyValue:Ljava/lang/String; -Ljava/util/StringJoiner;->prefix:Ljava/lang/String; -Ljava/util/StringJoiner;->prepareBuilder()Ljava/lang/StringBuilder; -Ljava/util/StringJoiner;->suffix:Ljava/lang/String; -Ljava/util/StringJoiner;->value:Ljava/lang/StringBuilder; -Ljava/util/StringTokenizer;->currentPosition:I -Ljava/util/StringTokenizer;->delimiterCodePoints:[I -Ljava/util/StringTokenizer;->delimiters:Ljava/lang/String; -Ljava/util/StringTokenizer;->delimsChanged:Z -Ljava/util/StringTokenizer;->hasSurrogates:Z -Ljava/util/StringTokenizer;->isDelimiter(I)Z -Ljava/util/StringTokenizer;->maxDelimCodePoint:I -Ljava/util/StringTokenizer;->maxPosition:I -Ljava/util/StringTokenizer;->newPosition:I -Ljava/util/StringTokenizer;->retDelims:Z -Ljava/util/StringTokenizer;->scanToken(I)I -Ljava/util/StringTokenizer;->setMaxDelimCodePoint()V -Ljava/util/StringTokenizer;->skipDelimiters(I)I -Ljava/util/StringTokenizer;->str:Ljava/lang/String; -Ljava/util/TaskQueue;-><init>()V -Ljava/util/TaskQueue;->add(Ljava/util/TimerTask;)V -Ljava/util/TaskQueue;->clear()V -Ljava/util/TaskQueue;->fixDown(I)V -Ljava/util/TaskQueue;->fixUp(I)V -Ljava/util/TaskQueue;->get(I)Ljava/util/TimerTask; -Ljava/util/TaskQueue;->getMin()Ljava/util/TimerTask; -Ljava/util/TaskQueue;->heapify()V -Ljava/util/TaskQueue;->isEmpty()Z -Ljava/util/TaskQueue;->queue:[Ljava/util/TimerTask; -Ljava/util/TaskQueue;->quickRemove(I)V -Ljava/util/TaskQueue;->removeMin()V -Ljava/util/TaskQueue;->rescheduleMin(J)V -Ljava/util/TaskQueue;->size()I -Ljava/util/TaskQueue;->size:I -Ljava/util/Timer;->nextSerialNumber:Ljava/util/concurrent/atomic/AtomicInteger; -Ljava/util/Timer;->queue:Ljava/util/TaskQueue; -Ljava/util/Timer;->sched(Ljava/util/TimerTask;JJ)V -Ljava/util/Timer;->serialNumber()I -Ljava/util/Timer;->thread:Ljava/util/TimerThread; -Ljava/util/Timer;->threadReaper:Ljava/lang/Object; -Ljava/util/TimerTask;->CANCELLED:I -Ljava/util/TimerTask;->EXECUTED:I -Ljava/util/TimerTask;->lock:Ljava/lang/Object; -Ljava/util/TimerTask;->nextExecutionTime:J -Ljava/util/TimerTask;->SCHEDULED:I -Ljava/util/TimerTask;->state:I -Ljava/util/TimerTask;->VIRGIN:I -Ljava/util/TimerThread;-><init>(Ljava/util/TaskQueue;)V -Ljava/util/TimerThread;->mainLoop()V -Ljava/util/TimerThread;->newTasksMayBeScheduled:Z -Ljava/util/TimerThread;->queue:Ljava/util/TaskQueue; -Ljava/util/TimeZone$NoImagePreloadHolder;-><init>()V -Ljava/util/TimeZone$NoImagePreloadHolder;->CUSTOM_ZONE_ID_PATTERN:Ljava/util/regex/Pattern; -Ljava/util/TimeZone;->appendNumber(Ljava/lang/StringBuilder;II)V -Ljava/util/TimeZone;->createGmtOffsetString(ZZI)Ljava/lang/String; -Ljava/util/TimeZone;->defaultTimeZone:Ljava/util/TimeZone; -Ljava/util/TimeZone;->getCustomTimeZone(Ljava/lang/String;)Ljava/util/TimeZone; -Ljava/util/TimeZone;->getDefaultRef()Ljava/util/TimeZone; -Ljava/util/TimeZone;->getOffsets(J[I)I -Ljava/util/TimeZone;->getSystemGMTOffsetID()Ljava/lang/String; -Ljava/util/TimeZone;->getSystemTimeZoneID(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Ljava/util/TimeZone;->GMT:Ljava/util/TimeZone; -Ljava/util/TimeZone;->ID:Ljava/lang/String; -Ljava/util/TimeZone;->NO_TIMEZONE:Ljava/util/TimeZone; -Ljava/util/TimeZone;->UTC:Ljava/util/TimeZone; -Ljava/util/TreeMap$AscendingSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V -Ljava/util/TreeMap$AscendingSubMap;->descendingKeyIterator()Ljava/util/Iterator; -Ljava/util/TreeMap$AscendingSubMap;->keyIterator()Ljava/util/Iterator; -Ljava/util/TreeMap$AscendingSubMap;->keySpliterator()Ljava/util/Spliterator; -Ljava/util/TreeMap$AscendingSubMap;->subCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$AscendingSubMap;->subFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$AscendingSubMap;->subHigher(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$AscendingSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$AscendingSubMap;->subLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$AscendingSubMap;->subLowest()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$DescendingKeySpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V -Ljava/util/TreeMap$DescendingKeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/TreeMap$DescendingKeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/TreeMap$DescendingSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V -Ljava/util/TreeMap$DescendingSubMap;->descendingKeyIterator()Ljava/util/Iterator; -Ljava/util/TreeMap$DescendingSubMap;->keyIterator()Ljava/util/Iterator; -Ljava/util/TreeMap$DescendingSubMap;->keySpliterator()Ljava/util/Spliterator; -Ljava/util/TreeMap$DescendingSubMap;->reverseComparator:Ljava/util/Comparator; -Ljava/util/TreeMap$DescendingSubMap;->subCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$DescendingSubMap;->subFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$DescendingSubMap;->subHigher(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$DescendingSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$DescendingSubMap;->subLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$DescendingSubMap;->subLowest()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$EntrySpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V -Ljava/util/TreeMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/TreeMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/TreeMap$KeySet;-><init>(Ljava/util/NavigableMap;)V -Ljava/util/TreeMap$KeySet;->m:Ljava/util/NavigableMap; -Ljava/util/TreeMap$KeySpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V -Ljava/util/TreeMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/TreeMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/TreeMap$NavigableSubMap$DescendingSubMapKeyIterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/TreeMap$NavigableSubMap$DescendingSubMapKeyIterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/TreeMap$NavigableSubMap$EntrySetView;->size:I -Ljava/util/TreeMap$NavigableSubMap$EntrySetView;->sizeModCount:I -Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->expectedModCount:I -Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->fenceKey:Ljava/lang/Object; -Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->lastReturned:Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->next:Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->nextEntry()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->prevEntry()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->removeAscending()V -Ljava/util/TreeMap$NavigableSubMap$SubMapIterator;->removeDescending()V -Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/TreeMap$NavigableSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V -Ljava/util/TreeMap$NavigableSubMap;->absCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->absFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->absHigher(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->absHighest()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->absHighFence()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->absLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->absLowest()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->absLowFence()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->descendingKeyIterator()Ljava/util/Iterator; -Ljava/util/TreeMap$NavigableSubMap;->descendingMapView:Ljava/util/NavigableMap; -Ljava/util/TreeMap$NavigableSubMap;->entrySetView:Ljava/util/TreeMap$NavigableSubMap$EntrySetView; -Ljava/util/TreeMap$NavigableSubMap;->fromStart:Z -Ljava/util/TreeMap$NavigableSubMap;->hi:Ljava/lang/Object; -Ljava/util/TreeMap$NavigableSubMap;->hiInclusive:Z -Ljava/util/TreeMap$NavigableSubMap;->inClosedRange(Ljava/lang/Object;)Z -Ljava/util/TreeMap$NavigableSubMap;->inRange(Ljava/lang/Object;)Z -Ljava/util/TreeMap$NavigableSubMap;->inRange(Ljava/lang/Object;Z)Z -Ljava/util/TreeMap$NavigableSubMap;->keyIterator()Ljava/util/Iterator; -Ljava/util/TreeMap$NavigableSubMap;->keySpliterator()Ljava/util/Spliterator; -Ljava/util/TreeMap$NavigableSubMap;->lo:Ljava/lang/Object; -Ljava/util/TreeMap$NavigableSubMap;->loInclusive:Z -Ljava/util/TreeMap$NavigableSubMap;->m:Ljava/util/TreeMap; -Ljava/util/TreeMap$NavigableSubMap;->navigableKeySetView:Ljava/util/TreeMap$KeySet; -Ljava/util/TreeMap$NavigableSubMap;->subCeiling(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->subFloor(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->subHigher(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->subLower(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->subLowest()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$NavigableSubMap;->toEnd:Z -Ljava/util/TreeMap$NavigableSubMap;->tooHigh(Ljava/lang/Object;)Z -Ljava/util/TreeMap$NavigableSubMap;->tooLow(Ljava/lang/Object;)Z -Ljava/util/TreeMap$PrivateEntryIterator;->expectedModCount:I -Ljava/util/TreeMap$PrivateEntryIterator;->lastReturned:Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$PrivateEntryIterator;->next:Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$PrivateEntryIterator;->nextEntry()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$PrivateEntryIterator;->prevEntry()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$SubMap;->fromKey:Ljava/lang/Object; -Ljava/util/TreeMap$SubMap;->fromStart:Z -Ljava/util/TreeMap$SubMap;->toEnd:Z -Ljava/util/TreeMap$SubMap;->toKey:Ljava/lang/Object; -Ljava/util/TreeMap$TreeMapEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/TreeMap$TreeMapEntry;)V -Ljava/util/TreeMap$TreeMapEntry;->color:Z -Ljava/util/TreeMap$TreeMapEntry;->key:Ljava/lang/Object; -Ljava/util/TreeMap$TreeMapEntry;->left:Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$TreeMapEntry;->parent:Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$TreeMapEntry;->right:Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$TreeMapEntry;->value:Ljava/lang/Object; -Ljava/util/TreeMap$TreeMapSpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V -Ljava/util/TreeMap$TreeMapSpliterator;->current:Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$TreeMapSpliterator;->est:I -Ljava/util/TreeMap$TreeMapSpliterator;->estimateSize()J -Ljava/util/TreeMap$TreeMapSpliterator;->expectedModCount:I -Ljava/util/TreeMap$TreeMapSpliterator;->fence:Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap$TreeMapSpliterator;->getEstimate()I -Ljava/util/TreeMap$TreeMapSpliterator;->side:I -Ljava/util/TreeMap$TreeMapSpliterator;->tree:Ljava/util/TreeMap; -Ljava/util/TreeMap$ValueSpliterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;III)V -Ljava/util/TreeMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/TreeMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/TreeMap;->addAllForTreeSet(Ljava/util/SortedSet;Ljava/lang/Object;)V -Ljava/util/TreeMap;->BLACK:Z -Ljava/util/TreeMap;->buildFromSorted(IIIILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->buildFromSorted(ILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)V -Ljava/util/TreeMap;->colorOf(Ljava/util/TreeMap$TreeMapEntry;)Z -Ljava/util/TreeMap;->comparator:Ljava/util/Comparator; -Ljava/util/TreeMap;->compare(Ljava/lang/Object;Ljava/lang/Object;)I -Ljava/util/TreeMap;->computeRedLevel(I)I -Ljava/util/TreeMap;->deleteEntry(Ljava/util/TreeMap$TreeMapEntry;)V -Ljava/util/TreeMap;->descendingKeyIterator()Ljava/util/Iterator; -Ljava/util/TreeMap;->descendingKeySpliterator()Ljava/util/Spliterator; -Ljava/util/TreeMap;->descendingMap:Ljava/util/NavigableMap; -Ljava/util/TreeMap;->entrySet:Ljava/util/TreeMap$EntrySet; -Ljava/util/TreeMap;->exportEntry(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/Map$Entry; -Ljava/util/TreeMap;->fixAfterDeletion(Ljava/util/TreeMap$TreeMapEntry;)V -Ljava/util/TreeMap;->fixAfterInsertion(Ljava/util/TreeMap$TreeMapEntry;)V -Ljava/util/TreeMap;->getCeilingEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->getEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->getEntryUsingComparator(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->getFirstEntry()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->getFloorEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->getHigherEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->getLastEntry()Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->getLowerEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->key(Ljava/util/TreeMap$TreeMapEntry;)Ljava/lang/Object; -Ljava/util/TreeMap;->keyIterator()Ljava/util/Iterator; -Ljava/util/TreeMap;->keyOrNull(Ljava/util/TreeMap$TreeMapEntry;)Ljava/lang/Object; -Ljava/util/TreeMap;->keySpliterator()Ljava/util/Spliterator; -Ljava/util/TreeMap;->keySpliteratorFor(Ljava/util/NavigableMap;)Ljava/util/Spliterator; -Ljava/util/TreeMap;->leftOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->modCount:I -Ljava/util/TreeMap;->navigableKeySet:Ljava/util/TreeMap$KeySet; -Ljava/util/TreeMap;->parentOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->predecessor(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->readTreeSet(ILjava/io/ObjectInputStream;Ljava/lang/Object;)V -Ljava/util/TreeMap;->RED:Z -Ljava/util/TreeMap;->rightOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->root:Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->rotateLeft(Ljava/util/TreeMap$TreeMapEntry;)V -Ljava/util/TreeMap;->rotateRight(Ljava/util/TreeMap$TreeMapEntry;)V -Ljava/util/TreeMap;->setColor(Ljava/util/TreeMap$TreeMapEntry;Z)V -Ljava/util/TreeMap;->size:I -Ljava/util/TreeMap;->successor(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry; -Ljava/util/TreeMap;->UNBOUNDED:Ljava/lang/Object; -Ljava/util/TreeMap;->valEquals(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/TreeSet;-><init>(Ljava/util/NavigableMap;)V -Ljava/util/TreeSet;->m:Ljava/util/NavigableMap; -Ljava/util/TreeSet;->PRESENT:Ljava/lang/Object; -Ljava/util/UnknownFormatConversionException;->s:Ljava/lang/String; -Ljava/util/UnknownFormatFlagsException;->flags:Ljava/lang/String; -Ljava/util/UUID$Holder;-><init>()V -Ljava/util/UUID$Holder;->numberGenerator:Ljava/security/SecureRandom; -Ljava/util/UUID;-><init>([B)V -Ljava/util/UUID;->digits(JI)Ljava/lang/String; -Ljava/util/Vector$Itr;->checkForComodification()V -Ljava/util/Vector$Itr;->cursor:I -Ljava/util/Vector$Itr;->expectedModCount:I -Ljava/util/Vector$Itr;->lastRet:I -Ljava/util/Vector$Itr;->limit:I -Ljava/util/Vector$VectorSpliterator;-><init>(Ljava/util/Vector;[Ljava/lang/Object;III)V -Ljava/util/Vector$VectorSpliterator;->array:[Ljava/lang/Object; -Ljava/util/Vector$VectorSpliterator;->expectedModCount:I -Ljava/util/Vector$VectorSpliterator;->fence:I -Ljava/util/Vector$VectorSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/Vector$VectorSpliterator;->getFence()I -Ljava/util/Vector$VectorSpliterator;->index:I -Ljava/util/Vector$VectorSpliterator;->list:Ljava/util/Vector; -Ljava/util/Vector$VectorSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/Vector;->ensureCapacityHelper(I)V -Ljava/util/Vector;->grow(I)V -Ljava/util/Vector;->hugeCapacity(I)I -Ljava/util/Vector;->MAX_ARRAY_SIZE:I -Ljava/util/WeakHashMap$Entry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;ILjava/util/WeakHashMap$Entry;)V -Ljava/util/WeakHashMap$Entry;->hash:I -Ljava/util/WeakHashMap$Entry;->next:Ljava/util/WeakHashMap$Entry; -Ljava/util/WeakHashMap$Entry;->value:Ljava/lang/Object; -Ljava/util/WeakHashMap$EntrySet;->deepCopy()Ljava/util/List; -Ljava/util/WeakHashMap$EntrySpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V -Ljava/util/WeakHashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/WeakHashMap$EntrySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/WeakHashMap$HashIterator;->currentKey:Ljava/lang/Object; -Ljava/util/WeakHashMap$HashIterator;->entry:Ljava/util/WeakHashMap$Entry; -Ljava/util/WeakHashMap$HashIterator;->expectedModCount:I -Ljava/util/WeakHashMap$HashIterator;->index:I -Ljava/util/WeakHashMap$HashIterator;->lastReturned:Ljava/util/WeakHashMap$Entry; -Ljava/util/WeakHashMap$HashIterator;->nextEntry()Ljava/util/WeakHashMap$Entry; -Ljava/util/WeakHashMap$HashIterator;->nextKey:Ljava/lang/Object; -Ljava/util/WeakHashMap$KeySpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V -Ljava/util/WeakHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/WeakHashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/WeakHashMap$ValueSpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V -Ljava/util/WeakHashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V -Ljava/util/WeakHashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z -Ljava/util/WeakHashMap$WeakHashMapSpliterator;-><init>(Ljava/util/WeakHashMap;IIII)V -Ljava/util/WeakHashMap$WeakHashMapSpliterator;->current:Ljava/util/WeakHashMap$Entry; -Ljava/util/WeakHashMap$WeakHashMapSpliterator;->est:I -Ljava/util/WeakHashMap$WeakHashMapSpliterator;->estimateSize()J -Ljava/util/WeakHashMap$WeakHashMapSpliterator;->expectedModCount:I -Ljava/util/WeakHashMap$WeakHashMapSpliterator;->fence:I -Ljava/util/WeakHashMap$WeakHashMapSpliterator;->getFence()I -Ljava/util/WeakHashMap$WeakHashMapSpliterator;->index:I -Ljava/util/WeakHashMap$WeakHashMapSpliterator;->map:Ljava/util/WeakHashMap; -Ljava/util/WeakHashMap;->containsNullValue()Z -Ljava/util/WeakHashMap;->DEFAULT_INITIAL_CAPACITY:I -Ljava/util/WeakHashMap;->DEFAULT_LOAD_FACTOR:F -Ljava/util/WeakHashMap;->entrySet:Ljava/util/Set; -Ljava/util/WeakHashMap;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z -Ljava/util/WeakHashMap;->expungeStaleEntries()V -Ljava/util/WeakHashMap;->getEntry(Ljava/lang/Object;)Ljava/util/WeakHashMap$Entry; -Ljava/util/WeakHashMap;->getTable()[Ljava/util/WeakHashMap$Entry; -Ljava/util/WeakHashMap;->hash(Ljava/lang/Object;)I -Ljava/util/WeakHashMap;->indexFor(II)I -Ljava/util/WeakHashMap;->loadFactor:F -Ljava/util/WeakHashMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/WeakHashMap;->MAXIMUM_CAPACITY:I -Ljava/util/WeakHashMap;->modCount:I -Ljava/util/WeakHashMap;->newTable(I)[Ljava/util/WeakHashMap$Entry; -Ljava/util/WeakHashMap;->NULL_KEY:Ljava/lang/Object; -Ljava/util/WeakHashMap;->queue:Ljava/lang/ref/ReferenceQueue; -Ljava/util/WeakHashMap;->removeMapping(Ljava/lang/Object;)Z -Ljava/util/WeakHashMap;->resize(I)V -Ljava/util/WeakHashMap;->size:I -Ljava/util/WeakHashMap;->table:[Ljava/util/WeakHashMap$Entry; -Ljava/util/WeakHashMap;->threshold:I -Ljava/util/WeakHashMap;->transfer([Ljava/util/WeakHashMap$Entry;[Ljava/util/WeakHashMap$Entry;)V -Ljava/util/WeakHashMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object; -Ljava/util/zip/Adler32;->adler:I -Ljava/util/zip/Adler32;->updateByteBuffer(IJII)I -Ljava/util/zip/Adler32;->updateBytes(I[BII)I -Ljava/util/zip/CheckedInputStream;->cksum:Ljava/util/zip/Checksum; -Ljava/util/zip/CheckedOutputStream;->cksum:Ljava/util/zip/Checksum; -Ljava/util/zip/CRC32;->crc:I -Ljava/util/zip/CRC32;->updateByteBuffer(IJII)I -Ljava/util/zip/CRC32;->updateBytes(I[BII)I -Ljava/util/zip/Deflater;->bytesRead:J -Ljava/util/zip/Deflater;->bytesWritten:J -Ljava/util/zip/Deflater;->deflateBytes(J[BIII)I -Ljava/util/zip/Deflater;->end(J)V -Ljava/util/zip/Deflater;->ensureOpen()V -Ljava/util/zip/Deflater;->getAdler(J)I -Ljava/util/zip/Deflater;->guard:Ldalvik/system/CloseGuard; -Ljava/util/zip/Deflater;->init(IIZ)J -Ljava/util/zip/Deflater;->reset(J)V -Ljava/util/zip/Deflater;->setDictionary(J[BII)V -Ljava/util/zip/Deflater;->zsRef:Ljava/util/zip/ZStreamRef; -Ljava/util/zip/DeflaterInputStream;->ensureOpen()V -Ljava/util/zip/DeflaterInputStream;->rbuf:[B -Ljava/util/zip/DeflaterInputStream;->reachEOF:Z -Ljava/util/zip/DeflaterInputStream;->usesDefaultDeflater:Z -Ljava/util/zip/DeflaterOutputStream;->closed:Z -Ljava/util/zip/DeflaterOutputStream;->syncFlush:Z -Ljava/util/zip/DeflaterOutputStream;->usesDefaultDeflater:Z -Ljava/util/zip/GZIPInputStream;->closed:Z -Ljava/util/zip/GZIPInputStream;->ensureOpen()V -Ljava/util/zip/GZIPInputStream;->FCOMMENT:I -Ljava/util/zip/GZIPInputStream;->FEXTRA:I -Ljava/util/zip/GZIPInputStream;->FHCRC:I -Ljava/util/zip/GZIPInputStream;->FNAME:I -Ljava/util/zip/GZIPInputStream;->FTEXT:I -Ljava/util/zip/GZIPInputStream;->readHeader(Ljava/io/InputStream;)I -Ljava/util/zip/GZIPInputStream;->readTrailer()Z -Ljava/util/zip/GZIPInputStream;->readUByte(Ljava/io/InputStream;)I -Ljava/util/zip/GZIPInputStream;->readUInt(Ljava/io/InputStream;)J -Ljava/util/zip/GZIPInputStream;->readUShort(Ljava/io/InputStream;)I -Ljava/util/zip/GZIPInputStream;->skipBytes(Ljava/io/InputStream;I)V -Ljava/util/zip/GZIPInputStream;->tmpbuf:[B -Ljava/util/zip/GZIPOutputStream;->GZIP_MAGIC:I -Ljava/util/zip/GZIPOutputStream;->TRAILER_SIZE:I -Ljava/util/zip/GZIPOutputStream;->writeHeader()V -Ljava/util/zip/GZIPOutputStream;->writeInt(I[BI)V -Ljava/util/zip/GZIPOutputStream;->writeShort(I[BI)V -Ljava/util/zip/GZIPOutputStream;->writeTrailer([BI)V -Ljava/util/zip/Inflater;->bytesRead:J -Ljava/util/zip/Inflater;->bytesWritten:J -Ljava/util/zip/Inflater;->defaultBuf:[B -Ljava/util/zip/Inflater;->end(J)V -Ljava/util/zip/Inflater;->ended()Z -Ljava/util/zip/Inflater;->ensureOpen()V -Ljava/util/zip/Inflater;->getAdler(J)I -Ljava/util/zip/Inflater;->guard:Ldalvik/system/CloseGuard; -Ljava/util/zip/Inflater;->inflateBytes(J[BII)I -Ljava/util/zip/Inflater;->init(Z)J -Ljava/util/zip/Inflater;->reset(J)V -Ljava/util/zip/Inflater;->setDictionary(J[BII)V -Ljava/util/zip/Inflater;->zsRef:Ljava/util/zip/ZStreamRef; -Ljava/util/zip/InflaterInputStream;->b:[B -Ljava/util/zip/InflaterInputStream;->ensureOpen()V -Ljava/util/zip/InflaterInputStream;->reachEOF:Z -Ljava/util/zip/InflaterInputStream;->singleByteBuf:[B -Ljava/util/zip/InflaterOutputStream;->closed:Z -Ljava/util/zip/InflaterOutputStream;->ensureOpen()V -Ljava/util/zip/InflaterOutputStream;->usesDefaultInflater:Z -Ljava/util/zip/InflaterOutputStream;->wbuf:[B -Ljava/util/zip/ZipCoder;-><init>(Ljava/nio/charset/Charset;)V -Ljava/util/zip/ZipCoder;->cs:Ljava/nio/charset/Charset; -Ljava/util/zip/ZipCoder;->dec:Ljava/nio/charset/CharsetDecoder; -Ljava/util/zip/ZipCoder;->decoder()Ljava/nio/charset/CharsetDecoder; -Ljava/util/zip/ZipCoder;->enc:Ljava/nio/charset/CharsetEncoder; -Ljava/util/zip/ZipCoder;->encoder()Ljava/nio/charset/CharsetEncoder; -Ljava/util/zip/ZipCoder;->get(Ljava/nio/charset/Charset;)Ljava/util/zip/ZipCoder; -Ljava/util/zip/ZipCoder;->getBytes(Ljava/lang/String;)[B -Ljava/util/zip/ZipCoder;->getBytesUTF8(Ljava/lang/String;)[B -Ljava/util/zip/ZipCoder;->isUTF8()Z -Ljava/util/zip/ZipCoder;->isUTF8:Z -Ljava/util/zip/ZipCoder;->toString([B)Ljava/lang/String; -Ljava/util/zip/ZipCoder;->toString([BI)Ljava/lang/String; -Ljava/util/zip/ZipCoder;->toStringUTF8([BI)Ljava/lang/String; -Ljava/util/zip/ZipCoder;->utf8:Ljava/util/zip/ZipCoder; -Ljava/util/zip/ZipEntry;-><init>()V -Ljava/util/zip/ZipEntry;->atime:Ljava/nio/file/attribute/FileTime; -Ljava/util/zip/ZipEntry;->comment:Ljava/lang/String; -Ljava/util/zip/ZipEntry;->crc:J -Ljava/util/zip/ZipEntry;->csize:J -Ljava/util/zip/ZipEntry;->ctime:Ljava/nio/file/attribute/FileTime; -Ljava/util/zip/ZipEntry;->dataOffset:J -Ljava/util/zip/ZipEntry;->DOSTIME_BEFORE_1980:J -Ljava/util/zip/ZipEntry;->extra:[B -Ljava/util/zip/ZipEntry;->flag:I -Ljava/util/zip/ZipEntry;->getDataOffset()J -Ljava/util/zip/ZipEntry;->mtime:Ljava/nio/file/attribute/FileTime; -Ljava/util/zip/ZipEntry;->name:Ljava/lang/String; -Ljava/util/zip/ZipEntry;->setExtra0([BZ)V -Ljava/util/zip/ZipEntry;->size:J -Ljava/util/zip/ZipEntry;->UPPER_DOSTIME_BOUND:J -Ljava/util/zip/ZipEntry;->xdostime:J -Ljava/util/zip/ZipFile$ZipEntryIterator;->i:I -Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;->closeRequested:Z -Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;->eof:Z -Ljava/util/zip/ZipFile$ZipFileInflaterInputStream;->zfin:Ljava/util/zip/ZipFile$ZipFileInputStream; -Ljava/util/zip/ZipFile$ZipFileInputStream;->jzentry:J -Ljava/util/zip/ZipFile$ZipFileInputStream;->pos:J -Ljava/util/zip/ZipFile$ZipFileInputStream;->rem:J -Ljava/util/zip/ZipFile$ZipFileInputStream;->size()J -Ljava/util/zip/ZipFile$ZipFileInputStream;->size:J -Ljava/util/zip/ZipFile$ZipFileInputStream;->zfisCloseRequested:Z -Ljava/util/zip/ZipFile;->closeRequested:Z -Ljava/util/zip/ZipFile;->DEFLATED:I -Ljava/util/zip/ZipFile;->ensureOpen()V -Ljava/util/zip/ZipFile;->ensureOpenOrZipException()V -Ljava/util/zip/ZipFile;->fileToRemoveOnClose:Ljava/io/File; -Ljava/util/zip/ZipFile;->freeEntry(JJ)V -Ljava/util/zip/ZipFile;->getCommentBytes(J)[B -Ljava/util/zip/ZipFile;->getEntryBytes(JI)[B -Ljava/util/zip/ZipFile;->getEntryCrc(J)J -Ljava/util/zip/ZipFile;->getEntryCSize(J)J -Ljava/util/zip/ZipFile;->getEntryFlag(J)I -Ljava/util/zip/ZipFile;->getEntryMethod(J)I -Ljava/util/zip/ZipFile;->getEntrySize(J)J -Ljava/util/zip/ZipFile;->getEntryTime(J)J -Ljava/util/zip/ZipFile;->getFileDescriptor()I -Ljava/util/zip/ZipFile;->getFileDescriptor(J)I -Ljava/util/zip/ZipFile;->getInflater()Ljava/util/zip/Inflater; -Ljava/util/zip/ZipFile;->getNextEntry(JI)J -Ljava/util/zip/ZipFile;->getTotal(J)I -Ljava/util/zip/ZipFile;->getZipEntry(Ljava/lang/String;J)Ljava/util/zip/ZipEntry; -Ljava/util/zip/ZipFile;->getZipMessage(J)Ljava/lang/String; -Ljava/util/zip/ZipFile;->guard:Ldalvik/system/CloseGuard; -Ljava/util/zip/ZipFile;->inflaterCache:Ljava/util/Deque; -Ljava/util/zip/ZipFile;->JZENTRY_COMMENT:I -Ljava/util/zip/ZipFile;->JZENTRY_EXTRA:I -Ljava/util/zip/ZipFile;->JZENTRY_NAME:I -Ljava/util/zip/ZipFile;->locsig:Z -Ljava/util/zip/ZipFile;->name:Ljava/lang/String; -Ljava/util/zip/ZipFile;->open(Ljava/lang/String;IJZ)J -Ljava/util/zip/ZipFile;->read(JJJ[BII)I -Ljava/util/zip/ZipFile;->releaseInflater(Ljava/util/zip/Inflater;)V -Ljava/util/zip/ZipFile;->startsWithLOC(J)Z -Ljava/util/zip/ZipFile;->startsWithLocHeader()Z -Ljava/util/zip/ZipFile;->STORED:I -Ljava/util/zip/ZipFile;->streams:Ljava/util/Map; -Ljava/util/zip/ZipFile;->total:I -Ljava/util/zip/ZipFile;->usemmap:Z -Ljava/util/zip/ZipFile;->zc:Ljava/util/zip/ZipCoder; -Ljava/util/zip/ZipInputStream;->b:[B -Ljava/util/zip/ZipInputStream;->closed:Z -Ljava/util/zip/ZipInputStream;->crc:Ljava/util/zip/CRC32; -Ljava/util/zip/ZipInputStream;->DEFLATED:I -Ljava/util/zip/ZipInputStream;->ensureOpen()V -Ljava/util/zip/ZipInputStream;->entry:Ljava/util/zip/ZipEntry; -Ljava/util/zip/ZipInputStream;->entryEOF:Z -Ljava/util/zip/ZipInputStream;->readEnd(Ljava/util/zip/ZipEntry;)V -Ljava/util/zip/ZipInputStream;->readFully([BII)V -Ljava/util/zip/ZipInputStream;->readLOC()Ljava/util/zip/ZipEntry; -Ljava/util/zip/ZipInputStream;->remaining:J -Ljava/util/zip/ZipInputStream;->STORED:I -Ljava/util/zip/ZipInputStream;->zc:Ljava/util/zip/ZipCoder; -Ljava/util/zip/ZipOutputStream$XEntry;-><init>(Ljava/util/zip/ZipEntry;J)V -Ljava/util/zip/ZipOutputStream$XEntry;->entry:Ljava/util/zip/ZipEntry; -Ljava/util/zip/ZipOutputStream$XEntry;->offset:J -Ljava/util/zip/ZipOutputStream;->closed:Z -Ljava/util/zip/ZipOutputStream;->comment:[B -Ljava/util/zip/ZipOutputStream;->crc:Ljava/util/zip/CRC32; -Ljava/util/zip/ZipOutputStream;->current:Ljava/util/zip/ZipOutputStream$XEntry; -Ljava/util/zip/ZipOutputStream;->ensureOpen()V -Ljava/util/zip/ZipOutputStream;->finished:Z -Ljava/util/zip/ZipOutputStream;->getExtraLen([B)I -Ljava/util/zip/ZipOutputStream;->inhibitZip64:Z -Ljava/util/zip/ZipOutputStream;->locoff:J -Ljava/util/zip/ZipOutputStream;->version(Ljava/util/zip/ZipEntry;)I -Ljava/util/zip/ZipOutputStream;->writeByte(I)V -Ljava/util/zip/ZipOutputStream;->writeBytes([BII)V -Ljava/util/zip/ZipOutputStream;->writeCEN(Ljava/util/zip/ZipOutputStream$XEntry;)V -Ljava/util/zip/ZipOutputStream;->writeEND(JJ)V -Ljava/util/zip/ZipOutputStream;->writeEXT(Ljava/util/zip/ZipEntry;)V -Ljava/util/zip/ZipOutputStream;->writeExtra([B)V -Ljava/util/zip/ZipOutputStream;->writeInt(J)V -Ljava/util/zip/ZipOutputStream;->writeLOC(Ljava/util/zip/ZipOutputStream$XEntry;)V -Ljava/util/zip/ZipOutputStream;->writeLong(J)V -Ljava/util/zip/ZipOutputStream;->writeShort(I)V -Ljava/util/zip/ZipOutputStream;->xentries:Ljava/util/Vector; -Ljava/util/zip/ZipOutputStream;->zc:Ljava/util/zip/ZipCoder; -Ljava/util/zip/ZStreamRef;-><init>(J)V -Ljava/util/zip/ZStreamRef;->address()J -Ljava/util/zip/ZStreamRef;->address:J -Ljava/util/zip/ZStreamRef;->clear()V -Ljavax/crypto/Cipher$CipherSpiAndProvider;-><init>(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V -Ljavax/crypto/Cipher$CipherSpiAndProvider;->cipherSpi:Ljavax/crypto/CipherSpi; -Ljavax/crypto/Cipher$CipherSpiAndProvider;->provider:Ljava/security/Provider; -Ljavax/crypto/Cipher$InitParams;-><init>(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/SecureRandom;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;)V -Ljavax/crypto/Cipher$InitParams;->initType:Ljavax/crypto/Cipher$InitType; -Ljavax/crypto/Cipher$InitParams;->key:Ljava/security/Key; -Ljavax/crypto/Cipher$InitParams;->opmode:I -Ljavax/crypto/Cipher$InitParams;->params:Ljava/security/AlgorithmParameters; -Ljavax/crypto/Cipher$InitParams;->random:Ljava/security/SecureRandom; -Ljavax/crypto/Cipher$InitParams;->spec:Ljava/security/spec/AlgorithmParameterSpec; -Ljavax/crypto/Cipher$InitType;->ALGORITHM_PARAMS:Ljavax/crypto/Cipher$InitType; -Ljavax/crypto/Cipher$InitType;->ALGORITHM_PARAM_SPEC:Ljavax/crypto/Cipher$InitType; -Ljavax/crypto/Cipher$InitType;->KEY:Ljavax/crypto/Cipher$InitType; -Ljavax/crypto/Cipher$InitType;->valueOf(Ljava/lang/String;)Ljavax/crypto/Cipher$InitType; -Ljavax/crypto/Cipher$InitType;->values()[Ljavax/crypto/Cipher$InitType; -Ljavax/crypto/Cipher$NeedToSet;->BOTH:Ljavax/crypto/Cipher$NeedToSet; -Ljavax/crypto/Cipher$NeedToSet;->MODE:Ljavax/crypto/Cipher$NeedToSet; -Ljavax/crypto/Cipher$NeedToSet;->NONE:Ljavax/crypto/Cipher$NeedToSet; -Ljavax/crypto/Cipher$NeedToSet;->PADDING:Ljavax/crypto/Cipher$NeedToSet; -Ljavax/crypto/Cipher$NeedToSet;->valueOf(Ljava/lang/String;)Ljavax/crypto/Cipher$NeedToSet; -Ljavax/crypto/Cipher$NeedToSet;->values()[Ljavax/crypto/Cipher$NeedToSet; -Ljavax/crypto/Cipher$SpiAndProviderUpdater;->getCurrentSpi(Ljavax/crypto/CipherSpi;)Ljavax/crypto/CipherSpi; -Ljavax/crypto/Cipher$SpiAndProviderUpdater;->initSpiLock:Ljava/lang/Object; -Ljavax/crypto/Cipher$SpiAndProviderUpdater;->setCipherSpiImplAndProvider(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V -Ljavax/crypto/Cipher$SpiAndProviderUpdater;->specifiedProvider:Ljava/security/Provider; -Ljavax/crypto/Cipher$SpiAndProviderUpdater;->specifiedSpi:Ljavax/crypto/CipherSpi; -Ljavax/crypto/Cipher$SpiAndProviderUpdater;->updateAndGetSpiAndProvider(Ljavax/crypto/Cipher$InitParams;Ljavax/crypto/CipherSpi;Ljava/security/Provider;)Ljavax/crypto/Cipher$CipherSpiAndProvider; -Ljavax/crypto/Cipher$SpiAndProviderUpdater;->updateAndGetSpiAndProvider(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)Ljavax/crypto/Cipher$CipherSpiAndProvider; -Ljavax/crypto/Cipher$Transform;-><init>(Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;)V -Ljavax/crypto/Cipher$Transform;->name:Ljava/lang/String; -Ljavax/crypto/Cipher$Transform;->needToSet:Ljavax/crypto/Cipher$NeedToSet; -Ljavax/crypto/Cipher;-><init>(Ljavax/crypto/CipherSpi;Ljava/security/Provider;Ljava/lang/String;[Ljava/lang/String;)V -Ljavax/crypto/Cipher;->ATTRIBUTE_MODES:Ljava/lang/String; -Ljavax/crypto/Cipher;->ATTRIBUTE_PADDINGS:Ljava/lang/String; -Ljavax/crypto/Cipher;->checkCipherState()V -Ljavax/crypto/Cipher;->checkOpmode(I)V -Ljavax/crypto/Cipher;->chooseProvider(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V -Ljavax/crypto/Cipher;->createCipher(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher; -Ljavax/crypto/Cipher;->exmech:Ljavax/crypto/ExemptionMechanism; -Ljavax/crypto/Cipher;->getAlgorithmParameterSpec(Ljava/security/AlgorithmParameters;)Ljava/security/spec/AlgorithmParameterSpec; -Ljavax/crypto/Cipher;->getCurrentSpi()Ljavax/crypto/CipherSpi; -Ljavax/crypto/Cipher;->getOpmodeString(I)Ljava/lang/String; -Ljavax/crypto/Cipher;->initialized:Z -Ljavax/crypto/Cipher;->KEY_USAGE_EXTENSION_OID:Ljava/lang/String; -Ljavax/crypto/Cipher;->matchAttribute(Ljava/security/Provider$Service;Ljava/lang/String;Ljava/lang/String;)Z -Ljavax/crypto/Cipher;->opmode:I -Ljavax/crypto/Cipher;->provider:Ljava/security/Provider; -Ljavax/crypto/Cipher;->spi:Ljavax/crypto/CipherSpi; -Ljavax/crypto/Cipher;->spiAndProviderUpdater:Ljavax/crypto/Cipher$SpiAndProviderUpdater; -Ljavax/crypto/Cipher;->tokenizedTransformation:[Ljava/lang/String; -Ljavax/crypto/Cipher;->tokenizeTransformation(Ljava/lang/String;)[Ljava/lang/String; -Ljavax/crypto/Cipher;->transformation:Ljava/lang/String; -Ljavax/crypto/Cipher;->tryCombinations(Ljavax/crypto/Cipher$InitParams;Ljava/security/Provider;[Ljava/lang/String;)Ljavax/crypto/Cipher$CipherSpiAndProvider; -Ljavax/crypto/Cipher;->tryTransformWithProvider(Ljavax/crypto/Cipher$InitParams;[Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;Ljava/security/Provider$Service;)Ljavax/crypto/Cipher$CipherSpiAndProvider; -Ljavax/crypto/Cipher;->updateProviderIfNeeded()V -Ljavax/crypto/CipherInputStream;->cipher:Ljavax/crypto/Cipher; -Ljavax/crypto/CipherInputStream;->closed:Z -Ljavax/crypto/CipherInputStream;->done:Z -Ljavax/crypto/CipherInputStream;->getMoreData()I -Ljavax/crypto/CipherInputStream;->ibuffer:[B -Ljavax/crypto/CipherInputStream;->input:Ljava/io/InputStream; -Ljavax/crypto/CipherInputStream;->obuffer:[B -Ljavax/crypto/CipherInputStream;->ofinish:I -Ljavax/crypto/CipherInputStream;->ostart:I -Ljavax/crypto/CipherOutputStream;->cipher:Ljavax/crypto/Cipher; -Ljavax/crypto/CipherOutputStream;->closed:Z -Ljavax/crypto/CipherOutputStream;->ibuffer:[B -Ljavax/crypto/CipherOutputStream;->obuffer:[B -Ljavax/crypto/CipherOutputStream;->output:Ljava/io/OutputStream; -Ljavax/crypto/CipherSpi;->bufferCrypt(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;Z)I -Ljavax/crypto/CipherSpi;->getTempArraySize(I)I -Ljavax/crypto/EncryptedPrivateKeyInfo;->algid:Lsun/security/x509/AlgorithmId; -Ljavax/crypto/EncryptedPrivateKeyInfo;->checkPKCS8Encoding([B)V -Ljavax/crypto/EncryptedPrivateKeyInfo;->checkTag(Lsun/security/util/DerValue;BLjava/lang/String;)V -Ljavax/crypto/EncryptedPrivateKeyInfo;->encoded:[B -Ljavax/crypto/EncryptedPrivateKeyInfo;->encryptedData:[B -Ljavax/crypto/EncryptedPrivateKeyInfo;->getKeySpecImpl(Ljava/security/Key;Ljava/security/Provider;)Ljava/security/spec/PKCS8EncodedKeySpec; -Ljavax/crypto/ExemptionMechanism;->done:Z -Ljavax/crypto/ExemptionMechanism;->exmechSpi:Ljavax/crypto/ExemptionMechanismSpi; -Ljavax/crypto/ExemptionMechanism;->initialized:Z -Ljavax/crypto/ExemptionMechanism;->keyStored:Ljava/security/Key; -Ljavax/crypto/ExemptionMechanism;->mechanism:Ljava/lang/String; -Ljavax/crypto/ExemptionMechanism;->provider:Ljava/security/Provider; -Ljavax/crypto/KeyAgreement;-><init>(Ljava/lang/String;)V -Ljavax/crypto/KeyAgreement;->algorithm:Ljava/lang/String; -Ljavax/crypto/KeyAgreement;->chooseFirstProvider()V -Ljavax/crypto/KeyAgreement;->chooseProvider(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V -Ljavax/crypto/KeyAgreement;->implInit(Ljavax/crypto/KeyAgreementSpi;ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V -Ljavax/crypto/KeyAgreement;->I_NO_PARAMS:I -Ljavax/crypto/KeyAgreement;->I_PARAMS:I -Ljavax/crypto/KeyAgreement;->lock:Ljava/lang/Object; -Ljavax/crypto/KeyAgreement;->provider:Ljava/security/Provider; -Ljavax/crypto/KeyAgreement;->spi:Ljavax/crypto/KeyAgreementSpi; -Ljavax/crypto/KeyAgreement;->warnCount:I -Ljavax/crypto/KeyGenerator;-><init>(Ljava/lang/String;)V -Ljavax/crypto/KeyGenerator;->algorithm:Ljava/lang/String; -Ljavax/crypto/KeyGenerator;->disableFailover()V -Ljavax/crypto/KeyGenerator;->initKeySize:I -Ljavax/crypto/KeyGenerator;->initParams:Ljava/security/spec/AlgorithmParameterSpec; -Ljavax/crypto/KeyGenerator;->initRandom:Ljava/security/SecureRandom; -Ljavax/crypto/KeyGenerator;->initType:I -Ljavax/crypto/KeyGenerator;->I_NONE:I -Ljavax/crypto/KeyGenerator;->I_PARAMS:I -Ljavax/crypto/KeyGenerator;->I_RANDOM:I -Ljavax/crypto/KeyGenerator;->I_SIZE:I -Ljavax/crypto/KeyGenerator;->lock:Ljava/lang/Object; -Ljavax/crypto/KeyGenerator;->nextSpi(Ljavax/crypto/KeyGeneratorSpi;Z)Ljavax/crypto/KeyGeneratorSpi; -Ljavax/crypto/KeyGenerator;->provider:Ljava/security/Provider; -Ljavax/crypto/KeyGenerator;->serviceIterator:Ljava/util/Iterator; -Ljavax/crypto/KeyGenerator;->spi:Ljavax/crypto/KeyGeneratorSpi; -Ljavax/crypto/Mac;-><init>(Ljava/lang/String;)V -Ljavax/crypto/Mac;->algorithm:Ljava/lang/String; -Ljavax/crypto/Mac;->chooseFirstProvider()V -Ljavax/crypto/Mac;->chooseProvider(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V -Ljavax/crypto/Mac;->getCurrentSpi()Ljavax/crypto/MacSpi; -Ljavax/crypto/Mac;->initialized:Z -Ljavax/crypto/Mac;->lock:Ljava/lang/Object; -Ljavax/crypto/Mac;->provider:Ljava/security/Provider; -Ljavax/crypto/Mac;->spi:Ljavax/crypto/MacSpi; -Ljavax/crypto/Mac;->warnCount:I -Ljavax/crypto/SealedObject;->encryptedContent:[B -Ljavax/crypto/SealedObject;->paramsAlg:Ljava/lang/String; -Ljavax/crypto/SealedObject;->sealAlg:Ljava/lang/String; -Ljavax/crypto/SealedObject;->unseal(Ljava/security/Key;Ljava/lang/String;)Ljava/lang/Object; -Ljavax/crypto/SecretKeyFactory;-><init>(Ljava/lang/String;)V -Ljavax/crypto/SecretKeyFactory;->algorithm:Ljava/lang/String; -Ljavax/crypto/SecretKeyFactory;->lock:Ljava/lang/Object; -Ljavax/crypto/SecretKeyFactory;->nextSpi(Ljavax/crypto/SecretKeyFactorySpi;)Ljavax/crypto/SecretKeyFactorySpi; -Ljavax/crypto/SecretKeyFactory;->provider:Ljava/security/Provider; -Ljavax/crypto/SecretKeyFactory;->serviceIterator:Ljava/util/Iterator; -Ljavax/crypto/SecretKeyFactory;->spi:Ljavax/crypto/SecretKeyFactorySpi; -Ljavax/crypto/spec/DESedeKeySpec;->key:[B -Ljavax/crypto/spec/DESKeySpec;->key:[B -Ljavax/crypto/spec/DESKeySpec;->WEAK_KEYS:[[B -Ljavax/crypto/spec/DHGenParameterSpec;->exponentSize:I -Ljavax/crypto/spec/DHGenParameterSpec;->primeSize:I -Ljavax/crypto/spec/DHParameterSpec;->g:Ljava/math/BigInteger; -Ljavax/crypto/spec/DHParameterSpec;->l:I -Ljavax/crypto/spec/DHParameterSpec;->p:Ljava/math/BigInteger; -Ljavax/crypto/spec/DHPrivateKeySpec;->g:Ljava/math/BigInteger; -Ljavax/crypto/spec/DHPrivateKeySpec;->p:Ljava/math/BigInteger; -Ljavax/crypto/spec/DHPrivateKeySpec;->x:Ljava/math/BigInteger; -Ljavax/crypto/spec/DHPublicKeySpec;->g:Ljava/math/BigInteger; -Ljavax/crypto/spec/DHPublicKeySpec;->p:Ljava/math/BigInteger; -Ljavax/crypto/spec/DHPublicKeySpec;->y:Ljava/math/BigInteger; -Ljavax/crypto/spec/GCMParameterSpec;->init(I[BII)V -Ljavax/crypto/spec/GCMParameterSpec;->iv:[B -Ljavax/crypto/spec/GCMParameterSpec;->tLen:I -Ljavax/crypto/spec/IvParameterSpec;->iv:[B -Ljavax/crypto/spec/OAEPParameterSpec;-><init>()V -Ljavax/crypto/spec/OAEPParameterSpec;->mdName:Ljava/lang/String; -Ljavax/crypto/spec/OAEPParameterSpec;->mgfName:Ljava/lang/String; -Ljavax/crypto/spec/OAEPParameterSpec;->mgfSpec:Ljava/security/spec/AlgorithmParameterSpec; -Ljavax/crypto/spec/OAEPParameterSpec;->pSrc:Ljavax/crypto/spec/PSource; -Ljavax/crypto/spec/PBEKeySpec;->iterationCount:I -Ljavax/crypto/spec/PBEKeySpec;->keyLength:I -Ljavax/crypto/spec/PBEKeySpec;->password:[C -Ljavax/crypto/spec/PBEKeySpec;->salt:[B -Ljavax/crypto/spec/PBEParameterSpec;->iterationCount:I -Ljavax/crypto/spec/PBEParameterSpec;->paramSpec:Ljava/security/spec/AlgorithmParameterSpec; -Ljavax/crypto/spec/PBEParameterSpec;->salt:[B -Ljavax/crypto/spec/PSource$PSpecified;->p:[B -Ljavax/crypto/spec/PSource;->pSrcName:Ljava/lang/String; -Ljavax/crypto/spec/RC2ParameterSpec;->effectiveKeyBits:I -Ljavax/crypto/spec/RC2ParameterSpec;->iv:[B -Ljavax/crypto/spec/RC5ParameterSpec;->iv:[B -Ljavax/crypto/spec/RC5ParameterSpec;->rounds:I -Ljavax/crypto/spec/RC5ParameterSpec;->version:I -Ljavax/crypto/spec/RC5ParameterSpec;->wordSize:I -Ljavax/crypto/spec/SecretKeySpec;->algorithm:Ljava/lang/String; -Ljavax/crypto/spec/SecretKeySpec;->key:[B -Ljavax/microedition/khronos/egl/EGLContext;->EGL_INSTANCE:Ljavax/microedition/khronos/egl/EGL; -Ljavax/net/ServerSocketFactory;->theFactory:Ljavax/net/ServerSocketFactory; -Ljavax/net/SocketFactory;->setDefault(Ljavax/net/SocketFactory;)V -Ljavax/net/SocketFactory;->theFactory:Ljavax/net/SocketFactory; -Ljavax/net/ssl/CertPathTrustManagerParameters;->parameters:Ljava/security/cert/CertPathParameters; -Ljavax/net/ssl/HandshakeCompletedEvent;->session:Ljavax/net/ssl/SSLSession; -Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder;-><init>()V -Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder;->defaultHostnameVerifier:Ljavax/net/ssl/HostnameVerifier; -Ljavax/net/ssl/HttpsURLConnection$NoPreloadHolder;->originalDefaultHostnameVerifierClass:Ljava/lang/Class; -Ljavax/net/ssl/HttpsURLConnection;->defaultSSLSocketFactory:Ljavax/net/ssl/SSLSocketFactory; -Ljavax/net/ssl/HttpsURLConnection;->sslSocketFactory:Ljavax/net/ssl/SSLSocketFactory; -Ljavax/net/ssl/KeyManagerFactory;->algorithm:Ljava/lang/String; -Ljavax/net/ssl/KeyManagerFactory;->factorySpi:Ljavax/net/ssl/KeyManagerFactorySpi; -Ljavax/net/ssl/KeyManagerFactory;->provider:Ljava/security/Provider; -Ljavax/net/ssl/KeyStoreBuilderParameters;->parameters:Ljava/util/List; -Ljavax/net/ssl/SNIHostName$SNIHostNameMatcher;-><init>(Ljava/lang/String;)V -Ljavax/net/ssl/SNIHostName$SNIHostNameMatcher;->pattern:Ljava/util/regex/Pattern; -Ljavax/net/ssl/SNIHostName;->checkHostName()V -Ljavax/net/ssl/SNIHostName;->hostname:Ljava/lang/String; -Ljavax/net/ssl/SNIMatcher;->type:I -Ljavax/net/ssl/SNIServerName;->encoded:[B -Ljavax/net/ssl/SNIServerName;->HEXES:[C -Ljavax/net/ssl/SNIServerName;->toHexString([B)Ljava/lang/String; -Ljavax/net/ssl/SNIServerName;->type:I -Ljavax/net/ssl/SSLContext;->contextSpi:Ljavax/net/ssl/SSLContextSpi; -Ljavax/net/ssl/SSLContext;->defaultContext:Ljavax/net/ssl/SSLContext; -Ljavax/net/ssl/SSLContext;->protocol:Ljava/lang/String; -Ljavax/net/ssl/SSLContext;->provider:Ljava/security/Provider; -Ljavax/net/ssl/SSLContextSpi;->getDefaultSocket()Ljavax/net/ssl/SSLSocket; -Ljavax/net/ssl/SSLEngine;->peerHost:Ljava/lang/String; -Ljavax/net/ssl/SSLEngine;->peerPort:I -Ljavax/net/ssl/SSLEngineResult;->bytesConsumed:I -Ljavax/net/ssl/SSLEngineResult;->bytesProduced:I -Ljavax/net/ssl/SSLEngineResult;->handshakeStatus:Ljavax/net/ssl/SSLEngineResult$HandshakeStatus; -Ljavax/net/ssl/SSLEngineResult;->status:Ljavax/net/ssl/SSLEngineResult$Status; -Ljavax/net/ssl/SSLParameters;->algorithmConstraints:Ljava/security/AlgorithmConstraints; -Ljavax/net/ssl/SSLParameters;->cipherSuites:[Ljava/lang/String; -Ljavax/net/ssl/SSLParameters;->clone([Ljava/lang/String;)[Ljava/lang/String; -Ljavax/net/ssl/SSLParameters;->identificationAlgorithm:Ljava/lang/String; -Ljavax/net/ssl/SSLParameters;->needClientAuth:Z -Ljavax/net/ssl/SSLParameters;->preferLocalCipherSuites:Z -Ljavax/net/ssl/SSLParameters;->protocols:[Ljava/lang/String; -Ljavax/net/ssl/SSLParameters;->sniMatchers:Ljava/util/Map; -Ljavax/net/ssl/SSLParameters;->sniNames:Ljava/util/Map; -Ljavax/net/ssl/SSLParameters;->wantClientAuth:Z -Ljavax/net/ssl/SSLServerSocketFactory;->lastVersion:I -Ljavax/net/ssl/SSLServerSocketFactory;->log(Ljava/lang/String;)V -Ljavax/net/ssl/SSLSessionBindingEvent;->name:Ljava/lang/String; -Ljavax/net/ssl/SSLSocketFactory;->DEBUG:Z -Ljavax/net/ssl/SSLSocketFactory;->getSecurityProperty(Ljava/lang/String;)Ljava/lang/String; -Ljavax/net/ssl/SSLSocketFactory;->lastVersion:I -Ljavax/net/ssl/SSLSocketFactory;->log(Ljava/lang/String;)V -Ljavax/net/ssl/StandardConstants;-><init>()V -Ljavax/net/ssl/TrustManagerFactory;->algorithm:Ljava/lang/String; -Ljavax/net/ssl/TrustManagerFactory;->factorySpi:Ljavax/net/ssl/TrustManagerFactorySpi; -Ljavax/net/ssl/TrustManagerFactory;->provider:Ljava/security/Provider; -Ljavax/security/auth/callback/PasswordCallback;->echoOn:Z -Ljavax/security/auth/callback/PasswordCallback;->inputPassword:[C -Ljavax/security/auth/callback/PasswordCallback;->prompt:Ljava/lang/String; -Ljavax/security/auth/callback/UnsupportedCallbackException;->callback:Ljavax/security/auth/callback/Callback; -Ljavax/security/auth/PrivateCredentialPermission;-><init>(Ljava/lang/String;Ljava/util/Set;)V -Ljavax/security/auth/Subject$AuthPermissionHolder;-><init>()V -Ljavax/security/auth/Subject$AuthPermissionHolder;->DO_AS_PERMISSION:Ljavax/security/auth/AuthPermission; -Ljavax/security/auth/Subject$AuthPermissionHolder;->DO_AS_PRIVILEGED_PERMISSION:Ljavax/security/auth/AuthPermission; -Ljavax/security/auth/Subject$AuthPermissionHolder;->GET_SUBJECT_PERMISSION:Ljavax/security/auth/AuthPermission; -Ljavax/security/auth/Subject$AuthPermissionHolder;->MODIFY_PRINCIPALS_PERMISSION:Ljavax/security/auth/AuthPermission; -Ljavax/security/auth/Subject$AuthPermissionHolder;->MODIFY_PRIVATE_CREDENTIALS_PERMISSION:Ljavax/security/auth/AuthPermission; -Ljavax/security/auth/Subject$AuthPermissionHolder;->MODIFY_PUBLIC_CREDENTIALS_PERMISSION:Ljavax/security/auth/AuthPermission; -Ljavax/security/auth/Subject$AuthPermissionHolder;->SET_READ_ONLY_PERMISSION:Ljavax/security/auth/AuthPermission; -Ljavax/security/auth/Subject$ClassSet;->add(Ljava/lang/Object;)Z -Ljavax/security/auth/Subject$ClassSet;->c:Ljava/lang/Class; -Ljavax/security/auth/Subject$ClassSet;->populateSet()V -Ljavax/security/auth/Subject$ClassSet;->set:Ljava/util/Set; -Ljavax/security/auth/Subject$ClassSet;->which:I -Ljavax/security/auth/Subject$SecureSet;-><init>(Ljavax/security/auth/Subject;I)V -Ljavax/security/auth/Subject$SecureSet;-><init>(Ljavax/security/auth/Subject;ILjava/util/Set;)V -Ljavax/security/auth/Subject$SecureSet;->elements:Ljava/util/LinkedList; -Ljavax/security/auth/Subject$SecureSet;->subject:Ljavax/security/auth/Subject; -Ljavax/security/auth/Subject$SecureSet;->which:I -Ljavax/security/auth/Subject;->createContext(Ljavax/security/auth/Subject;Ljava/security/AccessControlContext;)Ljava/security/AccessControlContext; -Ljavax/security/auth/Subject;->getCredHashCode(Ljava/lang/Object;)I -Ljavax/security/auth/Subject;->NULL_PD_ARRAY:[Ljava/security/ProtectionDomain; -Ljavax/security/auth/Subject;->principals:Ljava/util/Set; -Ljavax/security/auth/Subject;->PRINCIPAL_SET:I -Ljavax/security/auth/Subject;->privCredentials:Ljava/util/Set; -Ljavax/security/auth/Subject;->PRIV_CREDENTIAL_SET:I -Ljavax/security/auth/Subject;->pubCredentials:Ljava/util/Set; -Ljavax/security/auth/Subject;->PUB_CREDENTIAL_SET:I -Ljavax/security/auth/Subject;->readOnly:Z -Ljavax/security/auth/Subject;->toString(Z)Ljava/lang/String; -Ljavax/security/auth/x500/X500Principal;-><init>(Lsun/security/x509/X500Name;)V -Ljavax/security/auth/x500/X500Principal;->thisX500Name:Lsun/security/x509/X500Name; -Ljavax/security/cert/X509Certificate;->DEFAULT_X509_CERT_CLASS:Ljava/lang/String; -Ljavax/security/cert/X509Certificate;->getInst(Ljava/lang/Object;)Ljavax/security/cert/X509Certificate; -Ljavax/security/cert/X509Certificate;->X509Provider:Ljava/lang/String; -Ljavax/security/cert/X509Certificate;->X509_PROVIDER:Ljava/lang/String; -Ljavax/sql/ConnectionEvent;->ex:Ljava/sql/SQLException; -Ljavax/sql/StatementEvent;->exception:Ljava/sql/SQLException; -Ljavax/sql/StatementEvent;->statement:Ljava/sql/PreparedStatement; -Ljavax/xml/datatype/DatatypeConfigurationException;->causeOnJDK13OrBelow:Ljava/lang/Throwable; -Ljavax/xml/datatype/DatatypeConfigurationException;->initCauseByReflection(Ljava/lang/Throwable;)V -Ljavax/xml/datatype/DatatypeConfigurationException;->isJDK14OrAbove:Z -Ljavax/xml/datatype/DatatypeConfigurationException;->printStackTrace0(Ljava/io/PrintWriter;)V -Ljavax/xml/datatype/DatatypeConstants$Field;-><init>(Ljava/lang/String;I)V -Ljavax/xml/datatype/DatatypeConstants$Field;->id:I -Ljavax/xml/datatype/DatatypeConstants$Field;->str:Ljava/lang/String; -Ljavax/xml/datatype/DatatypeConstants;-><init>()V -Ljavax/xml/datatype/Duration;->getCalendarTimeInMillis(Ljava/util/Calendar;)J -Ljavax/xml/datatype/Duration;->getFieldValueAsInt(Ljavax/xml/datatype/DatatypeConstants$Field;)I -Ljavax/xml/datatype/Duration;->toString(Ljava/math/BigDecimal;)Ljava/lang/String; -Ljavax/xml/namespace/QName;->compatibilitySerialVersionUID:J -Ljavax/xml/namespace/QName;->defaultSerialVersionUID:J -Ljavax/xml/namespace/QName;->localPart:Ljava/lang/String; -Ljavax/xml/namespace/QName;->namespaceURI:Ljava/lang/String; -Ljavax/xml/namespace/QName;->prefix:Ljava/lang/String; -Ljavax/xml/namespace/QName;->qNameAsString:Ljava/lang/String; -Ljavax/xml/parsers/DocumentBuilder;->DEBUG:Z -Ljavax/xml/parsers/DocumentBuilderFactory;->coalescing:Z -Ljavax/xml/parsers/DocumentBuilderFactory;->expandEntityRef:Z -Ljavax/xml/parsers/DocumentBuilderFactory;->ignoreComments:Z -Ljavax/xml/parsers/DocumentBuilderFactory;->namespaceAware:Z -Ljavax/xml/parsers/DocumentBuilderFactory;->validating:Z -Ljavax/xml/parsers/DocumentBuilderFactory;->whitespace:Z -Ljavax/xml/parsers/FactoryConfigurationError;->exception:Ljava/lang/Exception; -Ljavax/xml/parsers/SAXParser;->DEBUG:Z -Ljavax/xml/parsers/SAXParserFactory;->namespaceAware:Z -Ljavax/xml/parsers/SAXParserFactory;->validating:Z -Ljavax/xml/transform/dom/DOMResult;->nextSibling:Lorg/w3c/dom/Node; -Ljavax/xml/transform/dom/DOMResult;->node:Lorg/w3c/dom/Node; -Ljavax/xml/transform/dom/DOMResult;->systemId:Ljava/lang/String; -Ljavax/xml/transform/dom/DOMSource;->node:Lorg/w3c/dom/Node; -Ljavax/xml/transform/dom/DOMSource;->systemID:Ljava/lang/String; -Ljavax/xml/transform/OutputKeys;-><init>()V -Ljavax/xml/transform/sax/SAXResult;->handler:Lorg/xml/sax/ContentHandler; -Ljavax/xml/transform/sax/SAXResult;->lexhandler:Lorg/xml/sax/ext/LexicalHandler; -Ljavax/xml/transform/sax/SAXResult;->systemId:Ljava/lang/String; -Ljavax/xml/transform/sax/SAXSource;->inputSource:Lorg/xml/sax/InputSource; -Ljavax/xml/transform/sax/SAXSource;->reader:Lorg/xml/sax/XMLReader; -Ljavax/xml/transform/stream/StreamResult;->outputStream:Ljava/io/OutputStream; -Ljavax/xml/transform/stream/StreamResult;->systemId:Ljava/lang/String; -Ljavax/xml/transform/stream/StreamResult;->writer:Ljava/io/Writer; -Ljavax/xml/transform/stream/StreamSource;->inputStream:Ljava/io/InputStream; -Ljavax/xml/transform/stream/StreamSource;->publicId:Ljava/lang/String; -Ljavax/xml/transform/stream/StreamSource;->reader:Ljava/io/Reader; -Ljavax/xml/transform/stream/StreamSource;->systemId:Ljava/lang/String; -Ljavax/xml/transform/TransformerException;->containedException:Ljava/lang/Throwable; -Ljavax/xml/transform/TransformerException;->locator:Ljavax/xml/transform/SourceLocator; -Ljavax/xml/transform/TransformerFactoryConfigurationError;->exception:Ljava/lang/Exception; -Ljavax/xml/XMLConstants;-><init>()V -Ljavax/xml/xpath/XPathConstants;-><init>()V -Ljavax/xml/xpath/XPathException;->cause:Ljava/lang/Throwable; -Llibcore/util/BasicLruCache;->maxSize:I -Llibcore/util/BasicLruCache;->trimToSize(I)V -Llibcore/util/NativeAllocationRegistry$CleanerRunner;-><init>(Lsun/misc/Cleaner;)V -Llibcore/util/NativeAllocationRegistry$CleanerRunner;->cleaner:Lsun/misc/Cleaner; -Llibcore/util/NativeAllocationRegistry$CleanerThunk;->nativePtr:J -Llibcore/util/NativeAllocationRegistry$CleanerThunk;->setNativePtr(J)V -Llibcore/util/NativeAllocationRegistry;->classLoader:Ljava/lang/ClassLoader; -Llibcore/util/NativeAllocationRegistry;->freeFunction:J -Llibcore/util/NativeAllocationRegistry;->registerNativeAllocation(J)V -Llibcore/util/NativeAllocationRegistry;->registerNativeFree(J)V -Llibcore/util/NativeAllocationRegistry;->size:J -Llibcore/util/ZoneInfo$CheckedArithmeticException;-><init>()V -Llibcore/util/ZoneInfo$OffsetInterval;-><init>(IIII)V -Llibcore/util/ZoneInfo$OffsetInterval;->containsWallTime(J)Z -Llibcore/util/ZoneInfo$OffsetInterval;->create(Llibcore/util/ZoneInfo;I)Llibcore/util/ZoneInfo$OffsetInterval; -Llibcore/util/ZoneInfo$OffsetInterval;->endWallTimeSeconds:I -Llibcore/util/ZoneInfo$OffsetInterval;->getEndWallTimeSeconds()J -Llibcore/util/ZoneInfo$OffsetInterval;->getIsDst()I -Llibcore/util/ZoneInfo$OffsetInterval;->getStartWallTimeSeconds()J -Llibcore/util/ZoneInfo$OffsetInterval;->getTotalOffsetSeconds()I -Llibcore/util/ZoneInfo$OffsetInterval;->isDst:I -Llibcore/util/ZoneInfo$OffsetInterval;->startWallTimeSeconds:I -Llibcore/util/ZoneInfo$OffsetInterval;->totalOffsetSeconds:I -Llibcore/util/ZoneInfo$WallTime;->calendar:Ljava/util/GregorianCalendar; -Llibcore/util/ZoneInfo$WallTime;->copyFieldsFromCalendar()V -Llibcore/util/ZoneInfo$WallTime;->copyFieldsToCalendar()V -Llibcore/util/ZoneInfo$WallTime;->doWallTimeSearch(Llibcore/util/ZoneInfo;IIZ)Ljava/lang/Integer; -Llibcore/util/ZoneInfo$WallTime;->getOffsetsOfType(Llibcore/util/ZoneInfo;II)[I -Llibcore/util/ZoneInfo$WallTime;->gmtOffsetSeconds:I -Llibcore/util/ZoneInfo$WallTime;->hour:I -Llibcore/util/ZoneInfo$WallTime;->isDst:I -Llibcore/util/ZoneInfo$WallTime;->minute:I -Llibcore/util/ZoneInfo$WallTime;->month:I -Llibcore/util/ZoneInfo$WallTime;->monthDay:I -Llibcore/util/ZoneInfo$WallTime;->second:I -Llibcore/util/ZoneInfo$WallTime;->tryOffsetAdjustments(Llibcore/util/ZoneInfo;ILlibcore/util/ZoneInfo$OffsetInterval;II)Ljava/lang/Integer; -Llibcore/util/ZoneInfo$WallTime;->weekDay:I -Llibcore/util/ZoneInfo$WallTime;->year:I -Llibcore/util/ZoneInfo$WallTime;->yearDay:I -Llibcore/util/ZoneInfo;-><init>(Ljava/lang/String;[J[B[I[BJ)V -Llibcore/util/ZoneInfo;->checkedAdd(JI)I -Llibcore/util/ZoneInfo;->checkedSubtract(II)I -Llibcore/util/ZoneInfo;->findOffsetIndexForTimeInMilliseconds(J)I -Llibcore/util/ZoneInfo;->findOffsetIndexForTimeInSeconds(J)I -Llibcore/util/ZoneInfo;->LEAP:[I -Llibcore/util/ZoneInfo;->mDstSavings:I -Llibcore/util/ZoneInfo;->mEarliestRawOffset:I -Llibcore/util/ZoneInfo;->MILLISECONDS_PER_400_YEARS:J -Llibcore/util/ZoneInfo;->MILLISECONDS_PER_DAY:J -Llibcore/util/ZoneInfo;->mIsDsts:[B -Llibcore/util/ZoneInfo;->mOffsets:[I -Llibcore/util/ZoneInfo;->mRawOffset:I -Llibcore/util/ZoneInfo;->mTypes:[B -Llibcore/util/ZoneInfo;->mUseDst:Z -Llibcore/util/ZoneInfo;->NORMAL:[I -Llibcore/util/ZoneInfo;->roundDownMillisToSeconds(J)J -Llibcore/util/ZoneInfo;->roundUpMillisToSeconds(J)J -Llibcore/util/ZoneInfo;->UNIX_OFFSET:J Lorg/apache/http/conn/ssl/AbstractVerifier;->IPV4_PATTERN:Ljava/util/regex/Pattern; Lorg/apache/http/conn/ssl/AbstractVerifier;->isIPv4Address(Ljava/lang/String;)Z Lorg/apache/http/conn/ssl/SSLSocketFactory$NoPreloadHolder;-><init>()V @@ -112510,629 +94147,3 @@ Lorg/apache/http/conn/ssl/SSLSocketFactory$NoPreloadHolder;->DEFAULT_FACTORY:Lor Lorg/apache/http/params/HttpConnectionParams;-><init>()V Lorg/ccil/cowan/tagsoup/AttributesImpl;->badIndex(I)V Lorg/ccil/cowan/tagsoup/AttributesImpl;->ensureCapacity(I)V -Lorg/json/JSONArray;->checkedPut(Ljava/lang/Object;)V -Lorg/json/JSONStringer$Scope;->DANGLING_KEY:Lorg/json/JSONStringer$Scope; -Lorg/json/JSONStringer$Scope;->EMPTY_ARRAY:Lorg/json/JSONStringer$Scope; -Lorg/json/JSONStringer$Scope;->EMPTY_OBJECT:Lorg/json/JSONStringer$Scope; -Lorg/json/JSONStringer$Scope;->NONEMPTY_ARRAY:Lorg/json/JSONStringer$Scope; -Lorg/json/JSONStringer$Scope;->NONEMPTY_OBJECT:Lorg/json/JSONStringer$Scope; -Lorg/json/JSONStringer$Scope;->NULL:Lorg/json/JSONStringer$Scope; -Lorg/json/JSONStringer$Scope;->valueOf(Ljava/lang/String;)Lorg/json/JSONStringer$Scope; -Lorg/json/JSONStringer$Scope;->values()[Lorg/json/JSONStringer$Scope; -Lorg/w3c/dom/ls/LSSerializer;->getFilter()Lorg/w3c/dom/ls/LSSerializerFilter; -Lorg/w3c/dom/ls/LSSerializer;->setFilter(Lorg/w3c/dom/ls/LSSerializerFilter;)V -Lorg/w3c/dom/traversal/NodeFilter;->FILTER_ACCEPT:S -Lorg/w3c/dom/traversal/NodeFilter;->FILTER_REJECT:S -Lorg/w3c/dom/traversal/NodeFilter;->FILTER_SKIP:S -Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ALL:I -Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ATTRIBUTE:I -Lorg/w3c/dom/traversal/NodeFilter;->SHOW_CDATA_SECTION:I -Lorg/w3c/dom/traversal/NodeFilter;->SHOW_COMMENT:I -Lorg/w3c/dom/traversal/NodeFilter;->SHOW_DOCUMENT:I -Lorg/w3c/dom/traversal/NodeFilter;->SHOW_DOCUMENT_FRAGMENT:I -Lorg/w3c/dom/traversal/NodeFilter;->SHOW_DOCUMENT_TYPE:I -Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ELEMENT:I -Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ENTITY:I -Lorg/w3c/dom/traversal/NodeFilter;->SHOW_ENTITY_REFERENCE:I -Lorg/w3c/dom/traversal/NodeFilter;->SHOW_NOTATION:I -Lorg/w3c/dom/traversal/NodeFilter;->SHOW_PROCESSING_INSTRUCTION:I -Lorg/w3c/dom/traversal/NodeFilter;->SHOW_TEXT:I -Lorg/w3c/dom/traversal/NodeIterator;->getExpandEntityReferences()Z -Lorg/w3c/dom/traversal/NodeIterator;->getFilter()Lorg/w3c/dom/traversal/NodeFilter; -Lorg/w3c/dom/traversal/NodeIterator;->getRoot()Lorg/w3c/dom/Node; -Lorg/w3c/dom/traversal/NodeIterator;->getWhatToShow()I -Lorg/w3c/dom/traversal/NodeIterator;->previousNode()Lorg/w3c/dom/Node; -Lorg/xml/sax/helpers/AttributeListImpl;->names:Ljava/util/ArrayList; -Lorg/xml/sax/helpers/AttributeListImpl;->types:Ljava/util/ArrayList; -Lorg/xml/sax/helpers/AttributeListImpl;->values:Ljava/util/ArrayList; -Lorg/xml/sax/helpers/NamespaceSupport$Context;->attributeNameTable:Ljava/util/Hashtable; -Lorg/xml/sax/helpers/NamespaceSupport$Context;->clear()V -Lorg/xml/sax/helpers/NamespaceSupport$Context;->copyTables()V -Lorg/xml/sax/helpers/NamespaceSupport$Context;->declarations:Ljava/util/ArrayList; -Lorg/xml/sax/helpers/NamespaceSupport$Context;->declarePrefix(Ljava/lang/String;Ljava/lang/String;)V -Lorg/xml/sax/helpers/NamespaceSupport$Context;->declSeen:Z -Lorg/xml/sax/helpers/NamespaceSupport$Context;->declsOK:Z -Lorg/xml/sax/helpers/NamespaceSupport$Context;->defaultNS:Ljava/lang/String; -Lorg/xml/sax/helpers/NamespaceSupport$Context;->elementNameTable:Ljava/util/Hashtable; -Lorg/xml/sax/helpers/NamespaceSupport$Context;->getDeclaredPrefixes()Ljava/util/Enumeration; -Lorg/xml/sax/helpers/NamespaceSupport$Context;->getPrefix(Ljava/lang/String;)Ljava/lang/String; -Lorg/xml/sax/helpers/NamespaceSupport$Context;->getPrefixes()Ljava/util/Enumeration; -Lorg/xml/sax/helpers/NamespaceSupport$Context;->getURI(Ljava/lang/String;)Ljava/lang/String; -Lorg/xml/sax/helpers/NamespaceSupport$Context;->parent:Lorg/xml/sax/helpers/NamespaceSupport$Context; -Lorg/xml/sax/helpers/NamespaceSupport$Context;->prefixTable:Ljava/util/Hashtable; -Lorg/xml/sax/helpers/NamespaceSupport$Context;->processName(Ljava/lang/String;Z)[Ljava/lang/String; -Lorg/xml/sax/helpers/NamespaceSupport$Context;->setParent(Lorg/xml/sax/helpers/NamespaceSupport$Context;)V -Lorg/xml/sax/helpers/NamespaceSupport$Context;->uriTable:Ljava/util/Hashtable; -Lorg/xml/sax/helpers/ParserAdapter$AttributeListAdapter;->qAtts:Lorg/xml/sax/AttributeList; -Lorg/xml/sax/helpers/ParserAdapter$AttributeListAdapter;->setAttributeList(Lorg/xml/sax/AttributeList;)V -Lorg/xml/sax/helpers/ParserAdapter;->FEATURES:Ljava/lang/String; -Lorg/xml/sax/helpers/ParserAdapter;->NAMESPACES:Ljava/lang/String; -Lorg/xml/sax/helpers/ParserAdapter;->NAMESPACE_PREFIXES:Ljava/lang/String; -Lorg/xml/sax/helpers/ParserAdapter;->XMLNS_URIs:Ljava/lang/String; -Lorg/xml/sax/helpers/ParserFactory;-><init>()V -Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter;-><init>()V -Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter;->attributes:Lorg/xml/sax/Attributes; -Lorg/xml/sax/helpers/XMLReaderAdapter$AttributesAdapter;->setAttributes(Lorg/xml/sax/Attributes;)V -Lorg/xml/sax/helpers/XMLReaderFactory;-><init>()V -Lorg/xml/sax/helpers/XMLReaderFactory;->property:Ljava/lang/String; -Lorg/xmlpull/v1/XmlPullParserFactory;->getParserInstance()Lorg/xmlpull/v1/XmlPullParser; -Lorg/xmlpull/v1/XmlPullParserFactory;->getSerializerInstance()Lorg/xmlpull/v1/XmlSerializer; -Lorg/xmlpull/v1/XmlPullParserFactory;->newInstantiationException(Ljava/lang/String;Ljava/util/ArrayList;)Lorg/xmlpull/v1/XmlPullParserException; -Lsun/misc/Cleaner;-><init>(Ljava/lang/Object;Ljava/lang/Runnable;)V -Lsun/misc/Cleaner;->add(Lsun/misc/Cleaner;)Lsun/misc/Cleaner; -Lsun/misc/Cleaner;->dummyQueue:Ljava/lang/ref/ReferenceQueue; -Lsun/misc/Cleaner;->first:Lsun/misc/Cleaner; -Lsun/misc/Cleaner;->next:Lsun/misc/Cleaner; -Lsun/misc/Cleaner;->prev:Lsun/misc/Cleaner; -Lsun/misc/Cleaner;->remove(Lsun/misc/Cleaner;)Z -Lsun/misc/Cleaner;->thunk:Ljava/lang/Runnable; -Lsun/misc/JarIndex;->addMapping(Ljava/lang/String;Ljava/lang/String;)V -Lsun/misc/JarIndex;->addToList(Ljava/lang/String;Ljava/lang/String;Ljava/util/HashMap;)V -Lsun/misc/JarIndex;->indexMap:Ljava/util/HashMap; -Lsun/misc/JarIndex;->jarFiles:[Ljava/lang/String; -Lsun/misc/JarIndex;->jarMap:Ljava/util/HashMap; -Lsun/misc/JarIndex;->metaInfFilenames:Z -Lsun/misc/JarIndex;->parseJars([Ljava/lang/String;)V -Lsun/misc/LRUCache;->oa:[Ljava/lang/Object; -Lsun/misc/LRUCache;->size:I -Lsun/misc/MetaIndex;-><init>(Ljava/util/List;Z)V -Lsun/misc/MetaIndex;->contents:[Ljava/lang/String; -Lsun/misc/MetaIndex;->getJarMap()Ljava/util/Map; -Lsun/misc/MetaIndex;->isClassOnlyJar:Z -Lsun/misc/MetaIndex;->jarMap:Ljava/util/Map; -Lsun/misc/Resource;->cachedInputStream()Ljava/io/InputStream; -Lsun/misc/Resource;->cis:Ljava/io/InputStream; -Lsun/misc/Unsafe;-><init>()V -Lsun/misc/Unsafe;->getArrayBaseOffsetForComponentType(Ljava/lang/Class;)I -Lsun/misc/Unsafe;->getArrayIndexScaleForComponentType(Ljava/lang/Class;)I -Lsun/misc/URLClassPath$FileLoader;-><init>(Ljava/net/URL;)V -Lsun/misc/URLClassPath$FileLoader;->dir:Ljava/io/File; -Lsun/misc/URLClassPath$FileLoader;->findResource(Ljava/lang/String;Z)Ljava/net/URL; -Lsun/misc/URLClassPath$FileLoader;->getResource(Ljava/lang/String;Z)Lsun/misc/Resource; -Lsun/misc/URLClassPath$JarLoader;-><init>(Ljava/net/URL;Ljava/net/URLStreamHandler;Ljava/util/HashMap;Ljava/security/AccessControlContext;)V -Lsun/misc/URLClassPath$JarLoader;->acc:Ljava/security/AccessControlContext; -Lsun/misc/URLClassPath$JarLoader;->checkJar(Ljava/util/jar/JarFile;)Ljava/util/jar/JarFile; -Lsun/misc/URLClassPath$JarLoader;->checkResource(Ljava/lang/String;ZLjava/util/jar/JarEntry;)Lsun/misc/Resource; -Lsun/misc/URLClassPath$JarLoader;->closed:Z -Lsun/misc/URLClassPath$JarLoader;->csu:Ljava/net/URL; -Lsun/misc/URLClassPath$JarLoader;->ensureOpen()V -Lsun/misc/URLClassPath$JarLoader;->findResource(Ljava/lang/String;Z)Ljava/net/URL; -Lsun/misc/URLClassPath$JarLoader;->getClassPath()[Ljava/net/URL; -Lsun/misc/URLClassPath$JarLoader;->getIndex()Lsun/misc/JarIndex; -Lsun/misc/URLClassPath$JarLoader;->getJarFile(Ljava/net/URL;)Ljava/util/jar/JarFile; -Lsun/misc/URLClassPath$JarLoader;->getResource(Ljava/lang/String;Z)Lsun/misc/Resource; -Lsun/misc/URLClassPath$JarLoader;->getResource(Ljava/lang/String;ZLjava/util/Set;)Lsun/misc/Resource; -Lsun/misc/URLClassPath$JarLoader;->handler:Ljava/net/URLStreamHandler; -Lsun/misc/URLClassPath$JarLoader;->index:Lsun/misc/JarIndex; -Lsun/misc/URLClassPath$JarLoader;->isOptimizable(Ljava/net/URL;)Z -Lsun/misc/URLClassPath$JarLoader;->jar:Ljava/util/jar/JarFile; -Lsun/misc/URLClassPath$JarLoader;->lmap:Ljava/util/HashMap; -Lsun/misc/URLClassPath$JarLoader;->metaIndex:Lsun/misc/MetaIndex; -Lsun/misc/URLClassPath$JarLoader;->parseClassPath(Ljava/net/URL;Ljava/lang/String;)[Ljava/net/URL; -Lsun/misc/URLClassPath$JarLoader;->parseExtensionsDependencies()V -Lsun/misc/URLClassPath$JarLoader;->validIndex(Ljava/lang/String;)Z -Lsun/misc/URLClassPath$Loader;-><init>(Ljava/net/URL;)V -Lsun/misc/URLClassPath$Loader;->base:Ljava/net/URL; -Lsun/misc/URLClassPath$Loader;->findResource(Ljava/lang/String;Z)Ljava/net/URL; -Lsun/misc/URLClassPath$Loader;->getBaseURL()Ljava/net/URL; -Lsun/misc/URLClassPath$Loader;->getClassPath()[Ljava/net/URL; -Lsun/misc/URLClassPath$Loader;->getResource(Ljava/lang/String;)Lsun/misc/Resource; -Lsun/misc/URLClassPath$Loader;->getResource(Ljava/lang/String;Z)Lsun/misc/Resource; -Lsun/misc/URLClassPath$Loader;->jarfile:Ljava/util/jar/JarFile; -Lsun/misc/URLClassPath;->acc:Ljava/security/AccessControlContext; -Lsun/misc/URLClassPath;->check(Ljava/net/URL;)V -Lsun/misc/URLClassPath;->closed:Z -Lsun/misc/URLClassPath;->DEBUG:Z -Lsun/misc/URLClassPath;->DEBUG_LOOKUP_CACHE:Z -Lsun/misc/URLClassPath;->disableAllLookupCaches()V -Lsun/misc/URLClassPath;->DISABLE_ACC_CHECKING:Z -Lsun/misc/URLClassPath;->DISABLE_JAR_CHECKING:Z -Lsun/misc/URLClassPath;->ensureLoaderOpened(I)Z -Lsun/misc/URLClassPath;->getLoader(I)Lsun/misc/URLClassPath$Loader; -Lsun/misc/URLClassPath;->getLoader(Ljava/net/URL;)Lsun/misc/URLClassPath$Loader; -Lsun/misc/URLClassPath;->getLookupCache(Ljava/lang/String;)[I -Lsun/misc/URLClassPath;->getLookupCacheForClassLoader(Ljava/lang/ClassLoader;Ljava/lang/String;)[I -Lsun/misc/URLClassPath;->getLookupCacheURLs(Ljava/lang/ClassLoader;)[Ljava/net/URL; -Lsun/misc/URLClassPath;->getNextLoader([II)Lsun/misc/URLClassPath$Loader; -Lsun/misc/URLClassPath;->initLookupCache(Ljava/lang/ClassLoader;)V -Lsun/misc/URLClassPath;->jarHandler:Ljava/net/URLStreamHandler; -Lsun/misc/URLClassPath;->JAVA_VERSION:Ljava/lang/String; -Lsun/misc/URLClassPath;->knownToNotExist(Ljava/lang/String;)Z -Lsun/misc/URLClassPath;->knownToNotExist0(Ljava/lang/ClassLoader;Ljava/lang/String;)Z -Lsun/misc/URLClassPath;->lookupCacheEnabled:Z -Lsun/misc/URLClassPath;->lookupCacheLoader:Ljava/lang/ClassLoader; -Lsun/misc/URLClassPath;->lookupCacheURLs:[Ljava/net/URL; -Lsun/misc/URLClassPath;->path:Ljava/util/ArrayList; -Lsun/misc/URLClassPath;->push([Ljava/net/URL;)V -Lsun/misc/URLClassPath;->USER_AGENT_JAVA_VERSION:Ljava/lang/String; -Lsun/misc/URLClassPath;->validateLookupCache(ILjava/lang/String;)V -Lsun/security/pkcs/ContentInfo;->content:Lsun/security/util/DerValue; -Lsun/security/pkcs/ContentInfo;->contentType:Lsun/security/util/ObjectIdentifier; -Lsun/security/pkcs/ContentInfo;->crdata:[I -Lsun/security/pkcs/ContentInfo;->data:[I -Lsun/security/pkcs/ContentInfo;->ddata:[I -Lsun/security/pkcs/ContentInfo;->edata:[I -Lsun/security/pkcs/ContentInfo;->nsdata:[I -Lsun/security/pkcs/ContentInfo;->OLD_DATA:[I -Lsun/security/pkcs/ContentInfo;->OLD_SDATA:[I -Lsun/security/pkcs/ContentInfo;->pkcs7:[I -Lsun/security/pkcs/ContentInfo;->sdata:[I -Lsun/security/pkcs/ContentInfo;->sedata:[I -Lsun/security/pkcs/ContentInfo;->tstInfo:[I -Lsun/security/pkcs/PKCS7$VerbatimX509Certificate;-><init>(Ljava/security/cert/X509Certificate;[B)V -Lsun/security/pkcs/PKCS7$VerbatimX509Certificate;->encodedVerbatim:[B -Lsun/security/pkcs/PKCS7$WrappedX509Certificate;-><init>(Ljava/security/cert/X509Certificate;)V -Lsun/security/pkcs/PKCS7$WrappedX509Certificate;->wrapped:Ljava/security/cert/X509Certificate; -Lsun/security/pkcs/PKCS7;->certificates:[Ljava/security/cert/X509Certificate; -Lsun/security/pkcs/PKCS7;->certIssuerNames:[Ljava/security/Principal; -Lsun/security/pkcs/PKCS7;->contentInfo:Lsun/security/pkcs/ContentInfo; -Lsun/security/pkcs/PKCS7;->contentType:Lsun/security/util/ObjectIdentifier; -Lsun/security/pkcs/PKCS7;->crls:[Ljava/security/cert/X509CRL; -Lsun/security/pkcs/PKCS7;->digestAlgorithmIds:[Lsun/security/x509/AlgorithmId; -Lsun/security/pkcs/PKCS7;->oldStyle:Z -Lsun/security/pkcs/PKCS7;->parse(Lsun/security/util/DerInputStream;)V -Lsun/security/pkcs/PKCS7;->parse(Lsun/security/util/DerInputStream;Z)V -Lsun/security/pkcs/PKCS7;->parseNetscapeCertChain(Lsun/security/util/DerValue;)V -Lsun/security/pkcs/PKCS7;->parseOldSignedData(Lsun/security/util/DerValue;)V -Lsun/security/pkcs/PKCS7;->parseSignedData(Lsun/security/util/DerValue;)V -Lsun/security/pkcs/PKCS7;->populateCertIssuerNames()V -Lsun/security/pkcs/PKCS7;->signerInfos:[Lsun/security/pkcs/SignerInfo; -Lsun/security/pkcs/PKCS7;->version:Ljava/math/BigInteger; -Lsun/security/pkcs/PKCS9Attribute;->BYTE_ARRAY_CLASS:Ljava/lang/Class; -Lsun/security/pkcs/PKCS9Attribute;->debug:Lsun/security/util/Debug; -Lsun/security/pkcs/PKCS9Attribute;->index:I -Lsun/security/pkcs/PKCS9Attribute;->indexOf(Ljava/lang/Object;[Ljava/lang/Object;I)I -Lsun/security/pkcs/PKCS9Attribute;->init(Lsun/security/util/ObjectIdentifier;Ljava/lang/Object;)V -Lsun/security/pkcs/PKCS9Attribute;->NAME_OID_TABLE:Ljava/util/Hashtable; -Lsun/security/pkcs/PKCS9Attribute;->oid:Lsun/security/util/ObjectIdentifier; -Lsun/security/pkcs/PKCS9Attribute;->OID_NAME_TABLE:Ljava/util/Hashtable; -Lsun/security/pkcs/PKCS9Attribute;->PKCS9_OIDS:[Lsun/security/util/ObjectIdentifier; -Lsun/security/pkcs/PKCS9Attribute;->PKCS9_VALUE_TAGS:[[Ljava/lang/Byte; -Lsun/security/pkcs/PKCS9Attribute;->RSA_PROPRIETARY_STR:Ljava/lang/String; -Lsun/security/pkcs/PKCS9Attribute;->SINGLE_VALUED:[Z -Lsun/security/pkcs/PKCS9Attribute;->SMIME_SIGNING_DESC_STR:Ljava/lang/String; -Lsun/security/pkcs/PKCS9Attribute;->throwSingleValuedException()V -Lsun/security/pkcs/PKCS9Attribute;->throwTagException(Ljava/lang/Byte;)V -Lsun/security/pkcs/PKCS9Attribute;->value:Ljava/lang/Object; -Lsun/security/pkcs/PKCS9Attribute;->VALUE_CLASSES:[Ljava/lang/Class; -Lsun/security/pkcs/PKCS9Attributes;->attributes:Ljava/util/Hashtable; -Lsun/security/pkcs/PKCS9Attributes;->castToDerEncoder([Ljava/lang/Object;)[Lsun/security/util/DerEncoder; -Lsun/security/pkcs/PKCS9Attributes;->decode(Lsun/security/util/DerInputStream;)[B -Lsun/security/pkcs/PKCS9Attributes;->derEncoding:[B -Lsun/security/pkcs/PKCS9Attributes;->generateDerEncoding()[B -Lsun/security/pkcs/PKCS9Attributes;->ignoreUnsupportedAttributes:Z -Lsun/security/pkcs/PKCS9Attributes;->permittedAttributes:Ljava/util/Hashtable; -Lsun/security/pkcs/SignerInfo;->authenticatedAttributes:Lsun/security/pkcs/PKCS9Attributes; -Lsun/security/pkcs/SignerInfo;->certificateSerialNumber:Ljava/math/BigInteger; -Lsun/security/pkcs/SignerInfo;->digestAlgorithmId:Lsun/security/x509/AlgorithmId; -Lsun/security/pkcs/SignerInfo;->digestEncryptionAlgorithmId:Lsun/security/x509/AlgorithmId; -Lsun/security/pkcs/SignerInfo;->DIGEST_PRIMITIVE_SET:Ljava/util/Set; -Lsun/security/pkcs/SignerInfo;->encryptedDigest:[B -Lsun/security/pkcs/SignerInfo;->hasTimestamp:Z -Lsun/security/pkcs/SignerInfo;->issuerName:Lsun/security/x509/X500Name; -Lsun/security/pkcs/SignerInfo;->JAR_DISABLED_CHECK:Lsun/security/util/DisabledAlgorithmConstraints; -Lsun/security/pkcs/SignerInfo;->SIG_PRIMITIVE_SET:Ljava/util/Set; -Lsun/security/pkcs/SignerInfo;->timestamp:Ljava/security/Timestamp; -Lsun/security/pkcs/SignerInfo;->unauthenticatedAttributes:Lsun/security/pkcs/PKCS9Attributes; -Lsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;)Lsun/security/pkcs/SignerInfo; -Lsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;Ljava/io/InputStream;)Lsun/security/pkcs/SignerInfo; -Lsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;[B)Lsun/security/pkcs/SignerInfo; -Lsun/security/pkcs/SignerInfo;->verifyTimestamp(Lsun/security/timestamp/TimestampToken;)V -Lsun/security/pkcs/SignerInfo;->version:Ljava/math/BigInteger; -Lsun/security/util/AbstractAlgorithmConstraints;->checkAlgorithm([Ljava/lang/String;Ljava/lang/String;Lsun/security/util/AlgorithmDecomposer;)Z -Lsun/security/util/AbstractAlgorithmConstraints;->getAlgorithms(Ljava/lang/String;)[Ljava/lang/String; -Lsun/security/util/AlgorithmDecomposer;->decomposeImpl(Ljava/lang/String;)Ljava/util/Set; -Lsun/security/util/AlgorithmDecomposer;->hasLoop(Ljava/util/Set;Ljava/lang/String;Ljava/lang/String;)V -Lsun/security/util/AlgorithmDecomposer;->pattern:Ljava/util/regex/Pattern; -Lsun/security/util/AlgorithmDecomposer;->transPattern:Ljava/util/regex/Pattern; -Lsun/security/util/BitArray;-><init>(Lsun/security/util/BitArray;)V -Lsun/security/util/BitArray;->BITS_PER_UNIT:I -Lsun/security/util/BitArray;->BYTES_PER_LINE:I -Lsun/security/util/BitArray;->length:I -Lsun/security/util/BitArray;->NYBBLE:[[B -Lsun/security/util/BitArray;->position(I)I -Lsun/security/util/BitArray;->repn:[B -Lsun/security/util/BitArray;->subscript(I)I -Lsun/security/util/CertConstraintParameters;->cert:Ljava/security/cert/X509Certificate; -Lsun/security/util/CertConstraintParameters;->trustedMatch:Z -Lsun/security/util/Debug;->args:Ljava/lang/String; -Lsun/security/util/Debug;->hexDigits:[C -Lsun/security/util/Debug;->marshal(Ljava/lang/String;)Ljava/lang/String; -Lsun/security/util/Debug;->prefix:Ljava/lang/String; -Lsun/security/util/DerInputBuffer;-><init>([B)V -Lsun/security/util/DerInputBuffer;-><init>([BII)V -Lsun/security/util/DerInputBuffer;->dup()Lsun/security/util/DerInputBuffer; -Lsun/security/util/DerInputBuffer;->equals(Lsun/security/util/DerInputBuffer;)Z -Lsun/security/util/DerInputBuffer;->getBigInteger(IZ)Ljava/math/BigInteger; -Lsun/security/util/DerInputBuffer;->getBitString()[B -Lsun/security/util/DerInputBuffer;->getBitString(I)[B -Lsun/security/util/DerInputBuffer;->getGeneralizedTime(I)Ljava/util/Date; -Lsun/security/util/DerInputBuffer;->getInteger(I)I -Lsun/security/util/DerInputBuffer;->getPos()I -Lsun/security/util/DerInputBuffer;->getSlice(II)[B -Lsun/security/util/DerInputBuffer;->getTime(IZ)Ljava/util/Date; -Lsun/security/util/DerInputBuffer;->getUnalignedBitString()Lsun/security/util/BitArray; -Lsun/security/util/DerInputBuffer;->getUTCTime(I)Ljava/util/Date; -Lsun/security/util/DerInputBuffer;->peek()I -Lsun/security/util/DerInputBuffer;->toByteArray()[B -Lsun/security/util/DerInputBuffer;->truncate(I)V -Lsun/security/util/DerInputStream;-><init>(Lsun/security/util/DerInputBuffer;)V -Lsun/security/util/DerInputStream;->buffer:Lsun/security/util/DerInputBuffer; -Lsun/security/util/DerInputStream;->getByte()I -Lsun/security/util/DerInputStream;->getLength()I -Lsun/security/util/DerInputStream;->getLength(ILjava/io/InputStream;)I -Lsun/security/util/DerInputStream;->getLength(Ljava/io/InputStream;)I -Lsun/security/util/DerInputStream;->init([BIIZ)V -Lsun/security/util/DerInputStream;->readString(BLjava/lang/String;Ljava/lang/String;)Ljava/lang/String; -Lsun/security/util/DerOutputStream;->lexOrder:Lsun/security/util/ByteArrayLexOrder; -Lsun/security/util/DerOutputStream;->putIntegerContents(I)V -Lsun/security/util/DerOutputStream;->putOrderedSet(B[Lsun/security/util/DerEncoder;Ljava/util/Comparator;)V -Lsun/security/util/DerOutputStream;->putTime(Ljava/util/Date;B)V -Lsun/security/util/DerOutputStream;->tagOrder:Lsun/security/util/ByteArrayTagOrder; -Lsun/security/util/DerOutputStream;->writeString(Ljava/lang/String;BLjava/lang/String;)V -Lsun/security/util/DerValue;-><init>(Lsun/security/util/DerInputBuffer;Z)V -Lsun/security/util/DerValue;->append([B[B)[B -Lsun/security/util/DerValue;->doEquals(Lsun/security/util/DerValue;Lsun/security/util/DerValue;)Z -Lsun/security/util/DerValue;->init(BLjava/lang/String;)Lsun/security/util/DerInputStream; -Lsun/security/util/DerValue;->init(ZLjava/io/InputStream;)Lsun/security/util/DerInputStream; -Lsun/security/util/DerValue;->isPrivate()Z -Lsun/security/util/DerValue;->length:I -Lsun/security/util/DerValue;->originalEncodedForm:[B -Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->EQ:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator; -Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->GE:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator; -Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->GT:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator; -Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->LE:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator; -Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->LT:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator; -Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->NE:Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator; -Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->of(Ljava/lang/String;)Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator; -Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->valueOf(Ljava/lang/String;)Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator; -Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->values()[Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator; -Lsun/security/util/DisabledAlgorithmConstraints$Constraint;-><init>()V -Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->algorithm:Ljava/lang/String; -Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->nextConstraint:Lsun/security/util/DisabledAlgorithmConstraints$Constraint; -Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->permits(Ljava/security/Key;)Z -Lsun/security/util/DisabledAlgorithmConstraints$Constraint;->permits(Lsun/security/util/CertConstraintParameters;)V -Lsun/security/util/DisabledAlgorithmConstraints$Constraints;-><init>([Ljava/lang/String;)V -Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->constraintsMap:Ljava/util/Map; -Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->getConstraints(Ljava/lang/String;)Ljava/util/Set; -Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->keySizePattern:Ljava/util/regex/Pattern; -Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Ljava/security/Key;)Z -Lsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Lsun/security/util/CertConstraintParameters;)V -Lsun/security/util/DisabledAlgorithmConstraints$jdkCAConstraint;-><init>(Ljava/lang/String;)V -Lsun/security/util/DisabledAlgorithmConstraints$jdkCAConstraint;->permits(Lsun/security/util/CertConstraintParameters;)V -Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;-><init>(Ljava/lang/String;Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;I)V -Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->maxSize:I -Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->minSize:I -Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Ljava/security/Key;)Z -Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Lsun/security/util/CertConstraintParameters;)V -Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permitsImpl(Ljava/security/Key;)Z -Lsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->prohibitedSize:I -Lsun/security/util/DisabledAlgorithmConstraints;->algorithmConstraints:Lsun/security/util/DisabledAlgorithmConstraints$Constraints; -Lsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Ljava/lang/String;Ljava/security/Key;Ljava/security/AlgorithmParameters;)Z -Lsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Lsun/security/util/CertConstraintParameters;)V -Lsun/security/util/DisabledAlgorithmConstraints;->debug:Lsun/security/util/Debug; -Lsun/security/util/DisabledAlgorithmConstraints;->disabledAlgorithms:[Ljava/lang/String; -Lsun/security/util/ManifestDigester$Entry;->doOldStyle(Ljava/security/MessageDigest;[BII)V -Lsun/security/util/ManifestDigester$Entry;->length:I -Lsun/security/util/ManifestDigester$Entry;->lengthWithBlankLine:I -Lsun/security/util/ManifestDigester$Entry;->offset:I -Lsun/security/util/ManifestDigester$Entry;->oldStyle:Z -Lsun/security/util/ManifestDigester$Entry;->rawBytes:[B -Lsun/security/util/ManifestDigester$Position;-><init>()V -Lsun/security/util/ManifestDigester$Position;->endOfFirstLine:I -Lsun/security/util/ManifestDigester$Position;->endOfSection:I -Lsun/security/util/ManifestDigester$Position;->startOfNext:I -Lsun/security/util/ManifestDigester;->entries:Ljava/util/HashMap; -Lsun/security/util/ManifestDigester;->findSection(ILsun/security/util/ManifestDigester$Position;)Z -Lsun/security/util/ManifestDigester;->isNameAttr([BI)Z -Lsun/security/util/ManifestDigester;->rawBytes:[B -Lsun/security/util/ManifestEntryVerifier$SunProviderHolder;-><init>()V -Lsun/security/util/ManifestEntryVerifier$SunProviderHolder;->instance:Ljava/security/Provider; -Lsun/security/util/ManifestEntryVerifier;->createdDigests:Ljava/util/HashMap; -Lsun/security/util/ManifestEntryVerifier;->debug:Lsun/security/util/Debug; -Lsun/security/util/ManifestEntryVerifier;->digests:Ljava/util/ArrayList; -Lsun/security/util/ManifestEntryVerifier;->entry:Ljava/util/jar/JarEntry; -Lsun/security/util/ManifestEntryVerifier;->hexc:[C -Lsun/security/util/ManifestEntryVerifier;->man:Ljava/util/jar/Manifest; -Lsun/security/util/ManifestEntryVerifier;->manifestHashes:Ljava/util/ArrayList; -Lsun/security/util/ManifestEntryVerifier;->name:Ljava/lang/String; -Lsun/security/util/ManifestEntryVerifier;->signers:[Ljava/security/CodeSigner; -Lsun/security/util/ManifestEntryVerifier;->skip:Z -Lsun/security/util/ManifestEntryVerifier;->toHex([B)Ljava/lang/String; -Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK;-><init>()V -Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK;->theOne:Lsun/security/util/ObjectIdentifier$HugeOidNotSupportedByOldJDK; -Lsun/security/util/ObjectIdentifier;-><init>(Lsun/security/util/DerInputBuffer;)V -Lsun/security/util/ObjectIdentifier;->check([B)V -Lsun/security/util/ObjectIdentifier;->checkCount(I)V -Lsun/security/util/ObjectIdentifier;->checkFirstComponent(I)V -Lsun/security/util/ObjectIdentifier;->checkFirstComponent(Ljava/math/BigInteger;)V -Lsun/security/util/ObjectIdentifier;->checkOtherComponent(II)V -Lsun/security/util/ObjectIdentifier;->checkOtherComponent(ILjava/math/BigInteger;)V -Lsun/security/util/ObjectIdentifier;->checkSecondComponent(II)V -Lsun/security/util/ObjectIdentifier;->checkSecondComponent(ILjava/math/BigInteger;)V -Lsun/security/util/ObjectIdentifier;->componentLen:I -Lsun/security/util/ObjectIdentifier;->components:Ljava/lang/Object; -Lsun/security/util/ObjectIdentifier;->componentsCalculated:Z -Lsun/security/util/ObjectIdentifier;->encode(Lsun/security/util/DerOutputStream;)V -Lsun/security/util/ObjectIdentifier;->encoding:[B -Lsun/security/util/ObjectIdentifier;->init([II)V -Lsun/security/util/ObjectIdentifier;->pack([BIIII)[B -Lsun/security/util/ObjectIdentifier;->pack7Oid(I[BI)I -Lsun/security/util/ObjectIdentifier;->pack7Oid(Ljava/math/BigInteger;[BI)I -Lsun/security/util/ObjectIdentifier;->pack7Oid([BII[BI)I -Lsun/security/util/ObjectIdentifier;->pack8([BII[BI)I -Lsun/security/util/ObjectIdentifier;->stringForm:Ljava/lang/String; -Lsun/security/util/SignatureFileVerifier;->ATTR_DIGEST:Ljava/lang/String; -Lsun/security/util/SignatureFileVerifier;->block:Lsun/security/pkcs/PKCS7; -Lsun/security/util/SignatureFileVerifier;->certificateFactory:Ljava/security/cert/CertificateFactory; -Lsun/security/util/SignatureFileVerifier;->contains([Ljava/security/CodeSigner;Ljava/security/CodeSigner;)Z -Lsun/security/util/SignatureFileVerifier;->createdDigests:Ljava/util/HashMap; -Lsun/security/util/SignatureFileVerifier;->debug:Lsun/security/util/Debug; -Lsun/security/util/SignatureFileVerifier;->DIGEST_PRIMITIVE_SET:Ljava/util/Set; -Lsun/security/util/SignatureFileVerifier;->getDigest(Ljava/lang/String;)Ljava/security/MessageDigest; -Lsun/security/util/SignatureFileVerifier;->getSigners([Lsun/security/pkcs/SignerInfo;Lsun/security/pkcs/PKCS7;)[Ljava/security/CodeSigner; -Lsun/security/util/SignatureFileVerifier;->hexc:[C -Lsun/security/util/SignatureFileVerifier;->isSubSet([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z -Lsun/security/util/SignatureFileVerifier;->JAR_DISABLED_CHECK:Lsun/security/util/DisabledAlgorithmConstraints; -Lsun/security/util/SignatureFileVerifier;->matches([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z -Lsun/security/util/SignatureFileVerifier;->md:Lsun/security/util/ManifestDigester; -Lsun/security/util/SignatureFileVerifier;->name:Ljava/lang/String; -Lsun/security/util/SignatureFileVerifier;->processImpl(Ljava/util/Hashtable;Ljava/util/List;)V -Lsun/security/util/SignatureFileVerifier;->sfBytes:[B -Lsun/security/util/SignatureFileVerifier;->signerCache:Ljava/util/ArrayList; -Lsun/security/util/SignatureFileVerifier;->toHex([B)Ljava/lang/String; -Lsun/security/util/SignatureFileVerifier;->updateSigners([Ljava/security/CodeSigner;Ljava/util/Hashtable;Ljava/lang/String;)V -Lsun/security/util/SignatureFileVerifier;->verifyManifestHash(Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;Ljava/util/List;)Z -Lsun/security/util/SignatureFileVerifier;->verifyManifestMainAttrs(Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;)Z -Lsun/security/util/SignatureFileVerifier;->verifySection(Ljava/util/jar/Attributes;Ljava/lang/String;Lsun/security/util/ManifestDigester;)Z -Lsun/security/util/SignatureFileVerifier;->workaround:Z -Lsun/security/x509/AlgorithmId;-><init>(Lsun/security/util/ObjectIdentifier;Lsun/security/util/DerValue;)V -Lsun/security/x509/AlgorithmId;->algid:Lsun/security/util/ObjectIdentifier; -Lsun/security/x509/AlgorithmId;->algOID(Ljava/lang/String;)Lsun/security/util/ObjectIdentifier; -Lsun/security/x509/AlgorithmId;->algParams:Ljava/security/AlgorithmParameters; -Lsun/security/x509/AlgorithmId;->constructedFromDer:Z -Lsun/security/x509/AlgorithmId;->DH_data:[I -Lsun/security/x509/AlgorithmId;->DH_PKIX_data:[I -Lsun/security/x509/AlgorithmId;->dsaWithSHA1_PKIX_data:[I -Lsun/security/x509/AlgorithmId;->DSA_OIW_data:[I -Lsun/security/x509/AlgorithmId;->DSA_PKIX_data:[I -Lsun/security/x509/AlgorithmId;->initOidTableVersion:I -Lsun/security/x509/AlgorithmId;->md2WithRSAEncryption_data:[I -Lsun/security/x509/AlgorithmId;->md5WithRSAEncryption_data:[I -Lsun/security/x509/AlgorithmId;->nameTable:Ljava/util/Map; -Lsun/security/x509/AlgorithmId;->oidTable:Ljava/util/Map; -Lsun/security/x509/AlgorithmId;->reinitializeMappingTableLocked()V -Lsun/security/x509/AlgorithmId;->RSAEncryption_data:[I -Lsun/security/x509/AlgorithmId;->RSA_data:[I -Lsun/security/x509/AlgorithmId;->sha1WithDSA_OIW_data:[I -Lsun/security/x509/AlgorithmId;->sha1WithRSAEncryption_data:[I -Lsun/security/x509/AlgorithmId;->sha1WithRSAEncryption_OIW_data:[I -Lsun/security/x509/AlgorithmId;->sha224WithRSAEncryption_data:[I -Lsun/security/x509/AlgorithmId;->sha256WithRSAEncryption_data:[I -Lsun/security/x509/AlgorithmId;->sha384WithRSAEncryption_data:[I -Lsun/security/x509/AlgorithmId;->sha512WithRSAEncryption_data:[I -Lsun/security/x509/AlgorithmId;->shaWithDSA_OIW_data:[I -Lsun/security/x509/AVA;-><init>(Ljava/io/Reader;)V -Lsun/security/x509/AVA;-><init>(Ljava/io/Reader;I)V -Lsun/security/x509/AVA;-><init>(Ljava/io/Reader;ILjava/util/Map;)V -Lsun/security/x509/AVA;-><init>(Ljava/io/Reader;Ljava/util/Map;)V -Lsun/security/x509/AVA;-><init>(Lsun/security/util/DerInputStream;)V -Lsun/security/x509/AVA;-><init>(Lsun/security/util/DerValue;)V -Lsun/security/x509/AVA;->debug:Lsun/security/util/Debug; -Lsun/security/x509/AVA;->DEFAULT:I -Lsun/security/x509/AVA;->escapedDefault:Ljava/lang/String; -Lsun/security/x509/AVA;->getEmbeddedHexPair(ILjava/io/Reader;)Ljava/lang/Byte; -Lsun/security/x509/AVA;->getEmbeddedHexString(Ljava/util/List;)Ljava/lang/String; -Lsun/security/x509/AVA;->hexDigits:Ljava/lang/String; -Lsun/security/x509/AVA;->isDerString(Lsun/security/util/DerValue;Z)Z -Lsun/security/x509/AVA;->isTerminator(II)Z -Lsun/security/x509/AVA;->oid:Lsun/security/util/ObjectIdentifier; -Lsun/security/x509/AVA;->parseHexString(Ljava/io/Reader;I)Lsun/security/util/DerValue; -Lsun/security/x509/AVA;->parseQuotedString(Ljava/io/Reader;Ljava/lang/StringBuilder;)Lsun/security/util/DerValue; -Lsun/security/x509/AVA;->parseString(Ljava/io/Reader;IILjava/lang/StringBuilder;)Lsun/security/util/DerValue; -Lsun/security/x509/AVA;->PRESERVE_OLD_DC_ENCODING:Z -Lsun/security/x509/AVA;->readChar(Ljava/io/Reader;Ljava/lang/String;)I -Lsun/security/x509/AVA;->RFC1779:I -Lsun/security/x509/AVA;->RFC2253:I -Lsun/security/x509/AVA;->specialChars1779:Ljava/lang/String; -Lsun/security/x509/AVA;->specialChars2253:Ljava/lang/String; -Lsun/security/x509/AVA;->specialCharsDefault:Ljava/lang/String; -Lsun/security/x509/AVA;->toKeyword(ILjava/util/Map;)Ljava/lang/String; -Lsun/security/x509/AVA;->toKeywordValueString(Ljava/lang/String;)Ljava/lang/String; -Lsun/security/x509/AVA;->trailingSpace(Ljava/io/Reader;)Z -Lsun/security/x509/AVA;->value:Lsun/security/util/DerValue; -Lsun/security/x509/CertificatePolicyId;->id:Lsun/security/util/ObjectIdentifier; -Lsun/security/x509/CertificatePolicySet;->ids:Ljava/util/Vector; -Lsun/security/x509/Extension;->hashMagic:I -Lsun/security/x509/GeneralName;->name:Lsun/security/x509/GeneralNameInterface; -Lsun/security/x509/GeneralSubtree;->maximum:I -Lsun/security/x509/GeneralSubtree;->minimum:I -Lsun/security/x509/GeneralSubtree;->MIN_DEFAULT:I -Lsun/security/x509/GeneralSubtree;->myhash:I -Lsun/security/x509/GeneralSubtree;->name:Lsun/security/x509/GeneralName; -Lsun/security/x509/GeneralSubtree;->TAG_MAX:B -Lsun/security/x509/GeneralSubtree;->TAG_MIN:B -Lsun/security/x509/GeneralSubtrees;-><init>(Lsun/security/x509/GeneralSubtrees;)V -Lsun/security/x509/GeneralSubtrees;->createWidestSubtree(Lsun/security/x509/GeneralNameInterface;)Lsun/security/x509/GeneralSubtree; -Lsun/security/x509/GeneralSubtrees;->getGeneralNameInterface(I)Lsun/security/x509/GeneralNameInterface; -Lsun/security/x509/GeneralSubtrees;->getGeneralNameInterface(Lsun/security/x509/GeneralSubtree;)Lsun/security/x509/GeneralNameInterface; -Lsun/security/x509/GeneralSubtrees;->minimize()V -Lsun/security/x509/GeneralSubtrees;->NAME_DIFF_TYPE:I -Lsun/security/x509/GeneralSubtrees;->NAME_MATCH:I -Lsun/security/x509/GeneralSubtrees;->NAME_NARROWS:I -Lsun/security/x509/GeneralSubtrees;->NAME_SAME_TYPE:I -Lsun/security/x509/GeneralSubtrees;->NAME_WIDENS:I -Lsun/security/x509/GeneralSubtrees;->trees:Ljava/util/List; -Lsun/security/x509/NameConstraintsExtension;->calcMinMax()V -Lsun/security/x509/NameConstraintsExtension;->encodeThis()V -Lsun/security/x509/NameConstraintsExtension;->excluded:Lsun/security/x509/GeneralSubtrees; -Lsun/security/x509/NameConstraintsExtension;->hasMax:Z -Lsun/security/x509/NameConstraintsExtension;->hasMin:Z -Lsun/security/x509/NameConstraintsExtension;->minMaxValid:Z -Lsun/security/x509/NameConstraintsExtension;->permitted:Lsun/security/x509/GeneralSubtrees; -Lsun/security/x509/NameConstraintsExtension;->TAG_EXCLUDED:B -Lsun/security/x509/NameConstraintsExtension;->TAG_PERMITTED:B -Lsun/security/x509/RDN;-><init>(I)V -Lsun/security/x509/RDN;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Lsun/security/x509/RDN;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;)V -Lsun/security/x509/RDN;-><init>(Lsun/security/util/DerValue;)V -Lsun/security/x509/RDN;->assertion:[Lsun/security/x509/AVA; -Lsun/security/x509/RDN;->avaList:Ljava/util/List; -Lsun/security/x509/RDN;->canonicalString:Ljava/lang/String; -Lsun/security/x509/RDN;->encode(Lsun/security/util/DerOutputStream;)V -Lsun/security/x509/RDN;->findAttribute(Lsun/security/util/ObjectIdentifier;)Lsun/security/util/DerValue; -Lsun/security/x509/RDN;->toRFC2253StringInternal(ZLjava/util/Map;)Ljava/lang/String; -Lsun/security/x509/X500Name;->allAvaList:Ljava/util/List; -Lsun/security/x509/X500Name;->canonicalDn:Ljava/lang/String; -Lsun/security/x509/X500Name;->checkNoNewLinesNorTabsAtBeginningOfDN(Ljava/lang/String;)V -Lsun/security/x509/X500Name;->commonName_data:[I -Lsun/security/x509/X500Name;->countQuotes(Ljava/lang/String;II)I -Lsun/security/x509/X500Name;->countryName_data:[I -Lsun/security/x509/X500Name;->dn:Ljava/lang/String; -Lsun/security/x509/X500Name;->DNQUALIFIER_DATA:[I -Lsun/security/x509/X500Name;->DOMAIN_COMPONENT_DATA:[I -Lsun/security/x509/X500Name;->encoded:[B -Lsun/security/x509/X500Name;->escaped(IILjava/lang/String;)Z -Lsun/security/x509/X500Name;->findAttribute(Lsun/security/util/ObjectIdentifier;)Lsun/security/util/DerValue; -Lsun/security/x509/X500Name;->generateDN()V -Lsun/security/x509/X500Name;->generateRFC1779DN(Ljava/util/Map;)Ljava/lang/String; -Lsun/security/x509/X500Name;->generateRFC2253DN(Ljava/util/Map;)Ljava/lang/String; -Lsun/security/x509/X500Name;->GENERATIONQUALIFIER_DATA:[I -Lsun/security/x509/X500Name;->getString(Lsun/security/util/DerValue;)Ljava/lang/String; -Lsun/security/x509/X500Name;->GIVENNAME_DATA:[I -Lsun/security/x509/X500Name;->INITIALS_DATA:[I -Lsun/security/x509/X500Name;->intern(Lsun/security/util/ObjectIdentifier;)Lsun/security/util/ObjectIdentifier; -Lsun/security/x509/X500Name;->internedOIDs:Ljava/util/Map; -Lsun/security/x509/X500Name;->ipAddress_data:[I -Lsun/security/x509/X500Name;->isWithinSubtree(Lsun/security/x509/X500Name;)Z -Lsun/security/x509/X500Name;->localityName_data:[I -Lsun/security/x509/X500Name;->names:[Lsun/security/x509/RDN; -Lsun/security/x509/X500Name;->orgName_data:[I -Lsun/security/x509/X500Name;->orgUnitName_data:[I -Lsun/security/x509/X500Name;->parseDER(Lsun/security/util/DerInputStream;)V -Lsun/security/x509/X500Name;->parseDN(Ljava/lang/String;Ljava/util/Map;)V -Lsun/security/x509/X500Name;->parseRFC2253DN(Ljava/lang/String;)V -Lsun/security/x509/X500Name;->principalConstructor:Ljava/lang/reflect/Constructor; -Lsun/security/x509/X500Name;->principalField:Ljava/lang/reflect/Field; -Lsun/security/x509/X500Name;->rdnList:Ljava/util/List; -Lsun/security/x509/X500Name;->rfc1779Dn:Ljava/lang/String; -Lsun/security/x509/X500Name;->rfc2253Dn:Ljava/lang/String; -Lsun/security/x509/X500Name;->SERIALNUMBER_DATA:[I -Lsun/security/x509/X500Name;->stateName_data:[I -Lsun/security/x509/X500Name;->streetAddress_data:[I -Lsun/security/x509/X500Name;->SURNAME_DATA:[I -Lsun/security/x509/X500Name;->title_data:[I -Lsun/security/x509/X500Name;->userid_data:[I -Lsun/security/x509/X500Name;->x500Principal:Ljavax/security/auth/x500/X500Principal; -Lsun/util/locale/BaseLocale$Cache;-><init>()V -Lsun/util/locale/BaseLocale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object; -Lsun/util/locale/BaseLocale$Cache;->createObject(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale; -Lsun/util/locale/BaseLocale$Cache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object; -Lsun/util/locale/BaseLocale$Cache;->normalizeKey(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key; -Lsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Lsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -Lsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V -Lsun/util/locale/BaseLocale$Key;->hash:I -Lsun/util/locale/BaseLocale$Key;->lang:Ljava/lang/ref/SoftReference; -Lsun/util/locale/BaseLocale$Key;->normalize(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key; -Lsun/util/locale/BaseLocale$Key;->normalized:Z -Lsun/util/locale/BaseLocale$Key;->regn:Ljava/lang/ref/SoftReference; -Lsun/util/locale/BaseLocale$Key;->scrt:Ljava/lang/ref/SoftReference; -Lsun/util/locale/BaseLocale$Key;->vart:Ljava/lang/ref/SoftReference; -Lsun/util/locale/BaseLocale;-><init>(Ljava/lang/String;Ljava/lang/String;)V -Lsun/util/locale/BaseLocale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V -Lsun/util/locale/BaseLocale;->CACHE:Lsun/util/locale/BaseLocale$Cache; -Lsun/util/locale/BaseLocale;->hash:I -Lsun/util/locale/BaseLocale;->language:Ljava/lang/String; -Lsun/util/locale/BaseLocale;->region:Ljava/lang/String; -Lsun/util/locale/BaseLocale;->script:Ljava/lang/String; -Lsun/util/locale/BaseLocale;->variant:Ljava/lang/String; -Lsun/util/locale/Extension;-><init>(C)V -Lsun/util/locale/Extension;-><init>(CLjava/lang/String;)V -Lsun/util/locale/Extension;->getID()Ljava/lang/String; -Lsun/util/locale/Extension;->getKey()C -Lsun/util/locale/Extension;->getValue()Ljava/lang/String; -Lsun/util/locale/Extension;->id:Ljava/lang/String; -Lsun/util/locale/Extension;->key:C -Lsun/util/locale/Extension;->setValue(Ljava/lang/String;)V -Lsun/util/locale/Extension;->value:Ljava/lang/String; -Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(C)V -Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(Ljava/lang/String;)V -Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->ch:C -Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->lowerCh:C -Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;->value()C -Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;-><init>(Ljava/lang/String;)V -Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;->lowerStr:Ljava/lang/String; -Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;->str:Ljava/lang/String; -Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveString;->value()Ljava/lang/String; -Lsun/util/locale/InternalLocaleBuilder;->checkVariants(Ljava/lang/String;Ljava/lang/String;)I -Lsun/util/locale/InternalLocaleBuilder;->extensions:Ljava/util/Map; -Lsun/util/locale/InternalLocaleBuilder;->language:Ljava/lang/String; -Lsun/util/locale/InternalLocaleBuilder;->PRIVATEUSE_KEY:Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar; -Lsun/util/locale/InternalLocaleBuilder;->region:Ljava/lang/String; -Lsun/util/locale/InternalLocaleBuilder;->removePrivateuseVariant(Ljava/lang/String;)Ljava/lang/String; -Lsun/util/locale/InternalLocaleBuilder;->script:Ljava/lang/String; -Lsun/util/locale/InternalLocaleBuilder;->setExtensions(Ljava/util/List;Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder; -Lsun/util/locale/InternalLocaleBuilder;->setUnicodeLocaleExtension(Ljava/lang/String;)V -Lsun/util/locale/InternalLocaleBuilder;->uattributes:Ljava/util/Set; -Lsun/util/locale/InternalLocaleBuilder;->ukeywords:Ljava/util/Map; -Lsun/util/locale/InternalLocaleBuilder;->variant:Ljava/lang/String; -Lsun/util/locale/LanguageTag;-><init>()V -Lsun/util/locale/LanguageTag;->extensions:Ljava/util/List; -Lsun/util/locale/LanguageTag;->extlangs:Ljava/util/List; -Lsun/util/locale/LanguageTag;->GRANDFATHERED:Ljava/util/Map; -Lsun/util/locale/LanguageTag;->language:Ljava/lang/String; -Lsun/util/locale/LanguageTag;->parseExtensions(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z -Lsun/util/locale/LanguageTag;->parseExtlangs(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z -Lsun/util/locale/LanguageTag;->parseLanguage(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z -Lsun/util/locale/LanguageTag;->parsePrivateuse(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z -Lsun/util/locale/LanguageTag;->parseRegion(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z -Lsun/util/locale/LanguageTag;->parseScript(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z -Lsun/util/locale/LanguageTag;->parseVariants(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z -Lsun/util/locale/LanguageTag;->privateuse:Ljava/lang/String; -Lsun/util/locale/LanguageTag;->region:Ljava/lang/String; -Lsun/util/locale/LanguageTag;->script:Ljava/lang/String; -Lsun/util/locale/LanguageTag;->variants:Ljava/util/List; -Lsun/util/locale/LocaleExtensions;-><init>(Ljava/lang/String;Ljava/lang/Character;Lsun/util/locale/Extension;)V -Lsun/util/locale/LocaleExtensions;-><init>(Ljava/util/Map;Ljava/util/Set;Ljava/util/Map;)V -Lsun/util/locale/LocaleExtensions;->extensionMap:Ljava/util/Map; -Lsun/util/locale/LocaleExtensions;->id:Ljava/lang/String; -Lsun/util/locale/LocaleExtensions;->toID(Ljava/util/SortedMap;)Ljava/lang/String; -Lsun/util/locale/LocaleObjectCache$CacheEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V -Lsun/util/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object; -Lsun/util/locale/LocaleObjectCache$CacheEntry;->key:Ljava/lang/Object; -Lsun/util/locale/LocaleObjectCache;->cleanStaleEntries()V -Lsun/util/locale/LocaleObjectCache;->map:Ljava/util/concurrent/ConcurrentMap; -Lsun/util/locale/LocaleObjectCache;->queue:Ljava/lang/ref/ReferenceQueue; -Lsun/util/locale/LocaleSyntaxException;->index:I -Lsun/util/locale/ParseStatus;->errorIndex:I -Lsun/util/locale/ParseStatus;->errorMsg:Ljava/lang/String; -Lsun/util/locale/ParseStatus;->parseLength:I -Lsun/util/locale/StringTokenIterator;->delimiterChar:C -Lsun/util/locale/StringTokenIterator;->dlms:Ljava/lang/String; -Lsun/util/locale/StringTokenIterator;->done:Z -Lsun/util/locale/StringTokenIterator;->end:I -Lsun/util/locale/StringTokenIterator;->nextDelimiter(I)I -Lsun/util/locale/StringTokenIterator;->start:I -Lsun/util/locale/StringTokenIterator;->text:Ljava/lang/String; -Lsun/util/locale/StringTokenIterator;->token:Ljava/lang/String; diff --git a/boot/hiddenapi/hiddenapi-unsupported-packages.txt b/boot/hiddenapi/hiddenapi-unsupported-packages.txt index 986d2591a007..145f0c2213eb 100644 --- a/boot/hiddenapi/hiddenapi-unsupported-packages.txt +++ b/boot/hiddenapi/hiddenapi-unsupported-packages.txt @@ -11,33 +11,5 @@ gov.nist.javax.sip.parser gov.nist.javax.sip.parser.extensions gov.nist.javax.sip.parser.ims gov.nist.javax.sip.stack -org.apache.xalan -org.apache.xalan.extensions -org.apache.xalan.processor -org.apache.xalan.res -org.apache.xalan.serialize -org.apache.xalan.templates -org.apache.xalan.transformer -org.apache.xalan.xslt -org.apache.xml.dtm -org.apache.xml.dtm.ref -org.apache.xml.dtm.ref.dom2dtm -org.apache.xml.dtm.ref.sax2dtm -org.apache.xml.res -org.apache.xml.serializer -org.apache.xml.serializer.dom3 -org.apache.xml.serializer.utils -org.apache.xml.utils -org.apache.xml.utils.res -org.apache.xpath -org.apache.xpath.axes -org.apache.xpath.compiler -org.apache.xpath.domapi -org.apache.xpath.functions -org.apache.xpath.jaxp -org.apache.xpath.objects -org.apache.xpath.operations -org.apache.xpath.patterns -org.apache.xpath.res org.ccil.cowan.tagsoup org.ccil.cowan.tagsoup.jaxp diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp index be82b2230183..3109c5c1e075 100644 --- a/cmds/bootanimation/BootAnimation.cpp +++ b/cmds/bootanimation/BootAnimation.cpp @@ -1210,9 +1210,12 @@ bool BootAnimation::movie() { return false; } -bool BootAnimation::shouldStopPlayingPart(const Animation::Part& part, const int fadedFramesCount) { +bool BootAnimation::shouldStopPlayingPart(const Animation::Part& part, + const int fadedFramesCount, + const int lastDisplayedProgress) { // stop playing only if it is time to exit and it's a partial part which has been faded out - return exitPending() && !part.playUntilComplete && fadedFramesCount >= part.framesToFadeCount; + return exitPending() && !part.playUntilComplete && fadedFramesCount >= part.framesToFadeCount && + (lastDisplayedProgress == 0 || lastDisplayedProgress == 100); } bool BootAnimation::playAnimation(const Animation& animation) { @@ -1239,7 +1242,7 @@ bool BootAnimation::playAnimation(const Animation& animation) { // process the part not only while the count allows but also if already fading for (int r=0 ; !part.count || r<part.count || fadedFramesCount > 0 ; r++) { - if (shouldStopPlayingPart(part, fadedFramesCount)) break; + if (shouldStopPlayingPart(part, fadedFramesCount, lastDisplayedProgress)) break; mCallbacks->playPart(i, part, r); @@ -1256,7 +1259,7 @@ bool BootAnimation::playAnimation(const Animation& animation) { (i == (pcount -1)) && currentProgress != 0; for (size_t j=0 ; j<fcount ; j++) { - if (shouldStopPlayingPart(part, fadedFramesCount)) break; + if (shouldStopPlayingPart(part, fadedFramesCount, lastDisplayedProgress)) break; processDisplayEvents(); @@ -1355,6 +1358,10 @@ bool BootAnimation::playAnimation(const Animation& animation) { if (exitPending() && !part.count && mCurrentInset >= mTargetInset && !part.hasFadingPhase()) { + if (lastDisplayedProgress != 0 && lastDisplayedProgress != 100) { + android::base::SetProperty(PROGRESS_PROP_NAME, "100"); + continue; + } break; // exit the infinite non-fading part when it has been played at least once } } diff --git a/cmds/bootanimation/BootAnimation.h b/cmds/bootanimation/BootAnimation.h index 07432a2168b1..f8a31c6d8790 100644 --- a/cmds/bootanimation/BootAnimation.h +++ b/cmds/bootanimation/BootAnimation.h @@ -187,7 +187,8 @@ private: void resizeSurface(int newWidth, int newHeight); void projectSceneToWindow(); - bool shouldStopPlayingPart(const Animation::Part& part, int fadedFramesCount); + bool shouldStopPlayingPart(const Animation::Part& part, int fadedFramesCount, + int lastDisplayedProgress); void checkExit(); void handleViewport(nsecs_t timestep); diff --git a/cmds/uiautomator/library/Android.bp b/cmds/uiautomator/library/Android.bp index 469b45201337..cffc07859998 100644 --- a/cmds/uiautomator/library/Android.bp +++ b/cmds/uiautomator/library/Android.bp @@ -59,8 +59,8 @@ droiddoc { "android.test.runner", "junit", "android.test.base", - "unsupportedappusage", ], + sdk_version: "current", installable: false, custom_template: "droiddoc-templates-sdk", } diff --git a/core/api/current.txt b/core/api/current.txt index 41acab61e081..d603fa09f20d 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -592,6 +592,7 @@ package android { field public static final int editTextStyle = 16842862; // 0x101006e field @Deprecated public static final int editable = 16843115; // 0x101016b field public static final int editorExtras = 16843300; // 0x1010224 + field public static final int effectColor; field public static final int elegantTextHeight = 16843869; // 0x101045d field public static final int elevation = 16843840; // 0x1010440 field public static final int ellipsize = 16842923; // 0x10100ab @@ -4022,6 +4023,7 @@ package android.app { method public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration); method @Deprecated public void onPictureInPictureModeChanged(boolean); method public boolean onPictureInPictureRequested(); + method public void onPictureInPictureUiStateChanged(@NonNull android.app.PictureInPictureUiState); method @CallSuper protected void onPostCreate(@Nullable android.os.Bundle); method public void onPostCreate(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle); method @CallSuper protected void onPostResume(); @@ -6414,6 +6416,13 @@ package android.app { method public android.app.PictureInPictureParams.Builder setSourceRectHint(android.graphics.Rect); } + public final class PictureInPictureUiState implements android.os.Parcelable { + method public int describeContents(); + method public boolean isStashed(); + method public void writeToParcel(@NonNull android.os.Parcel, int); + field @NonNull public static final android.os.Parcelable.Creator<android.app.PictureInPictureUiState> CREATOR; + } + public class Presentation extends android.app.Dialog { ctor public Presentation(android.content.Context, android.view.Display); ctor public Presentation(android.content.Context, android.view.Display, int); @@ -11262,7 +11271,6 @@ package android.content { field public static final String EXTRA_TIMEZONE = "time-zone"; field public static final String EXTRA_TITLE = "android.intent.extra.TITLE"; field public static final String EXTRA_UID = "android.intent.extra.UID"; - field public static final String EXTRA_UNSTARTABLE_REASON = "android.intent.extra.UNSTARTABLE_REASON"; field public static final String EXTRA_USER = "android.intent.extra.USER"; field public static final String EXTRA_USER_INITIATED = "android.intent.extra.USER_INITIATED"; field public static final int FILL_IN_ACTION = 1; // 0x1 @@ -16791,8 +16799,10 @@ package android.graphics.drawable { public class RippleDrawable extends android.graphics.drawable.LayerDrawable { ctor public RippleDrawable(@NonNull android.content.res.ColorStateList, @Nullable android.graphics.drawable.Drawable, @Nullable android.graphics.drawable.Drawable); + method @NonNull public android.content.res.ColorStateList getEffectColor(); method public int getRadius(); - method public void setColor(android.content.res.ColorStateList); + method public void setColor(@NonNull android.content.res.ColorStateList); + method public void setEffectColor(@NonNull android.content.res.ColorStateList); method public void setRadius(int); field public static final int RADIUS_AUTO = -1; // 0xffffffff } @@ -23297,6 +23307,7 @@ package android.media { } public final class MediaRouter2 { + method @Nullable public android.media.MediaRouter2.RoutingController getController(@NonNull String); method @NonNull public java.util.List<android.media.MediaRouter2.RoutingController> getControllers(); method @NonNull public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context); method @NonNull public java.util.List<android.media.MediaRoute2Info> getRoutes(); @@ -24611,7 +24622,6 @@ package android.media.effect { package android.media.metrics { public abstract class Event { - ctor protected Event(long); method @NonNull public android.os.Bundle getMetricsBundle(); method @IntRange(from=0xffffffff) public long getTimeSinceCreatedMillis(); } @@ -24621,7 +24631,7 @@ package android.media.metrics { field @NonNull public static final android.media.metrics.LogSessionId LOG_SESSION_ID_NONE; } - public class MediaMetricsManager { + public final class MediaMetricsManager { method @NonNull public android.media.metrics.PlaybackSession createPlaybackSession(); method @NonNull public android.media.metrics.RecordingSession createRecordingSession(); field public static final long INVALID_TIMESTAMP = -1L; // 0xffffffffffffffffL @@ -25192,6 +25202,7 @@ package android.media.session { method public float getPlaybackSpeed(); method public long getPosition(); method public int getState(); + method public boolean isActive(); method public void writeToParcel(android.os.Parcel, int); field public static final long ACTION_FAST_FORWARD = 64L; // 0x40L field public static final long ACTION_PAUSE = 2L; // 0x2L @@ -37728,16 +37739,16 @@ package android.service.autofill { method @NonNull public java.util.Map<android.view.autofill.AutofillId,android.service.autofill.FieldClassification> getFieldsClassification(); method @NonNull public java.util.Set<java.lang.String> getIgnoredDatasetIds(); method @NonNull public java.util.Map<android.view.autofill.AutofillId,java.util.Set<java.lang.String>> getManuallyEnteredField(); - method public int getNoSaveReason(); + method public int getNoSaveUiReason(); method @NonNull public java.util.Set<java.lang.String> getSelectedDatasetIds(); method public int getType(); - field public static final int NO_SAVE_REASON_DATASET_MATCH = 6; // 0x6 - field public static final int NO_SAVE_REASON_FIELD_VALIDATION_FAILED = 5; // 0x5 - field public static final int NO_SAVE_REASON_HAS_EMPTY_REQUIRED = 3; // 0x3 - field public static final int NO_SAVE_REASON_NONE = 0; // 0x0 - field public static final int NO_SAVE_REASON_NO_SAVE_INFO = 1; // 0x1 - field public static final int NO_SAVE_REASON_NO_VALUE_CHANGED = 4; // 0x4 - field public static final int NO_SAVE_REASON_WITH_DELAY_SAVE_FLAG = 2; // 0x2 + field public static final int NO_SAVE_UI_REASON_DATASET_MATCH = 6; // 0x6 + field public static final int NO_SAVE_UI_REASON_FIELD_VALIDATION_FAILED = 5; // 0x5 + field public static final int NO_SAVE_UI_REASON_HAS_EMPTY_REQUIRED = 3; // 0x3 + field public static final int NO_SAVE_UI_REASON_NONE = 0; // 0x0 + field public static final int NO_SAVE_UI_REASON_NO_SAVE_INFO = 1; // 0x1 + field public static final int NO_SAVE_UI_REASON_NO_VALUE_CHANGED = 4; // 0x4 + field public static final int NO_SAVE_UI_REASON_WITH_DELAY_SAVE_FLAG = 2; // 0x2 field public static final int TYPE_AUTHENTICATION_SELECTED = 2; // 0x2 field public static final int TYPE_CONTEXT_COMMITTED = 4; // 0x4 field public static final int TYPE_DATASETS_SHOWN = 5; // 0x5 @@ -40289,7 +40300,6 @@ package android.telecom { field public static final int DURATION_MEDIUM = 2; // 0x2 field public static final int DURATION_SHORT = 1; // 0x1 field public static final int DURATION_VERY_SHORT = 0; // 0x0 - field public static final long ENABLE_GET_CALL_STATE_PERMISSION_PROTECTION = 157233955L; // 0x95f3323L field public static final String EXTRA_CALL_BACK_NUMBER = "android.telecom.extra.CALL_BACK_NUMBER"; field public static final String EXTRA_CALL_DISCONNECT_CAUSE = "android.telecom.extra.CALL_DISCONNECT_CAUSE"; field public static final String EXTRA_CALL_DISCONNECT_MESSAGE = "android.telecom.extra.CALL_DISCONNECT_MESSAGE"; @@ -43065,6 +43075,13 @@ package android.telephony.data { field @NonNull public static final android.os.Parcelable.Creator<android.telephony.data.TrafficDescriptor> CREATOR; } + public static final class TrafficDescriptor.Builder { + ctor public TrafficDescriptor.Builder(); + method @NonNull public android.telephony.data.TrafficDescriptor build(); + method @NonNull public android.telephony.data.TrafficDescriptor.Builder setDataNetworkName(@NonNull String); + method @NonNull public android.telephony.data.TrafficDescriptor.Builder setOsAppId(@NonNull byte[]); + } + public final class UrspRule implements android.os.Parcelable { method public int describeContents(); method @IntRange(from=0x0, to=0xff) public int getPrecedence(); @@ -48451,6 +48468,7 @@ package android.view { method public boolean checkInputConnectionProxy(android.view.View); method public void clearAnimation(); method public void clearFocus(); + method public void clearViewTranslationCallback(); method public static int combineMeasuredStates(int, int); method protected int computeHorizontalScrollExtent(); method protected int computeHorizontalScrollOffset(); @@ -48487,7 +48505,7 @@ package android.view { method public boolean dispatchPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent); method public void dispatchProvideAutofillStructure(@NonNull android.view.ViewStructure, int); method public void dispatchProvideStructure(android.view.ViewStructure); - method public void dispatchRequestTranslation(@NonNull java.util.Map<android.view.autofill.AutofillId,long[]>, @NonNull int[], @Nullable android.view.translation.TranslationCapability, @NonNull java.util.List<android.view.translation.ViewTranslationRequest>); + method public void dispatchRequestTranslation(@NonNull java.util.Map<android.view.autofill.AutofillId,long[]>, @NonNull int[], @NonNull android.view.translation.TranslationCapability, @NonNull java.util.List<android.view.translation.ViewTranslationRequest>); method protected void dispatchRestoreInstanceState(android.util.SparseArray<android.os.Parcelable>); method protected void dispatchSaveInstanceState(android.util.SparseArray<android.os.Parcelable>); method public void dispatchScrollCaptureSearch(@NonNull android.graphics.Rect, @NonNull android.graphics.Point, @NonNull java.util.function.Consumer<android.view.ScrollCaptureTarget>); @@ -48518,7 +48536,7 @@ package android.view { method public android.view.View focusSearch(int); method public void forceHasOverlappingRendering(boolean); method public void forceLayout(); - method @Nullable public void generateDisplayHash(@NonNull String, @Nullable android.graphics.Rect, @NonNull java.util.concurrent.Executor, @NonNull android.view.displayhash.DisplayHashResultCallback); + method public void generateDisplayHash(@NonNull String, @Nullable android.graphics.Rect, @NonNull java.util.concurrent.Executor, @NonNull android.view.displayhash.DisplayHashResultCallback); method public static int generateViewId(); method public CharSequence getAccessibilityClassName(); method public android.view.View.AccessibilityDelegate getAccessibilityDelegate(); @@ -48684,7 +48702,7 @@ package android.view { method @Nullable public android.graphics.drawable.Drawable getVerticalScrollbarTrackDrawable(); method public int getVerticalScrollbarWidth(); method @Nullable public android.view.ViewRoot getViewRoot(); - method @Nullable public android.view.translation.ViewTranslationCallback getViewTranslationCallback(); + method @Nullable public android.view.translation.ViewTranslationResponse getViewTranslationResponse(); method public android.view.ViewTreeObserver getViewTreeObserver(); method public int getVisibility(); method public final int getWidth(); @@ -48784,8 +48802,8 @@ package android.view { method protected void onCreateContextMenu(android.view.ContextMenu); method protected int[] onCreateDrawableState(int); method public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo); - method @Nullable public android.view.translation.ViewTranslationRequest onCreateTranslationRequest(@NonNull int[]); - method public void onCreateTranslationRequests(@NonNull long[], @NonNull int[], @NonNull java.util.function.Consumer<android.view.translation.ViewTranslationRequest>); + method public void onCreateViewTranslationRequest(@NonNull int[], @NonNull java.util.function.Consumer<android.view.translation.ViewTranslationRequest>); + method public void onCreateVirtualViewTranslationRequests(@NonNull long[], @NonNull int[], @NonNull java.util.function.Consumer<android.view.translation.ViewTranslationRequest>); method @CallSuper protected void onDetachedFromWindow(); method protected void onDisplayHint(int); method public boolean onDragEvent(android.view.DragEvent); @@ -48830,8 +48848,8 @@ package android.view { method public void onStartTemporaryDetach(); method public boolean onTouchEvent(android.view.MotionEvent); method public boolean onTrackballEvent(android.view.MotionEvent); - method public void onTranslationResponse(@NonNull android.view.translation.ViewTranslationResponse); - method public void onTranslationResponse(@NonNull android.util.LongSparseArray<android.view.translation.ViewTranslationResponse>); + method public void onViewTranslationResponse(@NonNull android.view.translation.ViewTranslationResponse); + method public void onVirtualViewTranslationResponses(@NonNull android.util.LongSparseArray<android.view.translation.ViewTranslationResponse>); method @CallSuper public void onVisibilityAggregated(boolean); method protected void onVisibilityChanged(@NonNull android.view.View, int); method public void onWindowFocusChanged(boolean); @@ -52669,6 +52687,22 @@ package android.view.textservice { method public void onGetSuggestions(android.view.textservice.SuggestionsInfo[]); } + public static class SpellCheckerSession.SpellCheckerSessionParams { + method @NonNull public android.os.Bundle getExtras(); + method @Nullable public java.util.Locale getLocale(); + method public int getSupportedAttributes(); + method public boolean shouldReferToSpellCheckerLanguageSettings(); + } + + public static final class SpellCheckerSession.SpellCheckerSessionParams.Builder { + ctor public SpellCheckerSession.SpellCheckerSessionParams.Builder(); + method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams build(); + method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams.Builder setExtras(@NonNull android.os.Bundle); + method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams.Builder setLocale(@Nullable java.util.Locale); + method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams.Builder setShouldReferToSpellCheckerLanguageSettings(boolean); + method @NonNull public android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams.Builder setSupportedAttributes(int); + } + public final class SpellCheckerSubtype implements android.os.Parcelable { ctor @Deprecated public SpellCheckerSubtype(int, String, String); method public boolean containsExtraValueKey(String); @@ -52722,7 +52756,7 @@ package android.view.textservice { method @NonNull public java.util.List<android.view.textservice.SpellCheckerInfo> getEnabledSpellCheckerInfos(); method public boolean isSpellCheckerEnabled(); method @Nullable public android.view.textservice.SpellCheckerSession newSpellCheckerSession(@Nullable android.os.Bundle, @Nullable java.util.Locale, @NonNull android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener, boolean); - method @Nullable public android.view.textservice.SpellCheckerSession newSpellCheckerSession(@Nullable java.util.Locale, boolean, int, @Nullable android.os.Bundle, @NonNull java.util.concurrent.Executor, @NonNull android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener); + method @Nullable public android.view.textservice.SpellCheckerSession newSpellCheckerSession(@NonNull android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams, @NonNull java.util.concurrent.Executor, @NonNull android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener); } } diff --git a/core/api/module-lib-current.txt b/core/api/module-lib-current.txt index b653410aeb8d..037fbedcec60 100644 --- a/core/api/module-lib-current.txt +++ b/core/api/module-lib-current.txt @@ -161,10 +161,6 @@ package android.media.session { method public void onVolumeChanged(@NonNull android.media.session.MediaSession.Token, int); } - public final class PlaybackState implements android.os.Parcelable { - method public boolean isActiveState(); - } - } package android.net { @@ -198,13 +194,13 @@ package android.net { public final class NetworkStateSnapshot implements android.os.Parcelable { ctor public NetworkStateSnapshot(@NonNull android.net.Network, @NonNull android.net.NetworkCapabilities, @NonNull android.net.LinkProperties, @Nullable String, int); method public int describeContents(); + method public int getLegacyType(); + method @NonNull public android.net.LinkProperties getLinkProperties(); + method @NonNull public android.net.Network getNetwork(); + method @NonNull public android.net.NetworkCapabilities getNetworkCapabilities(); + method @Nullable public String getSubscriberId(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkStateSnapshot> CREATOR; - field public final int legacyType; - field @NonNull public final android.net.LinkProperties linkProperties; - field @NonNull public final android.net.Network network; - field @NonNull public final android.net.NetworkCapabilities networkCapabilities; - field @Nullable public final String subscriberId; } public class NetworkWatchlistManager { diff --git a/core/api/removed.txt b/core/api/removed.txt index a99178d51d77..ef35c593ed29 100644 --- a/core/api/removed.txt +++ b/core/api/removed.txt @@ -535,6 +535,14 @@ package android.view { } +package android.view.translation { + + public class Translator { + method @Deprecated @Nullable public void translate(@NonNull android.view.translation.TranslationRequest, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.view.translation.TranslationResponse>); + } + +} + package android.webkit { public class WebViewClient { diff --git a/core/api/system-current.txt b/core/api/system-current.txt index e77334358efd..14e27c4fe09e 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -19,6 +19,7 @@ package android { field public static final String ACCESS_SHARED_LIBRARIES = "android.permission.ACCESS_SHARED_LIBRARIES"; field public static final String ACCESS_SHORTCUTS = "android.permission.ACCESS_SHORTCUTS"; field public static final String ACCESS_SURFACE_FLINGER = "android.permission.ACCESS_SURFACE_FLINGER"; + field public static final String ACCESS_TUNED_INFO = "android.permission.ACCESS_TUNED_INFO"; field public static final String ACCESS_TV_DESCRAMBLER = "android.permission.ACCESS_TV_DESCRAMBLER"; field public static final String ACCESS_TV_TUNER = "android.permission.ACCESS_TV_TUNER"; field public static final String ACCESS_VIBRATOR_STATE = "android.permission.ACCESS_VIBRATOR_STATE"; @@ -40,6 +41,7 @@ package android { field public static final String BIND_CONTENT_CAPTURE_SERVICE = "android.permission.BIND_CONTENT_CAPTURE_SERVICE"; field public static final String BIND_CONTENT_SUGGESTIONS_SERVICE = "android.permission.BIND_CONTENT_SUGGESTIONS_SERVICE"; field public static final String BIND_DIRECTORY_SEARCH = "android.permission.BIND_DIRECTORY_SEARCH"; + field public static final String BIND_DISPLAY_HASHING_SERVICE = "android.permission.BIND_DISPLAY_HASHING_SERVICE"; field public static final String BIND_DOMAIN_VERIFICATION_AGENT = "android.permission.BIND_DOMAIN_VERIFICATION_AGENT"; field public static final String BIND_EUICC_SERVICE = "android.permission.BIND_EUICC_SERVICE"; field public static final String BIND_EXTERNAL_STORAGE_SERVICE = "android.permission.BIND_EXTERNAL_STORAGE_SERVICE"; @@ -379,6 +381,7 @@ package android { field public static final int config_systemSpeechRecognizer; field public static final int config_systemTelevisionNotificationHandler; field public static final int config_systemTextIntelligence; + field public static final int config_systemUi; field public static final int config_systemUiIntelligence; field public static final int config_systemVisualIntelligence; field public static final int config_systemWellbeing; @@ -437,7 +440,8 @@ package android.app { public class AlarmManager { method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.PendingIntent, android.os.WorkSource); method @RequiresPermission(android.Manifest.permission.UPDATE_DEVICE_STATS) public void set(int, long, long, long, android.app.AlarmManager.OnAlarmListener, android.os.Handler, android.os.WorkSource); - method @RequiresPermission(android.Manifest.permission.SCHEDULE_PRIORITIZED_ALARM) public void setPrioritized(int, long, long, @NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.app.AlarmManager.OnAlarmListener); + method @RequiresPermission(allOf={android.Manifest.permission.UPDATE_DEVICE_STATS, android.Manifest.permission.SCHEDULE_EXACT_ALARM}, conditional=true) public void setExact(int, long, @Nullable String, @NonNull java.util.concurrent.Executor, @NonNull android.os.WorkSource, @NonNull android.app.AlarmManager.OnAlarmListener); + method @RequiresPermission(android.Manifest.permission.SCHEDULE_PRIORITIZED_ALARM) public void setPrioritized(int, long, long, @Nullable String, @NonNull java.util.concurrent.Executor, @NonNull android.app.AlarmManager.OnAlarmListener); } public class AppOpsManager { @@ -1615,7 +1619,7 @@ package android.app.smartspace { ctor public SmartspaceConfig.Builder(@NonNull android.content.Context, @NonNull String); method @NonNull public android.app.smartspace.SmartspaceConfig build(); method @NonNull public android.app.smartspace.SmartspaceConfig.Builder setExtras(@NonNull android.os.Bundle); - method @NonNull public android.app.smartspace.SmartspaceConfig.Builder setSmartspaceTargetCount(int); + method @NonNull public android.app.smartspace.SmartspaceConfig.Builder setSmartspaceTargetCount(@IntRange(from=0, to=50) int); } public final class SmartspaceManager { @@ -1623,23 +1627,22 @@ package android.app.smartspace { } public final class SmartspaceSession implements java.lang.AutoCloseable { + method public void addOnTargetsAvailableListener(@NonNull java.util.concurrent.Executor, @NonNull android.app.smartspace.SmartspaceSession.OnTargetsAvailableListener); method public void close(); - method public void destroy(); method protected void finalize(); method public void notifySmartspaceEvent(@NonNull android.app.smartspace.SmartspaceTargetEvent); - method public void registerSmartspaceUpdates(@NonNull java.util.concurrent.Executor, @NonNull android.app.smartspace.SmartspaceSession.Callback); + method public void removeOnTargetsAvailableListener(@NonNull android.app.smartspace.SmartspaceSession.OnTargetsAvailableListener); method public void requestSmartspaceUpdate(); - method public void unregisterSmartspaceUpdates(@NonNull android.app.smartspace.SmartspaceSession.Callback); } - public static interface SmartspaceSession.Callback { + public static interface SmartspaceSession.OnTargetsAvailableListener { method public void onTargetsAvailable(@NonNull java.util.List<android.app.smartspace.SmartspaceTarget>); } public final class SmartspaceSessionId implements android.os.Parcelable { method public int describeContents(); method @Nullable public String getId(); - method @NonNull public int getUserId(); + method @NonNull public android.os.UserHandle getUserHandle(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.SmartspaceSessionId> CREATOR; } @@ -1650,19 +1653,19 @@ package android.app.smartspace { method @Nullable public String getAssociatedSmartspaceTargetId(); method @Nullable public android.app.smartspace.SmartspaceAction getBaseAction(); method @NonNull public android.content.ComponentName getComponentName(); - method @NonNull public long getCreationTimeMillis(); - method @NonNull public long getExpiryTimeMillis(); - method @NonNull public int getFeatureType(); + method public long getCreationTimeMillis(); + method public long getExpiryTimeMillis(); + method public int getFeatureType(); method @Nullable public android.app.smartspace.SmartspaceAction getHeaderAction(); method @NonNull public java.util.List<android.app.smartspace.SmartspaceAction> getIconGrid(); - method @NonNull public float getScore(); + method public float getScore(); method @Nullable public android.net.Uri getSliceUri(); method @NonNull public String getSmartspaceTargetId(); method @Nullable public String getSourceNotificationKey(); method @NonNull public android.os.UserHandle getUserHandle(); - method @Nullable public android.appwidget.AppWidgetProviderInfo getWidgetId(); - method @NonNull public boolean isSensitive(); - method @NonNull public boolean shouldShowExpanded(); + method @Nullable public android.appwidget.AppWidgetProviderInfo getWidget(); + method public boolean isSensitive(); + method public boolean shouldShowExpanded(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.SmartspaceTarget> CREATOR; field public static final int FEATURE_ALARM = 7; // 0x7 @@ -1697,17 +1700,17 @@ package android.app.smartspace { method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setActionChips(@NonNull java.util.List<android.app.smartspace.SmartspaceAction>); method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setAssociatedSmartspaceTargetId(@NonNull String); method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setBaseAction(@NonNull android.app.smartspace.SmartspaceAction); - method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setCreationTimeMillis(@NonNull long); - method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setExpiryTimeMillis(@NonNull long); - method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setFeatureType(@NonNull int); + method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setCreationTimeMillis(long); + method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setExpiryTimeMillis(long); + method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setFeatureType(int); method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setHeaderAction(@NonNull android.app.smartspace.SmartspaceAction); method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setIconGrid(@NonNull java.util.List<android.app.smartspace.SmartspaceAction>); - method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setScore(@NonNull float); - method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSensitive(@NonNull boolean); - method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setShouldShowExpanded(@NonNull boolean); + method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setScore(float); + method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSensitive(boolean); + method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setShouldShowExpanded(boolean); method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSliceUri(@NonNull android.net.Uri); method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setSourceNotificationKey(@NonNull String); - method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setWidgetId(@NonNull android.appwidget.AppWidgetProviderInfo); + method @NonNull public android.app.smartspace.SmartspaceTarget.Builder setWidget(@NonNull android.appwidget.AppWidgetProviderInfo); } public final class SmartspaceTargetEvent implements android.os.Parcelable { @@ -1719,11 +1722,11 @@ package android.app.smartspace { field @NonNull public static final android.os.Parcelable.Creator<android.app.smartspace.SmartspaceTargetEvent> CREATOR; field public static final int EVENT_TARGET_BLOCK = 5; // 0x5 field public static final int EVENT_TARGET_DISMISS = 4; // 0x4 + field public static final int EVENT_TARGET_HIDDEN = 3; // 0x3 field public static final int EVENT_TARGET_INTERACTION = 1; // 0x1 - field public static final int EVENT_TARGET_IN_VIEW = 2; // 0x2 - field public static final int EVENT_TARGET_OUT_OF_VIEW = 3; // 0x3 - field public static final int EVENT_UI_SURFACE_IN_VIEW = 6; // 0x6 - field public static final int EVENT_UI_SURFACE_OUT_OF_VIEW = 7; // 0x7 + field public static final int EVENT_TARGET_SHOWN = 2; // 0x2 + field public static final int EVENT_UI_SURFACE_HIDDEN = 7; // 0x7 + field public static final int EVENT_UI_SURFACE_SHOWN = 6; // 0x6 } public static final class SmartspaceTargetEvent.Builder { @@ -5324,12 +5327,11 @@ package android.media { public final class MediaRouter2 { method @NonNull public java.util.List<android.media.MediaRoute2Info> getAllRoutes(); method @Nullable public String getClientPackageName(); - method @Nullable public android.media.MediaRouter2.RoutingController getController(@NonNull String); - method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context, @NonNull String); - method public void setRouteVolume(@NonNull android.media.MediaRoute2Info, int); - method public void startScan(); - method public void stopScan(); - method public void transfer(@NonNull android.media.MediaRouter2.RoutingController, @NonNull android.media.MediaRoute2Info); + method @Nullable @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public static android.media.MediaRouter2 getInstance(@NonNull android.content.Context, @NonNull String); + method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void setRouteVolume(@NonNull android.media.MediaRoute2Info, int); + method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void startScan(); + method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void stopScan(); + method @RequiresPermission(android.Manifest.permission.MEDIA_CONTENT_CONTROL) public void transfer(@NonNull android.media.MediaRouter2.RoutingController, @NonNull android.media.MediaRoute2Info); } public abstract static class MediaRouter2.RouteCallback { @@ -5633,8 +5635,9 @@ package android.media.tv { method public int getAppType(); method @Nullable public android.net.Uri getChannelUri(); method @NonNull public String getInputId(); - method public boolean isForeground(); + method public boolean isMainSession(); method public boolean isRecordingSession(); + method public boolean isVisible(); method public void writeToParcel(@NonNull android.os.Parcel, int); field public static final int APP_TAG_SELF = 0; // 0x0 field public static final int APP_TYPE_NON_SYSTEM = 3; // 0x3 @@ -5758,7 +5761,7 @@ package android.media.tv { method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void addBlockedRating(@NonNull android.media.tv.TvContentRating); method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean captureFrame(String, android.view.Surface, android.media.tv.TvStreamConfig); method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public java.util.List<android.media.tv.TvStreamConfig> getAvailableTvStreamConfigList(String); - method @NonNull @RequiresPermission("com.android.providers.tv.permission.ACCESS_WATCHED_PROGRAMS") public java.util.List<android.media.tv.TunedInfo> getCurrentTunedInfos(); + method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_TUNED_INFO) public java.util.List<android.media.tv.TunedInfo> getCurrentTunedInfos(); method @NonNull @RequiresPermission("android.permission.DVB_DEVICE") public java.util.List<android.media.tv.DvbDeviceInfo> getDvbDeviceList(); method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public java.util.List<android.media.tv.TvInputHardwareInfo> getHardwareList(); method @RequiresPermission(android.Manifest.permission.READ_CONTENT_RATING_SYSTEMS) public java.util.List<android.media.tv.TvContentRatingSystemInfo> getTvContentRatingSystemList(); @@ -5785,7 +5788,7 @@ package android.media.tv { } public abstract static class TvInputManager.TvInputCallback { - method public void onCurrentTunedInfosUpdated(@NonNull java.util.List<android.media.tv.TunedInfo>); + method @RequiresPermission(android.Manifest.permission.ACCESS_TUNED_INFO) public void onCurrentTunedInfosUpdated(@NonNull java.util.List<android.media.tv.TunedInfo>); } public abstract class TvInputService extends android.app.Service { @@ -8390,6 +8393,7 @@ package android.os { field public static final int REASON_ACCOUNT_TRANSFER = 104; // 0x68 field public static final int REASON_ACTIVITY_RECOGNITION = 103; // 0x67 field public static final int REASON_GEOFENCING = 100; // 0x64 + field public static final int REASON_LOCATION_PROVIDER = 312; // 0x138 field public static final int REASON_OTHER = 1; // 0x1 field public static final int REASON_PUSH_MESSAGING = 101; // 0x65 field public static final int REASON_PUSH_MESSAGING_OVER_QUOTA = 102; // 0x66 @@ -8442,6 +8446,7 @@ package android.os { field @Deprecated public static final int EVENT_UNSPECIFIED = 0; // 0x0 field @Deprecated public static final int REASON_ACTIVITY_RECOGNITION = 103; // 0x67 field @Deprecated public static final int REASON_GEOFENCING = 100; // 0x64 + field @Deprecated public static final int REASON_LOCATION_PROVIDER = 312; // 0x138 field @Deprecated public static final int REASON_OTHER = 1; // 0x1 field @Deprecated public static final int REASON_PUSH_MESSAGING = 101; // 0x65 field @Deprecated public static final int REASON_PUSH_MESSAGING_OVER_QUOTA = 102; // 0x66 @@ -9860,7 +9865,7 @@ package android.service.displayhash { public final class DisplayHashParams implements android.os.Parcelable { method public int describeContents(); method @Nullable public android.util.Size getBufferSize(); - method public boolean isGrayscaleBuffer(); + method public boolean isUseGrayscale(); method public void writeToParcel(@NonNull android.os.Parcel, int); field @NonNull public static final android.os.Parcelable.Creator<android.service.displayhash.DisplayHashParams> CREATOR; } @@ -9869,17 +9874,17 @@ package android.service.displayhash { ctor public DisplayHashParams.Builder(); method @NonNull public android.service.displayhash.DisplayHashParams build(); method @NonNull public android.service.displayhash.DisplayHashParams.Builder setBufferSize(int, int); - method @NonNull public android.service.displayhash.DisplayHashParams.Builder setGrayscaleBuffer(boolean); + method @NonNull public android.service.displayhash.DisplayHashParams.Builder setUseGrayscale(boolean); } - public abstract class DisplayHasherService extends android.app.Service { - ctor public DisplayHasherService(); + public abstract class DisplayHashingService extends android.app.Service { + ctor public DisplayHashingService(); method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent); - method @Nullable public abstract void onGenerateDisplayHash(@NonNull byte[], @NonNull android.hardware.HardwareBuffer, @NonNull android.graphics.Rect, @NonNull String, @NonNull android.view.displayhash.DisplayHashResultCallback); + method public abstract void onGenerateDisplayHash(@NonNull byte[], @NonNull android.hardware.HardwareBuffer, @NonNull android.graphics.Rect, @NonNull String, @NonNull android.view.displayhash.DisplayHashResultCallback); method @NonNull public abstract java.util.Map<java.lang.String,android.service.displayhash.DisplayHashParams> onGetDisplayHashAlgorithms(); method @Nullable public abstract android.view.displayhash.VerifiedDisplayHash onVerifyDisplayHash(@NonNull byte[], @NonNull android.view.displayhash.DisplayHash); - field public static final String SERVICE_INTERFACE = "android.service.displayhash.DisplayHasherService"; - field public static final String SERVICE_META_DATA = "android.displayhash.display_hasher_service"; + field public static final String SERVICE_INTERFACE = "android.service.displayhash.DisplayHashingService"; + field public static final String SERVICE_META_DATA = "android.displayhash.display_hashing_service"; } } @@ -10221,7 +10226,7 @@ package android.service.rotationresolver { ctor public RotationResolutionRequest(@NonNull String, int, int, boolean, long); method public int describeContents(); method public int getCurrentRotation(); - method @NonNull public String getPackageName(); + method @NonNull public String getForegroundPackageName(); method public int getProposedRotation(); method public long getTimeoutMillis(); method public boolean shouldUseCamera(); @@ -10393,7 +10398,8 @@ package android.service.translation { ctor public TranslationService(); method @Nullable public final android.os.IBinder onBind(@NonNull android.content.Intent); method public void onConnected(); - method public abstract void onCreateTranslationSession(@NonNull android.view.translation.TranslationContext, int); + method public void onCreateTranslationSession(@NonNull android.view.translation.TranslationContext, int, @NonNull java.util.function.Consumer<java.lang.Boolean>); + method @Deprecated public abstract void onCreateTranslationSession(@NonNull android.view.translation.TranslationContext, int); method public void onDisconnected(); method public abstract void onFinishTranslationSession(int); method public abstract void onTranslationCapabilitiesRequest(int, int, @NonNull java.util.function.Consumer<java.util.Set<android.view.translation.TranslationCapability>>); @@ -10403,7 +10409,7 @@ package android.service.translation { } public static interface TranslationService.OnTranslationResultCallback { - method public void onError(); + method @Deprecated public void onError(); method public void onTranslationSuccess(@NonNull android.view.translation.TranslationResponse); } @@ -10544,6 +10550,7 @@ package android.service.voice { method @RequiresPermission(allOf={android.Manifest.permission.RECORD_AUDIO, android.Manifest.permission.CAPTURE_AUDIO_HOTWORD}) public boolean startRecognition(); method public boolean startRecognition(@NonNull android.os.ParcelFileDescriptor, @NonNull android.media.AudioFormat, @Nullable android.os.PersistableBundle); method public boolean stopRecognition(); + method public void updateState(@Nullable android.os.PersistableBundle, @Nullable android.os.SharedMemory); field public static final int CONFIDENCE_LEVEL_HIGH = 3; // 0x3 field public static final int CONFIDENCE_LEVEL_LOW = 1; // 0x1 field public static final int CONFIDENCE_LEVEL_MEDIUM = 2; // 0x2 @@ -11078,17 +11085,6 @@ package android.telephony { field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CallQuality> CREATOR; } - public final class CarrierBandwidth implements android.os.Parcelable { - ctor public CarrierBandwidth(int, int, int, int); - method public int describeContents(); - method public int getPrimaryDownlinkCapacityKbps(); - method public int getPrimaryUplinkCapacityKbps(); - method public int getSecondaryDownlinkCapacityKbps(); - method public int getSecondaryUplinkCapacityKbps(); - field @NonNull public static final android.os.Parcelable.Creator<android.telephony.CarrierBandwidth> CREATOR; - field public static final int INVALID = -1; // 0xffffffff - } - public class CarrierConfigManager { method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultCarrierServicePackageName(); method @NonNull public static android.os.PersistableBundle getDefaultConfig(); @@ -11105,10 +11101,6 @@ package android.telephony { field public static final String KEY_SUPPORT_CDMA_1X_VOICE_CALLS_BOOL = "support_cdma_1x_voice_calls_bool"; } - public static final class CarrierConfigManager.Ims { - field public static final String KEY_PUBLISH_SERVICE_DESC_FEATURE_TAG_MAP_OVERRIDE_STRING_ARRAY = "ims.publish_service_desc_feature_tag_map_override_string_array"; - } - public static final class CarrierConfigManager.Wifi { field public static final String KEY_AVOID_5GHZ_SOFTAP_FOR_LAA_BOOL = "wifi.avoid_5ghz_softap_for_laa_bool"; field public static final String KEY_AVOID_5GHZ_WIFI_DIRECT_FOR_LAA_BOOL = "wifi.avoid_5ghz_wifi_direct_for_laa_bool"; @@ -14833,7 +14825,7 @@ package android.webkit { method public default boolean onCheckIsTextEditor(); method public void onConfigurationChanged(android.content.res.Configuration); method public android.view.inputmethod.InputConnection onCreateInputConnection(android.view.inputmethod.EditorInfo); - method public default void onCreateTranslationRequests(@NonNull long[], @NonNull int[], @NonNull java.util.function.Consumer<android.view.translation.ViewTranslationRequest>); + method public default void onCreateVirtualViewTranslationRequests(@NonNull long[], @NonNull int[], @NonNull java.util.function.Consumer<android.view.translation.ViewTranslationRequest>); method public void onDetachedFromWindow(); method public boolean onDragEvent(android.view.DragEvent); method public void onDraw(android.graphics.Canvas); @@ -14858,7 +14850,7 @@ package android.webkit { method public void onStartTemporaryDetach(); method public boolean onTouchEvent(android.view.MotionEvent); method public boolean onTrackballEvent(android.view.MotionEvent); - method public default void onTranslationResponse(@NonNull android.util.LongSparseArray<android.view.translation.ViewTranslationResponse>); + method public default void onVirtualViewTranslationResponses(@NonNull android.util.LongSparseArray<android.view.translation.ViewTranslationResponse>); method public void onVisibilityChanged(android.view.View, int); method public void onWindowFocusChanged(boolean); method public void onWindowVisibilityChanged(int); diff --git a/core/api/system-removed.txt b/core/api/system-removed.txt index bf9f4f1ad37e..f366a54596e2 100644 --- a/core/api/system-removed.txt +++ b/core/api/system-removed.txt @@ -189,14 +189,3 @@ package android.telephony.data { } -package android.view.translation { - - public final class UiTranslationManager { - method @Deprecated @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION) public void finishTranslation(int); - method @Deprecated @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION) public void pauseTranslation(int); - method @Deprecated @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION) public void resumeTranslation(int); - method @Deprecated @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION) public void startTranslation(@NonNull android.view.translation.TranslationSpec, @NonNull android.view.translation.TranslationSpec, @NonNull java.util.List<android.view.autofill.AutofillId>, int); - } - -} - diff --git a/core/api/test-current.txt b/core/api/test-current.txt index 62922dbf40fe..cd39d5eb65ae 100644 --- a/core/api/test-current.txt +++ b/core/api/test-current.txt @@ -17,6 +17,7 @@ package android { field public static final String CONTROL_DEVICE_STATE = "android.permission.CONTROL_DEVICE_STATE"; field public static final String FORCE_DEVICE_POLICY_MANAGER_LOGS = "android.permission.FORCE_DEVICE_POLICY_MANAGER_LOGS"; field public static final String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES"; + field public static final String INSTALL_TEST_ONLY_PACKAGE = "android.permission.INSTALL_TEST_ONLY_PACKAGE"; field public static final String KEEP_UNINSTALLED_PACKAGES = "android.permission.KEEP_UNINSTALLED_PACKAGES"; field @Deprecated public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS"; field public static final String MANAGE_ACTIVITY_TASKS = "android.permission.MANAGE_ACTIVITY_TASKS"; @@ -347,6 +348,10 @@ package android.app { method public boolean isSeamlessResizeEnabled(); } + public final class PictureInPictureUiState implements android.os.Parcelable { + ctor public PictureInPictureUiState(boolean); + } + public class StatusBarManager { method public void clickNotification(@Nullable String, int, int, boolean); method @RequiresPermission(android.Manifest.permission.STATUS_BAR) public void collapsePanels(); @@ -657,6 +662,16 @@ package android.app.usage { ctor public UsageStats(); } + public static final class UsageStats.Builder { + ctor public UsageStats.Builder(); + method @NonNull public android.app.usage.UsageStats build(); + method @NonNull public android.app.usage.UsageStats.Builder setFirstTimeStamp(long); + method @NonNull public android.app.usage.UsageStats.Builder setLastTimeStamp(long); + method @NonNull public android.app.usage.UsageStats.Builder setLastTimeUsed(long); + method @NonNull public android.app.usage.UsageStats.Builder setPackageName(@Nullable String); + method @NonNull public android.app.usage.UsageStats.Builder setTotalTimeInForeground(long); + } + public final class UsageStatsManager { method public void forceUsageSourceSettingRead(); } @@ -773,8 +788,10 @@ package android.content.pm { public class ActivityInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable { method public static boolean isTranslucentOrFloating(android.content.res.TypedArray); + field public static final long ALWAYS_SANDBOX_DISPLAY_APIS = 185004937L; // 0xb06f389L field public static final long FORCE_NON_RESIZE_APP = 181136395L; // 0xacbec0bL field public static final long FORCE_RESIZE_APP = 174042936L; // 0xa5faf38L + field public static final long NEVER_SANDBOX_DISPLAY_APIS = 184838306L; // 0xb0468a2L field public static final long OVERRIDE_MIN_ASPECT_RATIO = 174042980L; // 0xa5faf64L field public static final long OVERRIDE_MIN_ASPECT_RATIO_LARGE = 180326787L; // 0xabf9183L field public static final float OVERRIDE_MIN_ASPECT_RATIO_LARGE_VALUE = 1.7777778f; @@ -799,6 +816,7 @@ package android.content.pm { } public static class PackageInstaller.SessionParams implements android.os.Parcelable { + method public void setInstallFlagAllowTest(); method public void setInstallerPackageName(@Nullable String); } @@ -1902,6 +1920,16 @@ package android.os.storage { method public String getPath(); } + public static final class StorageVolume.Builder { + ctor public StorageVolume.Builder(@NonNull String, @NonNull java.io.File, @NonNull String, @NonNull android.os.UserHandle, @NonNull String); + method @NonNull public android.os.storage.StorageVolume build(); + method @NonNull public android.os.storage.StorageVolume.Builder setEmulated(boolean); + method @NonNull public android.os.storage.StorageVolume.Builder setPrimary(boolean); + method @NonNull public android.os.storage.StorageVolume.Builder setRemovable(boolean); + method @NonNull public android.os.storage.StorageVolume.Builder setStorageUuid(@Nullable java.util.UUID); + method @NonNull public android.os.storage.StorageVolume.Builder setUuid(@Nullable String); + } + } package android.os.strictmode { @@ -2089,7 +2117,7 @@ package android.provider { field public static final String LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST = "location_ignore_settings_package_whitelist"; field public static final String LOW_POWER_MODE = "low_power"; field public static final String LOW_POWER_MODE_STICKY = "low_power_sticky"; - field public static final String NOTIFICATION_BUBBLES = "notification_bubbles"; + field @Deprecated public static final String NOTIFICATION_BUBBLES = "notification_bubbles"; field public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices"; field public static final String SHOW_FIRST_CRASH_DIALOG = "show_first_crash_dialog"; field public static final String USER_DISABLED_HDR_FORMATS = "user_disabled_hdr_formats"; @@ -2113,6 +2141,7 @@ package android.provider { field public static final String IMMERSIVE_MODE_CONFIRMATIONS = "immersive_mode_confirmations"; field public static final String NFC_PAYMENT_DEFAULT_COMPONENT = "nfc_payment_default_component"; field public static final String NOTIFICATION_BADGING = "notification_badging"; + field public static final String NOTIFICATION_BUBBLES = "notification_bubbles"; field public static final String POWER_MENU_LOCKED_SHOW_CONTENT = "power_menu_locked_show_content"; field public static final String SELECTED_SPELL_CHECKER = "selected_spell_checker"; field public static final String SELECTED_SPELL_CHECKER_SUBTYPE = "selected_spell_checker_subtype"; @@ -2321,6 +2350,14 @@ package android.service.quicksettings { } +package android.service.voice { + + public class AlwaysOnHotwordDetector implements android.service.voice.HotwordDetector { + method @RequiresPermission(allOf={android.Manifest.permission.RECORD_AUDIO, android.Manifest.permission.CAPTURE_AUDIO_HOTWORD}) public void triggerHardwareRecognitionEventForTest(int, int, boolean, int, int, int, boolean, @NonNull android.media.AudioFormat, @Nullable byte[]); + } + +} + package android.service.watchdog { public abstract class ExplicitHealthCheckService extends android.app.Service { diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 45120b694b62..198fa651695c 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -2813,6 +2813,29 @@ public class Activity extends ContextThemeWrapper } /** + * Called by the system when the activity is in PiP and has state changes. + * + * Compare to {@link #onPictureInPictureModeChanged(boolean, Configuration)}, which is only + * called when PiP mode changes (meaning, enters or exits PiP), this can be called at any time + * while the activity is in PiP mode. Therefore, all invocation can only happen after + * {@link #onPictureInPictureModeChanged(boolean, Configuration)} is called with true, and + * before {@link #onPictureInPictureModeChanged(boolean, Configuration)} is called with false. + * You would not need to worry about cases where this is called and the activity is not in + * Picture-In-Picture mode. For managing cases where the activity enters/exits + * Picture-in-Picture (e.g. resources clean-up on exit), use + * {@link #onPictureInPictureModeChanged(boolean, Configuration)}. + * + * The default state is everything declared in {@link PictureInPictureUiState} is false, such as + * {@link PictureInPictureUiState#isStashed()}. + * + * @param pipState the new Picture-in-Picture state. + */ + public void onPictureInPictureUiStateChanged(@NonNull PictureInPictureUiState pipState) { + // Left deliberately empty. There should be no side effects if a direct + // subclass of Activity does not call super. + } + + /** * Called by the system when the activity changes to and from picture-in-picture mode. * * @see android.R.attr#supportsPictureInPicture @@ -8792,11 +8815,11 @@ public class Activity extends ContextThemeWrapper * @hide */ public void updateUiTranslationState(int state, TranslationSpec sourceSpec, - TranslationSpec destSpec, List<AutofillId> viewIds) { + TranslationSpec targetSpec, List<AutofillId> viewIds) { if (mUiTranslationController == null) { mUiTranslationController = new UiTranslationController(this, getApplicationContext()); } - mUiTranslationController.updateUiTranslationState(state, sourceSpec, destSpec, viewIds); + mUiTranslationController.updateUiTranslationState(state, sourceSpec, targetSpec, viewIds); } class HostCallbacks extends FragmentHostCallback<Activity> { diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java index a7d5b0519db6..080352408a67 100644 --- a/core/java/android/app/ActivityManagerInternal.java +++ b/core/java/android/app/ActivityManagerInternal.java @@ -570,4 +570,9 @@ public abstract class ActivityManagerInternal { /** Unregister an {@link AnrController} */ public abstract void unregisterAnrController(AnrController controller); + + /** + * Is the FGS started from an uid temporarily allowed to have while-in-use permission? + */ + public abstract boolean isTempAllowlistedForFgsWhileInUse(int uid); } diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java index 98fee9cf90cf..3a1961a1c741 100644 --- a/core/java/android/app/ActivityThread.java +++ b/core/java/android/app/ActivityThread.java @@ -39,7 +39,6 @@ import android.annotation.Nullable; import android.app.assist.AssistContent; import android.app.assist.AssistStructure; import android.app.backup.BackupAgent; -import android.app.backup.BackupManager; import android.app.servertransaction.ActivityLifecycleItem; import android.app.servertransaction.ActivityLifecycleItem.LifecycleState; import android.app.servertransaction.ActivityRelaunchItem; @@ -1587,9 +1586,17 @@ public final class ActivityThread extends ClientTransactionHandler @Override public void dumpGfxInfo(ParcelFileDescriptor pfd, String[] args) { - nDumpGraphicsInfo(pfd.getFileDescriptor()); - WindowManagerGlobal.getInstance().dumpGfxInfo(pfd.getFileDescriptor(), args); - IoUtils.closeQuietly(pfd); + DumpComponentInfo data = new DumpComponentInfo(); + try { + data.fd = pfd.dup(); + data.token = null; + data.args = args; + sendMessage(H.DUMP_GFXINFO, data, 0, 0, true /*async*/); + } catch (IOException e) { + Slog.w(TAG, "dumpGfxInfo failed", e); + } finally { + IoUtils.closeQuietly(pfd); + } } @Override @@ -1835,12 +1842,12 @@ public final class ActivityThread extends ClientTransactionHandler @Override public void updateUiTranslationState(IBinder activityToken, int state, - TranslationSpec sourceSpec, TranslationSpec destSpec, List<AutofillId> viewIds) { + TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds) { SomeArgs args = SomeArgs.obtain(); args.arg1 = activityToken; args.arg2 = state; args.arg3 = sourceSpec; - args.arg4 = destSpec; + args.arg4 = targetSpec; args.arg5 = viewIds; sendMessage(H.UPDATE_UI_TRANSLATION_STATE, args); } @@ -1961,6 +1968,7 @@ public final class ActivityThread extends ClientTransactionHandler public static final int ATTACH_STARTUP_AGENTS = 162; public static final int UPDATE_UI_TRANSLATION_STATE = 163; public static final int SET_CONTENT_CAPTURE_OPTIONS_CALLBACK = 164; + public static final int DUMP_GFXINFO = 165; public static final int INSTRUMENT_WITHOUT_RESTART = 170; public static final int FINISH_INSTRUMENTATION_WITHOUT_RESTART = 171; @@ -2010,6 +2018,7 @@ public final class ActivityThread extends ClientTransactionHandler case UPDATE_UI_TRANSLATION_STATE: return "UPDATE_UI_TRANSLATION_STATE"; case SET_CONTENT_CAPTURE_OPTIONS_CALLBACK: return "SET_CONTENT_CAPTURE_OPTIONS_CALLBACK"; + case DUMP_GFXINFO: return "DUMP GFXINFO"; case INSTRUMENT_WITHOUT_RESTART: return "INSTRUMENT_WITHOUT_RESTART"; case FINISH_INSTRUMENTATION_WITHOUT_RESTART: return "FINISH_INSTRUMENTATION_WITHOUT_RESTART"; @@ -2083,6 +2092,9 @@ public final class ActivityThread extends ClientTransactionHandler case DUMP_SERVICE: handleDumpService((DumpComponentInfo)msg.obj); break; + case DUMP_GFXINFO: + handleDumpGfxInfo((DumpComponentInfo) msg.obj); + break; case LOW_MEMORY: Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "lowMemory"); handleLowMemory(); @@ -3987,6 +3999,12 @@ public final class ActivityThread extends ClientTransactionHandler } } + @Override + public void handlePictureInPictureStateChanged(@NonNull ActivityClientRecord r, + PictureInPictureUiState pipState) { + r.activity.onPictureInPictureUiStateChanged(pipState); + } + /** * Register a splash screen manager to this process. */ @@ -4169,13 +4187,13 @@ public final class ActivityThread extends ClientTransactionHandler } private void updateUiTranslationState(IBinder activityToken, int state, - TranslationSpec sourceSpec, TranslationSpec destSpec, List<AutofillId> viewIds) { + TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds) { final ActivityClientRecord r = mActivities.get(activityToken); if (r == null) { Log.w(TAG, "updateUiTranslationState(): no activity for " + activityToken); return; } - r.activity.updateUiTranslationState(state, sourceSpec, destSpec, viewIds); + r.activity.updateUiTranslationState(state, sourceSpec, targetSpec, viewIds); } private static final ThreadLocal<Intent> sCurrentBroadcastIntent = new ThreadLocal<Intent>(); @@ -4483,6 +4501,17 @@ public final class ActivityThread extends ClientTransactionHandler } } + private void handleDumpGfxInfo(DumpComponentInfo info) { + try { + nDumpGraphicsInfo(info.fd.getFileDescriptor()); + WindowManagerGlobal.getInstance().dumpGfxInfo(info.fd.getFileDescriptor(), info.args); + } catch (Exception e) { + Log.w(TAG, "Caught exception from dumpGfxInfo()", e); + } finally { + IoUtils.closeQuietly(info.fd); + } + } + private void handleDumpService(DumpComponentInfo info) { final StrictMode.ThreadPolicy oldPolicy = StrictMode.allowThreadDiskWrites(); try { diff --git a/core/java/android/app/AppCompatCallbacks.java b/core/java/android/app/AppCompatCallbacks.java index 28a21f767283..134cef5b6bfa 100644 --- a/core/java/android/app/AppCompatCallbacks.java +++ b/core/java/android/app/AppCompatCallbacks.java @@ -28,7 +28,7 @@ import java.util.Arrays; * * @hide */ -public final class AppCompatCallbacks extends Compatibility.Callbacks { +public final class AppCompatCallbacks implements Compatibility.BehaviorChangeDelegate { private final long[] mDisabledChanges; private final ChangeReporter mChangeReporter; @@ -38,7 +38,7 @@ public final class AppCompatCallbacks extends Compatibility.Callbacks { * @param disabledChanges Set of compatibility changes that are disabled for this process. */ public static void install(long[] disabledChanges) { - Compatibility.setCallbacks(new AppCompatCallbacks(disabledChanges)); + Compatibility.setBehaviorChangeDelegate(new AppCompatCallbacks(disabledChanges)); } private AppCompatCallbacks(long[] disabledChanges) { @@ -48,11 +48,11 @@ public final class AppCompatCallbacks extends Compatibility.Callbacks { ChangeReporter.SOURCE_APP_PROCESS); } - protected void reportChange(long changeId) { + public void onChangeReported(long changeId) { reportChange(changeId, ChangeReporter.STATE_LOGGED); } - protected boolean isChangeEnabled(long changeId) { + public boolean isChangeEnabled(long changeId) { if (Arrays.binarySearch(mDisabledChanges, changeId) < 0) { // Not present in the disabled array reportChange(changeId, ChangeReporter.STATE_ENABLED); diff --git a/core/java/android/app/ClientTransactionHandler.java b/core/java/android/app/ClientTransactionHandler.java index cf5fd148c030..c752f34ab0bb 100644 --- a/core/java/android/app/ClientTransactionHandler.java +++ b/core/java/android/app/ClientTransactionHandler.java @@ -159,6 +159,10 @@ public abstract class ClientTransactionHandler { /** Request that an activity enter picture-in-picture. */ public abstract void handlePictureInPictureRequested(@NonNull ActivityClientRecord r); + /** Signal to an activity (that is currently in PiP) of PiP state changes. */ + public abstract void handlePictureInPictureStateChanged(@NonNull ActivityClientRecord r, + PictureInPictureUiState pipState); + /** Whether the activity want to handle splash screen exit animation */ public abstract boolean isHandleSplashScreenExit(@NonNull IBinder token); diff --git a/core/java/android/app/IActivityClientController.aidl b/core/java/android/app/IActivityClientController.aidl index ed4836e31209..09b0c2f96b13 100644 --- a/core/java/android/app/IActivityClientController.aidl +++ b/core/java/android/app/IActivityClientController.aidl @@ -37,7 +37,11 @@ import com.android.internal.policy.IKeyguardDismissCallback; interface IActivityClientController { oneway void activityIdle(in IBinder token, in Configuration config, in boolean stopProfiling); oneway void activityResumed(in IBinder token, in boolean handleSplashScreenExit); - oneway void activityTopResumedStateLost(); + /** + * This call is not one-way because {@link #activityPaused()) is not one-way, or + * the top-resumed-lost could be reported after activity paused. + */ + void activityTopResumedStateLost(); /** * Notifies that the activity has completed paused. This call is not one-way because it can make * consecutive launch in the same process more coherent. About the order of binder call, it diff --git a/core/java/android/app/IActivityTaskManager.aidl b/core/java/android/app/IActivityTaskManager.aidl index 346882ee7298..2f1f14e186db 100644 --- a/core/java/android/app/IActivityTaskManager.aidl +++ b/core/java/android/app/IActivityTaskManager.aidl @@ -36,6 +36,7 @@ import android.app.IUidObserver; import android.app.IUserSwitchObserver; import android.app.Notification; import android.app.PendingIntent; +import android.app.PictureInPictureUiState; import android.app.ProfilerInfo; import android.app.WaitResult; import android.app.assist.AssistContent; @@ -330,4 +331,9 @@ interface IActivityTaskManager { */ void onSplashScreenViewCopyFinished(int taskId, in SplashScreenView.SplashScreenViewParcelable material); + + /** + * When the Picture-in-picture state has changed. + */ + void onPictureInPictureStateChanged(in PictureInPictureUiState pipState); } diff --git a/core/java/android/app/IApplicationThread.aidl b/core/java/android/app/IApplicationThread.aidl index 78e7ce8c594e..918309e8e735 100644 --- a/core/java/android/app/IApplicationThread.aidl +++ b/core/java/android/app/IApplicationThread.aidl @@ -160,5 +160,5 @@ oneway interface IApplicationThread { IUiAutomationConnection instrumentationUiConnection, in ApplicationInfo targetInfo); void updateUiTranslationState(IBinder activityToken, int state, in TranslationSpec sourceSpec, - in TranslationSpec destSpec, in List<AutofillId> viewIds); + in TranslationSpec targetSpec, in List<AutofillId> viewIds); } diff --git a/core/java/android/app/IWallpaperManager.aidl b/core/java/android/app/IWallpaperManager.aidl index e83557c18f8f..4f7c6841d6bb 100644 --- a/core/java/android/app/IWallpaperManager.aidl +++ b/core/java/android/app/IWallpaperManager.aidl @@ -190,4 +190,18 @@ interface IWallpaperManager { * Called from SystemUI when it shows the AoD UI. */ oneway void setInAmbientMode(boolean inAmbientMode, long animationDuration); + + /** + * Called from SystemUI when the device is waking up. + * + * @hide + */ + oneway void notifyWakingUp(int x, int y, in Bundle extras); + + /** + * Called from SystemUI when the device is going to sleep. + * + * @hide + */ + void notifyGoingToSleep(int x, int y, in Bundle extras); } diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java index 7ce0c7060b05..d25561640385 100644 --- a/core/java/android/app/Notification.java +++ b/core/java/android/app/Notification.java @@ -6103,6 +6103,9 @@ public class Notification implements Parcelable button.setImageViewIcon(R.id.action0, action.getIcon()); boolean priority = action.getExtras().getBoolean(CallStyle.KEY_ACTION_PRIORITY); button.setBoolean(R.id.action0, "setWrapModePriority", priority); + int minWidthDimen = + priority ? R.dimen.call_notification_system_action_min_width : 0; + button.setIntDimen(R.id.action0, "setMinimumWidth", minWidthDimen); } } else { button.setTextViewText(R.id.action0, processTextSpans( diff --git a/telephony/java/android/telephony/CarrierBandwidth.aidl b/core/java/android/app/PictureInPictureUiState.aidl index d0861b88e737..ca81fb6b99d1 100644 --- a/telephony/java/android/telephony/CarrierBandwidth.aidl +++ b/core/java/android/app/PictureInPictureUiState.aidl @@ -1,11 +1,11 @@ -/* - * Copyright 2020 The Android Open Source Project +/** + * Copyright (c) 2021, 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 + * 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, @@ -13,5 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package android.telephony; -parcelable CarrierBandwidth;
\ No newline at end of file + +package android.app; + +parcelable PictureInPictureUiState;
\ No newline at end of file diff --git a/core/java/android/app/PictureInPictureUiState.java b/core/java/android/app/PictureInPictureUiState.java new file mode 100644 index 000000000000..3d2cb3ffa58d --- /dev/null +++ b/core/java/android/app/PictureInPictureUiState.java @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2021 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.app; + +import android.annotation.NonNull; +import android.annotation.TestApi; +import android.os.Parcel; +import android.os.Parcelable; + +import java.util.Objects; + +/** + * Used by {@link Activity#onPictureInPictureUiStateChanged(PictureInPictureUiState)}. + */ +public final class PictureInPictureUiState implements Parcelable { + + private boolean mIsStashed; + + /** {@hide} */ + PictureInPictureUiState(Parcel in) { + mIsStashed = in.readBoolean(); + } + + /** {@hide} */ + @TestApi + public PictureInPictureUiState(boolean isStashed) { + mIsStashed = isStashed; + } + + /** + * Returns whether Picture-in-Picture is stashed or not. + */ + public boolean isStashed() { + return mIsStashed; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof PictureInPictureUiState)) return false; + PictureInPictureUiState that = (PictureInPictureUiState) o; + return Objects.equals(mIsStashed, that.mIsStashed); + } + + @Override + public int hashCode() { + return Objects.hash(mIsStashed); + } + + @Override + public int describeContents() { + return 0; + } + + @Override + public void writeToParcel(@NonNull Parcel out, int flags) { + out.writeBoolean(mIsStashed); + } + + public static final @android.annotation.NonNull Creator<PictureInPictureUiState> CREATOR = + new Creator<PictureInPictureUiState>() { + public PictureInPictureUiState createFromParcel(Parcel in) { + return new PictureInPictureUiState(in); + } + public PictureInPictureUiState[] newArray(int size) { + return new PictureInPictureUiState[size]; + } + }; +} diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java index 6a71c92fbc37..8d332ab1d58b 100644 --- a/core/java/android/app/WallpaperManager.java +++ b/core/java/android/app/WallpaperManager.java @@ -190,6 +190,30 @@ public class WallpaperManager { public static final String COMMAND_DROP = "android.home.drop"; /** + * Command for {@link #sendWallpaperCommand}: reported by System UI when the device is waking + * up. The x and y arguments are a location (possibly very roughly) corresponding to the action + * that caused the device to wake up. For example, if the power button was pressed, this will be + * the location on the screen nearest the power button. + * + * If the location is unknown or not applicable, x and y will be -1. + * + * @hide + */ + public static final String COMMAND_WAKING_UP = "android.wallpaper.wakingup"; + + /** + * Command for {@link #sendWallpaperCommand}: reported by System UI when the device is going to + * sleep. The x and y arguments are a location (possibly very roughly) corresponding to the + * action that caused the device to go to sleep. For example, if the power button was pressed, + * this will be the location on the screen nearest the power button. + * + * If the location is unknown or not applicable, x and y will be -1. + * + * @hide + */ + public static final String COMMAND_GOING_TO_SLEEP = "android.wallpaper.goingtosleep"; + + /** * Command for {@link #sendWallpaperCommand}: reported when the wallpaper that was already * set is re-applied by the user. * @hide diff --git a/core/java/android/app/servertransaction/PipStateTransactionItem.java b/core/java/android/app/servertransaction/PipStateTransactionItem.java new file mode 100644 index 000000000000..167f5a43b1b1 --- /dev/null +++ b/core/java/android/app/servertransaction/PipStateTransactionItem.java @@ -0,0 +1,93 @@ +/* + * Copyright 2021 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.app.servertransaction; + +import android.annotation.Nullable; +import android.app.ActivityThread.ActivityClientRecord; +import android.app.ClientTransactionHandler; +import android.app.PictureInPictureUiState; +import android.os.Parcel; + +/** + * Request an activity to enter picture-in-picture mode. + * @hide + */ +public final class PipStateTransactionItem extends ActivityTransactionItem { + + private PictureInPictureUiState mPipState; + + @Override + public void execute(ClientTransactionHandler client, ActivityClientRecord r, + PendingTransactionActions pendingActions) { + client.handlePictureInPictureStateChanged(r, mPipState); + } + + // ObjectPoolItem implementation + + private PipStateTransactionItem() {} + + /** Obtain an instance initialized with provided params. */ + public static PipStateTransactionItem obtain(PictureInPictureUiState pipState) { + PipStateTransactionItem instance = ObjectPool.obtain(PipStateTransactionItem.class); + if (instance == null) { + instance = new PipStateTransactionItem(); + } + instance.mPipState = pipState; + + return instance; + } + + @Override + public void recycle() { + mPipState = null; + ObjectPool.recycle(this); + } + + // Parcelable implementation + + /** Write to Parcel. */ + @Override + public void writeToParcel(Parcel dest, int flags) { + mPipState.writeToParcel(dest, flags); + } + + /** Read from Parcel. */ + private PipStateTransactionItem(Parcel in) { + mPipState = PictureInPictureUiState.CREATOR.createFromParcel(in); + } + + public static final @android.annotation.NonNull Creator<PipStateTransactionItem> CREATOR = + new Creator<PipStateTransactionItem>() { + public PipStateTransactionItem createFromParcel(Parcel in) { + return new PipStateTransactionItem(in); + } + + public PipStateTransactionItem[] newArray(int size) { + return new PipStateTransactionItem[size]; + } + }; + + @Override + public boolean equals(@Nullable Object o) { + return this == o; + } + + @Override + public String toString() { + return "PipStateTransactionItem{}"; + } +} diff --git a/core/java/android/app/smartspace/SmartspaceConfig.java b/core/java/android/app/smartspace/SmartspaceConfig.java index 07d7bf0e33af..0897b5fb81e7 100644 --- a/core/java/android/app/smartspace/SmartspaceConfig.java +++ b/core/java/android/app/smartspace/SmartspaceConfig.java @@ -15,6 +15,7 @@ */ package android.app.smartspace; +import android.annotation.IntRange; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SuppressLint; @@ -41,6 +42,7 @@ public final class SmartspaceConfig implements Parcelable { * The least number of smartspace targets expected to be predicted by the backend. The backend * will always try to satisfy this threshold but it is not guaranteed to always meet it. */ + @IntRange(from = 0, to = 50) private final int mSmartspaceTargetCount; /** @@ -54,13 +56,15 @@ public final class SmartspaceConfig implements Parcelable { @NonNull private String mPackageName; - /** Send other client UI configurations in extras. + /** + * Send other client UI configurations in extras. * * This can include: * - * - Desired maximum update frequency - * - Request to get periodic updates - * - Request to support multiple clients for the same UISurface. + * - Desired maximum update frequency (For example 1 minute update frequency for AoD, 1 second + * update frequency for home screen etc). + * - Request to get periodic updates + * - Request to support multiple clients for the same UISurface. */ @Nullable private final Bundle mExtras; @@ -165,7 +169,7 @@ public final class SmartspaceConfig implements Parcelable { private Bundle mExtras = Bundle.EMPTY; /** - * @param context The {@link Context} which is used to fetch the package name. + * @param context The {@link Context} which is used to fetch the package name. * @param uiSurface the UI Surface name associated with this context. * @hide */ @@ -179,7 +183,8 @@ public final class SmartspaceConfig implements Parcelable { * Used to set the expected number of cards for this context. */ @NonNull - public Builder setSmartspaceTargetCount(int smartspaceTargetCount) { + public Builder setSmartspaceTargetCount( + @IntRange(from = 0, to = 50) int smartspaceTargetCount) { this.mSmartspaceTargetCount = smartspaceTargetCount; return this; } diff --git a/core/java/android/app/smartspace/SmartspaceSession.java b/core/java/android/app/smartspace/SmartspaceSession.java index 16def61239cf..9199581c3149 100644 --- a/core/java/android/app/smartspace/SmartspaceSession.java +++ b/core/java/android/app/smartspace/SmartspaceSession.java @@ -63,7 +63,7 @@ import java.util.function.Consumer; * * void onDestroy() { * mSmartspaceSession.unregisterPredictionUpdates() - * mSmartspaceSession.destroy(); + * mSmartspaceSession.close(); * } * * }</pre> @@ -81,7 +81,8 @@ public final class SmartspaceSession implements AutoCloseable { private final AtomicBoolean mIsClosed = new AtomicBoolean(false); private final SmartspaceSessionId mSessionId; - private final ArrayMap<Callback, CallbackWrapper> mRegisteredCallbacks = new ArrayMap<>(); + private final ArrayMap<OnTargetsAvailableListener, CallbackWrapper> mRegisteredCallbacks = + new ArrayMap<>(); private final IBinder mToken = new Binder(); /** @@ -98,11 +99,11 @@ public final class SmartspaceSession implements AutoCloseable { IBinder b = ServiceManager.getService(Context.SMARTSPACE_SERVICE); mInterface = android.app.smartspace.ISmartspaceManager.Stub.asInterface(b); mSessionId = new SmartspaceSessionId( - context.getPackageName() + ":" + UUID.randomUUID().toString(), context.getUserId()); + context.getPackageName() + ":" + UUID.randomUUID().toString(), context.getUser()); try { mInterface.createSmartspaceSession(smartspaceConfig, mSessionId, mToken); } catch (RemoteException e) { - Log.e(TAG, "Failed to cerate Smartspace session", e); + Log.e(TAG, "Failed to create Smartspace session", e); e.rethrowFromSystemServer(); } @@ -145,24 +146,24 @@ public final class SmartspaceSession implements AutoCloseable { * Requests the smartspace service provide continuous updates of smartspace cards via the * provided callback, until the given callback is unregistered. * - * @param callbackExecutor The callback executor to use when calling the callback. - * @param callback The Callback to be called when updates of Smartspace targets are + * @param listenerExecutor The listener executor to use when firing the listener. + * @param listener The listener to be called when updates of Smartspace targets are * available. */ - public void registerSmartspaceUpdates(@NonNull @CallbackExecutor Executor callbackExecutor, - @NonNull Callback callback) { + public void addOnTargetsAvailableListener(@NonNull @CallbackExecutor Executor listenerExecutor, + @NonNull OnTargetsAvailableListener listener) { if (mIsClosed.get()) { throw new IllegalStateException("This client has already been destroyed."); } - if (mRegisteredCallbacks.containsKey(callback)) { + if (mRegisteredCallbacks.containsKey(listener)) { // Skip if this callback is already registered return; } try { - final CallbackWrapper callbackWrapper = new CallbackWrapper(callbackExecutor, - callback::onTargetsAvailable); - mRegisteredCallbacks.put(callback, callbackWrapper); + final CallbackWrapper callbackWrapper = new CallbackWrapper(listenerExecutor, + listener::onTargetsAvailable); + mRegisteredCallbacks.put(listener, callbackWrapper); mInterface.registerSmartspaceUpdates(mSessionId, callbackWrapper); mInterface.requestSmartspaceUpdate(mSessionId); } catch (RemoteException e) { @@ -175,21 +176,21 @@ public final class SmartspaceSession implements AutoCloseable { * Requests the smartspace service to stop providing continuous updates to the provided * callback until the callback is re-registered. * - * @see {@link SmartspaceSession#registerSmartspaceUpdates(Executor, Callback)}. - * - * @param callback The callback to be unregistered. + * @param listener The callback to be unregistered. + * @see {@link SmartspaceSession#addOnTargetsAvailableListener(Executor, + * OnTargetsAvailableListener)}. */ - public void unregisterSmartspaceUpdates(@NonNull Callback callback) { + public void removeOnTargetsAvailableListener(@NonNull OnTargetsAvailableListener listener) { if (mIsClosed.get()) { throw new IllegalStateException("This client has already been destroyed."); } - if (!mRegisteredCallbacks.containsKey(callback)) { + if (!mRegisteredCallbacks.containsKey(listener)) { // Skip if this callback was never registered return; } try { - final CallbackWrapper callbackWrapper = mRegisteredCallbacks.remove(callback); + final CallbackWrapper callbackWrapper = mRegisteredCallbacks.remove(listener); mInterface.unregisterSmartspaceUpdates(mSessionId, callbackWrapper); } catch (RemoteException e) { Log.e(TAG, "Failed to unregister for smartspace updates", e); @@ -201,7 +202,7 @@ public final class SmartspaceSession implements AutoCloseable { * Destroys the client and unregisters the callback. Any method on this class after this call * will throw {@link IllegalStateException}. */ - public void destroy() { + private void destroy() { if (!mIsClosed.getAndSet(true)) { mCloseGuard.close(); @@ -238,6 +239,7 @@ public final class SmartspaceSession implements AutoCloseable { @Override public void close() { try { + destroy(); finalize(); } catch (Throwable throwable) { throwable.printStackTrace(); @@ -245,14 +247,14 @@ public final class SmartspaceSession implements AutoCloseable { } /** - * Callback for receiving smartspace updates. + * Listener to receive smartspace targets from the service. */ - public interface Callback { + public interface OnTargetsAvailableListener { /** * Called when a new set of smartspace targets are available. * - * @param targets Sorted list of smartspace targets. + * @param targets Ranked list of smartspace targets. */ void onTargetsAvailable(@NonNull List<SmartspaceTarget> targets); } diff --git a/core/java/android/app/smartspace/SmartspaceSessionId.java b/core/java/android/app/smartspace/SmartspaceSessionId.java index 5220c35d7064..4040cb37b99b 100644 --- a/core/java/android/app/smartspace/SmartspaceSessionId.java +++ b/core/java/android/app/smartspace/SmartspaceSessionId.java @@ -21,6 +21,7 @@ import android.annotation.Nullable; import android.annotation.SystemApi; import android.os.Parcel; import android.os.Parcelable; +import android.os.UserHandle; import java.util.Objects; @@ -36,21 +37,21 @@ public final class SmartspaceSessionId implements Parcelable { private final String mId; @NonNull - private final int mUserId; + private final UserHandle mUserHandle; /** * Creates a new id for a Smartspace session. * * @hide */ - public SmartspaceSessionId(@NonNull final String id, @NonNull final int userId) { + public SmartspaceSessionId(@NonNull final String id, @NonNull final UserHandle userHandle) { mId = id; - mUserId = userId; + mUserHandle = userHandle; } private SmartspaceSessionId(Parcel p) { mId = p.readString(); - mUserId = p.readInt(); + mUserHandle = p.readTypedObject(UserHandle.CREATOR); } /** @@ -65,8 +66,8 @@ public final class SmartspaceSessionId implements Parcelable { * Returns the userId associated with this sessionId. */ @NonNull - public int getUserId() { - return mUserId; + public UserHandle getUserHandle() { + return mUserHandle; } @Override @@ -74,20 +75,20 @@ public final class SmartspaceSessionId implements Parcelable { if (!getClass().equals(o != null ? o.getClass() : null)) return false; SmartspaceSessionId other = (SmartspaceSessionId) o; - return mId.equals(other.mId) && mUserId == other.mUserId; + return mId.equals(other.mId) && mUserHandle == other.mUserHandle; } @Override public String toString() { return "SmartspaceSessionId{" + "mId='" + mId + '\'' - + ", mUserId=" + mUserId + + ", mUserId=" + mUserHandle.getIdentifier() + '}'; } @Override public int hashCode() { - return Objects.hash(mId, mUserId); + return Objects.hash(mId, mUserHandle); } @Override @@ -98,7 +99,7 @@ public final class SmartspaceSessionId implements Parcelable { @Override public void writeToParcel(@NonNull Parcel dest, int flags) { dest.writeString(mId); - dest.writeInt(mUserId); + dest.writeTypedObject(this.mUserHandle, flags); } public static final @NonNull Creator<SmartspaceSessionId> CREATOR = diff --git a/core/java/android/app/smartspace/SmartspaceTarget.java b/core/java/android/app/smartspace/SmartspaceTarget.java index ce5040eb0a3e..8e9853575c31 100644 --- a/core/java/android/app/smartspace/SmartspaceTarget.java +++ b/core/java/android/app/smartspace/SmartspaceTarget.java @@ -15,6 +15,7 @@ */ package android.app.smartspace; +import android.annotation.CurrentTimeMillisLong; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; @@ -39,7 +40,7 @@ import java.util.Objects; * {@link SmartspaceAction} as their type because they can have associated actions. * * <p><b>NOTE: </b> - * If {@link mWidgetId} is set, it should be preferred over all other properties. + * If {@link mWidget} is set, it should be preferred over all other properties. * Else, if {@link mSliceUri} is set, it should be preferred over all other data properties. * Otherwise, the instance should be treated as a data object. * @@ -61,18 +62,17 @@ public final class SmartspaceTarget implements Parcelable { private final SmartspaceAction mBaseAction; /** A timestamp indicating when the card was created. */ - @NonNull + @CurrentTimeMillisLong private final long mCreationTimeMillis; /** * A timestamp indicating when the card should be removed from view, in case the service * disconnects or restarts. */ - @NonNull + @CurrentTimeMillisLong private final long mExpiryTimeMillis; /** A score assigned to a target. */ - @NonNull private final float mScore; /** A {@link List<SmartspaceAction>} containing all action chips. */ @@ -89,18 +89,15 @@ public final class SmartspaceTarget implements Parcelable { * @see FeatureType */ @FeatureType - @NonNull private final int mFeatureType; /** * Indicates whether the content is sensitive. Certain UI surfaces may choose to skip rendering * real content until the device is unlocked. */ - @NonNull private final boolean mSensitive; /** Indicating if the UI should show this target in its expanded state. */ - @NonNull private final boolean mShouldShowExpanded; /** A Notification key if the target was generated using a notification. */ @@ -115,7 +112,14 @@ public final class SmartspaceTarget implements Parcelable { @NonNull private final UserHandle mUserHandle; - /** Target Ids of other {@link SmartspaceTarget}s if they are associated with this target. */ + /** + * Target Id of other {@link SmartspaceTarget}s if it is associated with this target. This + * association is added to tell the UI that a card would be more useful if displayed with the + * associated smartspace target. This field is supposed to be taken as a suggestion and the + * association can be ignored based on the situation in the UI. It is possible to have a one way + * card association. In other words, Card B can be associated with Card A but not the other way + * around. + */ @Nullable private final String mAssociatedSmartspaceTargetId; @@ -125,7 +129,7 @@ public final class SmartspaceTarget implements Parcelable { /** {@link AppWidgetProviderInfo} if this target is a widget. */ @Nullable - private final AppWidgetProviderInfo mWidgetId; + private final AppWidgetProviderInfo mWidget; public static final int FEATURE_UNDEFINED = 0; public static final int FEATURE_WEATHER = 1; @@ -202,7 +206,7 @@ public final class SmartspaceTarget implements Parcelable { this.mUserHandle = in.readTypedObject(UserHandle.CREATOR); this.mAssociatedSmartspaceTargetId = in.readString(); this.mSliceUri = in.readTypedObject(Uri.CREATOR); - this.mWidgetId = in.readTypedObject(AppWidgetProviderInfo.CREATOR); + this.mWidget = in.readTypedObject(AppWidgetProviderInfo.CREATOR); } private SmartspaceTarget(String smartspaceTargetId, @@ -213,7 +217,7 @@ public final class SmartspaceTarget implements Parcelable { boolean shouldShowExpanded, String sourceNotificationKey, ComponentName componentName, UserHandle userHandle, String associatedSmartspaceTargetId, Uri sliceUri, - AppWidgetProviderInfo widgetId) { + AppWidgetProviderInfo widget) { mSmartspaceTargetId = smartspaceTargetId; mHeaderAction = headerAction; mBaseAction = baseAction; @@ -230,7 +234,7 @@ public final class SmartspaceTarget implements Parcelable { mUserHandle = userHandle; mAssociatedSmartspaceTargetId = associatedSmartspaceTargetId; mSliceUri = sliceUri; - mWidgetId = widgetId; + mWidget = widget; } /** @@ -260,7 +264,7 @@ public final class SmartspaceTarget implements Parcelable { /** * Returns the creation time of the target. */ - @NonNull + @CurrentTimeMillisLong public long getCreationTimeMillis() { return mCreationTimeMillis; } @@ -268,7 +272,7 @@ public final class SmartspaceTarget implements Parcelable { /** * Returns the expiry time of the target. */ - @NonNull + @CurrentTimeMillisLong public long getExpiryTimeMillis() { return mExpiryTimeMillis; } @@ -276,7 +280,6 @@ public final class SmartspaceTarget implements Parcelable { /** * Returns the score of the target. */ - @NonNull public float getScore() { return mScore; } @@ -300,7 +303,7 @@ public final class SmartspaceTarget implements Parcelable { /** * Returns the feature type of the target. */ - @NonNull + @FeatureType public int getFeatureType() { return mFeatureType; } @@ -308,7 +311,6 @@ public final class SmartspaceTarget implements Parcelable { /** * Returns whether the target is sensitive or not. */ - @NonNull public boolean isSensitive() { return mSensitive; } @@ -316,7 +318,6 @@ public final class SmartspaceTarget implements Parcelable { /** * Returns whether the target should be shown in expanded state. */ - @NonNull public boolean shouldShowExpanded() { return mShouldShowExpanded; } @@ -365,8 +366,8 @@ public final class SmartspaceTarget implements Parcelable { * Returns the AppWidgetProviderInfo, if the target is a widget. */ @Nullable - public AppWidgetProviderInfo getWidgetId() { - return mWidgetId; + public AppWidgetProviderInfo getWidget() { + return mWidget; } /** @@ -403,7 +404,7 @@ public final class SmartspaceTarget implements Parcelable { dest.writeTypedObject(this.mUserHandle, flags); dest.writeString(this.mAssociatedSmartspaceTargetId); dest.writeTypedObject(this.mSliceUri, flags); - dest.writeTypedObject(this.mWidgetId, flags); + dest.writeTypedObject(this.mWidget, flags); } @Override @@ -430,7 +431,7 @@ public final class SmartspaceTarget implements Parcelable { + ", mUserHandle=" + mUserHandle + ", mAssociatedSmartspaceTargetId='" + mAssociatedSmartspaceTargetId + '\'' + ", mSliceUri=" + mSliceUri - + ", mWidgetId=" + mWidgetId + + ", mWidget=" + mWidget + '}'; } @@ -456,7 +457,7 @@ public final class SmartspaceTarget implements Parcelable { && Objects.equals(mAssociatedSmartspaceTargetId, that.mAssociatedSmartspaceTargetId) && Objects.equals(mSliceUri, that.mSliceUri) - && Objects.equals(mWidgetId, that.mWidgetId); + && Objects.equals(mWidget, that.mWidget); } @Override @@ -464,7 +465,7 @@ public final class SmartspaceTarget implements Parcelable { return Objects.hash(mSmartspaceTargetId, mHeaderAction, mBaseAction, mCreationTimeMillis, mExpiryTimeMillis, mScore, mActionChips, mIconGrid, mFeatureType, mSensitive, mShouldShowExpanded, mSourceNotificationKey, mComponentName, mUserHandle, - mAssociatedSmartspaceTargetId, mSliceUri, mWidgetId); + mAssociatedSmartspaceTargetId, mSliceUri, mWidget); } /** @@ -490,7 +491,7 @@ public final class SmartspaceTarget implements Parcelable { private final UserHandle mUserHandle; private String mAssociatedSmartspaceTargetId; private Uri mSliceUri; - private AppWidgetProviderInfo mWidgetId; + private AppWidgetProviderInfo mWidget; /** * A builder for {@link SmartspaceTarget}. @@ -528,7 +529,7 @@ public final class SmartspaceTarget implements Parcelable { * Sets the creation time. */ @NonNull - public Builder setCreationTimeMillis(@NonNull long creationTimeMillis) { + public Builder setCreationTimeMillis(@CurrentTimeMillisLong long creationTimeMillis) { this.mCreationTimeMillis = creationTimeMillis; return this; } @@ -537,7 +538,7 @@ public final class SmartspaceTarget implements Parcelable { * Sets the expiration time. */ @NonNull - public Builder setExpiryTimeMillis(@NonNull long expiryTimeMillis) { + public Builder setExpiryTimeMillis(@CurrentTimeMillisLong long expiryTimeMillis) { this.mExpiryTimeMillis = expiryTimeMillis; return this; } @@ -546,7 +547,7 @@ public final class SmartspaceTarget implements Parcelable { * Sets the score. */ @NonNull - public Builder setScore(@NonNull float score) { + public Builder setScore(float score) { this.mScore = score; return this; } @@ -573,7 +574,7 @@ public final class SmartspaceTarget implements Parcelable { * Sets the feature type. */ @NonNull - public Builder setFeatureType(@NonNull int featureType) { + public Builder setFeatureType(int featureType) { this.mFeatureType = featureType; return this; } @@ -582,7 +583,7 @@ public final class SmartspaceTarget implements Parcelable { * Sets whether the contents are sensitive. */ @NonNull - public Builder setSensitive(@NonNull boolean sensitive) { + public Builder setSensitive(boolean sensitive) { this.mSensitive = sensitive; return this; } @@ -591,7 +592,7 @@ public final class SmartspaceTarget implements Parcelable { * Sets whether to show the card as expanded. */ @NonNull - public Builder setShouldShowExpanded(@NonNull boolean shouldShowExpanded) { + public Builder setShouldShowExpanded(boolean shouldShowExpanded) { this.mShouldShowExpanded = shouldShowExpanded; return this; } @@ -618,7 +619,7 @@ public final class SmartspaceTarget implements Parcelable { /** * Sets the slice uri. * - * <p><b>NOTE: </b> If {@link mWidgetId} is also set, {@link mSliceUri} should be ignored. + * <p><b>NOTE: </b> If {@link mWidget} is also set, {@link mSliceUri} should be ignored. */ @NonNull public Builder setSliceUri(@NonNull Uri sliceUri) { @@ -629,12 +630,12 @@ public final class SmartspaceTarget implements Parcelable { /** * Sets the widget id. * - * <p><b>NOTE: </b> If {@link mWidgetId} is set, all other @Nullable params should be + * <p><b>NOTE: </b> If {@link mWidget} is set, all other @Nullable params should be * ignored. */ @NonNull - public Builder setWidgetId(@NonNull AppWidgetProviderInfo widgetId) { - this.mWidgetId = widgetId; + public Builder setWidget(@NonNull AppWidgetProviderInfo widget) { + this.mWidget = widget; return this; } @@ -654,7 +655,7 @@ public final class SmartspaceTarget implements Parcelable { mHeaderAction, mBaseAction, mCreationTimeMillis, mExpiryTimeMillis, mScore, mActionChips, mIconGrid, mFeatureType, mSensitive, mShouldShowExpanded, mSourceNotificationKey, mComponentName, mUserHandle, - mAssociatedSmartspaceTargetId, mSliceUri, mWidgetId); + mAssociatedSmartspaceTargetId, mSliceUri, mWidget); } } } diff --git a/core/java/android/app/smartspace/SmartspaceTargetEvent.java b/core/java/android/app/smartspace/SmartspaceTargetEvent.java index 920b9fe6a34f..61f8723ca393 100644 --- a/core/java/android/app/smartspace/SmartspaceTargetEvent.java +++ b/core/java/android/app/smartspace/SmartspaceTargetEvent.java @@ -41,11 +41,11 @@ public final class SmartspaceTargetEvent implements Parcelable { /** * Smartspace target was brought into view. */ - public static final int EVENT_TARGET_IN_VIEW = 2; + public static final int EVENT_TARGET_SHOWN = 2; /** * Smartspace target went out of view. */ - public static final int EVENT_TARGET_OUT_OF_VIEW = 3; + public static final int EVENT_TARGET_HIDDEN = 3; /** * A dismiss action was issued by the user. */ @@ -57,11 +57,11 @@ public final class SmartspaceTargetEvent implements Parcelable { /** * The Ui surface came into view. */ - public static final int EVENT_UI_SURFACE_IN_VIEW = 6; + public static final int EVENT_UI_SURFACE_SHOWN = 6; /** * The Ui surface went out of view. */ - public static final int EVENT_UI_SURFACE_OUT_OF_VIEW = 7; + public static final int EVENT_UI_SURFACE_HIDDEN = 7; /** * @see Parcelable.Creator @@ -152,12 +152,12 @@ public final class SmartspaceTargetEvent implements Parcelable { */ @IntDef(prefix = {"EVENT_"}, value = { EVENT_TARGET_INTERACTION, - EVENT_TARGET_IN_VIEW, - EVENT_TARGET_OUT_OF_VIEW, + EVENT_TARGET_SHOWN, + EVENT_TARGET_HIDDEN, EVENT_TARGET_DISMISS, EVENT_TARGET_BLOCK, - EVENT_UI_SURFACE_IN_VIEW, - EVENT_UI_SURFACE_OUT_OF_VIEW + EVENT_UI_SURFACE_SHOWN, + EVENT_UI_SURFACE_HIDDEN }) @Retention(RetentionPolicy.SOURCE) public @interface EventType { diff --git a/core/java/android/app/usage/UsageStats.java b/core/java/android/app/usage/UsageStats.java index cda463408955..b723140e2361 100644 --- a/core/java/android/app/usage/UsageStats.java +++ b/core/java/android/app/usage/UsageStats.java @@ -31,6 +31,8 @@ import static android.app.usage.UsageEvents.Event.ROLLOVER_FOREGROUND_SERVICE; import static android.app.usage.UsageEvents.Event.USER_INTERACTION; import android.annotation.CurrentTimeMillisLong; +import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.SystemApi; import android.annotation.TestApi; import android.compat.annotation.UnsupportedAppUsage; @@ -760,4 +762,48 @@ public final class UsageStats implements Parcelable { return new UsageStats[size]; } }; + + /** @hide */ + // This class is used by the mainline test suite, so we have to keep these APIs around across + // releases. Consider making this class public to help external developers to write tests as + // well. + @TestApi + public static final class Builder { + private final UsageStats mUsageStats = new UsageStats(); + + @NonNull + public UsageStats build() { + return mUsageStats; + } + + @NonNull + public Builder setPackageName(@Nullable String packageName) { + mUsageStats.mPackageName = packageName; + return this; + } + + @NonNull + public Builder setFirstTimeStamp(long firstTimeStamp) { + mUsageStats.mBeginTimeStamp = firstTimeStamp; + return this; + } + + @NonNull + public Builder setLastTimeStamp(long lastTimeStamp) { + mUsageStats.mEndTimeStamp = lastTimeStamp; + return this; + } + + @NonNull + public Builder setTotalTimeInForeground(long totalTimeInForeground) { + mUsageStats.mTotalTimeInForeground = totalTimeInForeground; + return this; + } + + @NonNull + public Builder setLastTimeUsed(long lastTimeUsed) { + mUsageStats.mLastTimeUsed = lastTimeUsed; + return this; + } + } } diff --git a/core/java/android/bluetooth/BluetoothA2dpSink.java b/core/java/android/bluetooth/BluetoothA2dpSink.java index 6aba483b1515..280e8bc8402b 100755 --- a/core/java/android/bluetooth/BluetoothA2dpSink.java +++ b/core/java/android/bluetooth/BluetoothA2dpSink.java @@ -187,6 +187,8 @@ public final class BluetoothA2dpSink implements BluetoothProfile { * @hide */ @Override + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public List<BluetoothDevice> getConnectedDevices() { if (VDBG) log("getConnectedDevices()"); final IBluetoothA2dpSink service = getService(); @@ -208,6 +210,8 @@ public final class BluetoothA2dpSink implements BluetoothProfile { * @hide */ @Override + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) { if (VDBG) log("getDevicesMatchingStates()"); final IBluetoothA2dpSink service = getService(); @@ -229,6 +233,8 @@ public final class BluetoothA2dpSink implements BluetoothProfile { * @hide */ @Override + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getConnectionState(BluetoothDevice device) { if (VDBG) log("getState(" + device + ")"); final IBluetoothA2dpSink service = getService(); @@ -256,6 +262,8 @@ public final class BluetoothA2dpSink implements BluetoothProfile { * @hide */ @RequiresLegacyBluetoothPermission + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public BluetoothAudioConfig getAudioConfig(BluetoothDevice device) { if (VDBG) log("getAudioConfig(" + device + ")"); final IBluetoothA2dpSink service = getService(); diff --git a/core/java/android/bluetooth/BluetoothAvrcpController.java b/core/java/android/bluetooth/BluetoothAvrcpController.java index 887cf3f08b9d..5148d5b431d7 100644 --- a/core/java/android/bluetooth/BluetoothAvrcpController.java +++ b/core/java/android/bluetooth/BluetoothAvrcpController.java @@ -117,6 +117,8 @@ public final class BluetoothAvrcpController implements BluetoothProfile { * {@inheritDoc} */ @Override + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public List<BluetoothDevice> getConnectedDevices() { if (VDBG) log("getConnectedDevices()"); final IBluetoothAvrcpController service = @@ -137,6 +139,8 @@ public final class BluetoothAvrcpController implements BluetoothProfile { * {@inheritDoc} */ @Override + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public List<BluetoothDevice> getDevicesMatchingConnectionStates(int[] states) { if (VDBG) log("getDevicesMatchingStates()"); final IBluetoothAvrcpController service = @@ -157,6 +161,8 @@ public final class BluetoothAvrcpController implements BluetoothProfile { * {@inheritDoc} */ @Override + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getConnectionState(BluetoothDevice device) { if (VDBG) log("getState(" + device + ")"); final IBluetoothAvrcpController service = @@ -178,6 +184,8 @@ public final class BluetoothAvrcpController implements BluetoothProfile { * * @return the {@link BluetoothAvrcpPlayerSettings} or {@link null} if there is an error. */ + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public BluetoothAvrcpPlayerSettings getPlayerSettings(BluetoothDevice device) { if (DBG) Log.d(TAG, "getPlayerSettings"); BluetoothAvrcpPlayerSettings settings = null; @@ -198,6 +206,8 @@ public final class BluetoothAvrcpController implements BluetoothProfile { * Sets the player app setting for current player. * returns true in case setting is supported by remote, false otherwise */ + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean setPlayerApplicationSetting(BluetoothAvrcpPlayerSettings plAppSetting) { if (DBG) Log.d(TAG, "setPlayerApplicationSetting"); final IBluetoothAvrcpController service = @@ -218,6 +228,8 @@ public final class BluetoothAvrcpController implements BluetoothProfile { * Send Group Navigation Command to Remote. * possible keycode values: next_grp, previous_grp defined above */ + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public void sendGroupNavigationCmd(BluetoothDevice device, int keyCode, int keyState) { Log.d(TAG, "sendGroupNavigationCmd dev = " + device + " key " + keyCode + " State = " + keyState); diff --git a/core/java/android/bluetooth/BluetoothHeadsetClient.java b/core/java/android/bluetooth/BluetoothHeadsetClient.java index 5816500d2c37..eef42d1b2f34 100644 --- a/core/java/android/bluetooth/BluetoothHeadsetClient.java +++ b/core/java/android/bluetooth/BluetoothHeadsetClient.java @@ -1038,6 +1038,8 @@ public final class BluetoothHeadsetClient implements BluetoothProfile { * #EXTRA_AG_FEATURE_ATTACH_NUMBER_TO_VT}. This method invocation will fail silently when * feature is not supported.</p> */ + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean getLastVoiceTagNumber(BluetoothDevice device) { if (DBG) log("getLastVoiceTagNumber()"); final IBluetoothHeadsetClient service = @@ -1059,6 +1061,8 @@ public final class BluetoothHeadsetClient implements BluetoothProfile { * Note: This is an internal function and shouldn't be exposed */ @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getAudioState(BluetoothDevice device) { if (VDBG) log("getAudioState"); final IBluetoothHeadsetClient service = @@ -1083,6 +1087,8 @@ public final class BluetoothHeadsetClient implements BluetoothProfile { * @param allowed if routing is allowed to the device Note: This is an internal function and * shouldn't be exposed */ + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public void setAudioRouteAllowed(BluetoothDevice device, boolean allowed) { if (VDBG) log("setAudioRouteAllowed"); final IBluetoothHeadsetClient service = @@ -1106,6 +1112,8 @@ public final class BluetoothHeadsetClient implements BluetoothProfile { * @return whether the command succeeded Note: This is an internal function and shouldn't be * exposed */ + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public boolean getAudioRouteAllowed(BluetoothDevice device) { if (VDBG) log("getAudioRouteAllowed"); final IBluetoothHeadsetClient service = diff --git a/core/java/android/bluetooth/BluetoothHearingAid.java b/core/java/android/bluetooth/BluetoothHearingAid.java index 1fd779a17dbd..fa52eda8ea61 100644 --- a/core/java/android/bluetooth/BluetoothHearingAid.java +++ b/core/java/android/bluetooth/BluetoothHearingAid.java @@ -497,6 +497,8 @@ public final class BluetoothHearingAid implements BluetoothProfile { * @param volume Absolute volume to be set on remote * @hide */ + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public void setVolume(int volume) { if (DBG) Log.d(TAG, "setVolume(" + volume + ")"); @@ -556,6 +558,8 @@ public final class BluetoothHearingAid implements BluetoothProfile { * @hide */ @RequiresLegacyBluetoothPermission + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getDeviceSide(BluetoothDevice device) { if (VDBG) { log("getDeviceSide(" + device + ")"); @@ -582,6 +586,8 @@ public final class BluetoothHearingAid implements BluetoothProfile { * @hide */ @RequiresLegacyBluetoothPermission + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getDeviceMode(BluetoothDevice device) { if (VDBG) { log("getDeviceMode(" + device + ")"); diff --git a/core/java/android/bluetooth/BluetoothLeAudio.java b/core/java/android/bluetooth/BluetoothLeAudio.java index c12b1f77fb9e..462c7b7ede66 100644 --- a/core/java/android/bluetooth/BluetoothLeAudio.java +++ b/core/java/android/bluetooth/BluetoothLeAudio.java @@ -325,6 +325,8 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { */ @NonNull @RequiresLegacyBluetoothPermission + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public List<BluetoothDevice> getActiveDevices() { if (VDBG) log("getActiveDevices()"); try { @@ -348,6 +350,8 @@ public final class BluetoothLeAudio implements BluetoothProfile, AutoCloseable { * @hide */ @RequiresLegacyBluetoothPermission + @RequiresBluetoothConnectPermission + @RequiresPermission(android.Manifest.permission.BLUETOOTH_CONNECT) public int getGroupId(@NonNull BluetoothDevice device) { if (VDBG) log("getGroupId()"); try { diff --git a/core/java/android/bluetooth/le/BluetoothLeScanner.java b/core/java/android/bluetooth/le/BluetoothLeScanner.java index 09cd11d07590..f27f22b9af5c 100644 --- a/core/java/android/bluetooth/le/BluetoothLeScanner.java +++ b/core/java/android/bluetooth/le/BluetoothLeScanner.java @@ -442,6 +442,7 @@ public final class BluetoothLeScanner { } } + @RequiresPermission(android.Manifest.permission.BLUETOOTH_SCAN) public void stopLeScan() { synchronized (this) { if (mScannerId <= 0) { @@ -458,6 +459,7 @@ public final class BluetoothLeScanner { } } + @RequiresPermission(android.Manifest.permission.BLUETOOTH_SCAN) void flushPendingBatchResults() { synchronized (this) { if (mScannerId <= 0) { @@ -588,6 +590,7 @@ public final class BluetoothLeScanner { } } + @SuppressLint("AndroidFrameworkBluetoothPermission") private void postCallbackError(final ScanCallback callback, final int errorCode) { mHandler.post(new Runnable() { @Override diff --git a/core/java/android/bluetooth/le/ScanSettings.java b/core/java/android/bluetooth/le/ScanSettings.java index 368d1eecade4..1aa7cb5111ce 100644 --- a/core/java/android/bluetooth/le/ScanSettings.java +++ b/core/java/android/bluetooth/le/ScanSettings.java @@ -345,12 +345,14 @@ public final class ScanSettings implements Parcelable { } /** - * Set report delay timestamp for Bluetooth LE scan. + * Set report delay timestamp for Bluetooth LE scan. If set to 0, you will be notified of + * scan results immediately. If > 0, scan results are queued up and delivered after the + * requested delay or 5000 milliseconds (whichever is higher). Note scan results may be + * delivered sooner if the internal buffers fill up. * - * @param reportDelayMillis Delay of report in milliseconds. Set to 0 to be notified of - * results immediately. Values > 0 causes the scan results to be queued up and delivered - * after the requested delay or when the internal buffers fill up. - * @throws IllegalArgumentException If {@code reportDelayMillis} < 0. + * @param reportDelayMillis how frequently scan results should be delivered in + * milliseconds + * @throws IllegalArgumentException if {@code reportDelayMillis} < 0 */ public Builder setReportDelay(long reportDelayMillis) { if (reportDelayMillis < 0) { diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index f8d407db07a5..71cd6f1ec49c 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -2829,55 +2829,6 @@ public class Intent implements Parcelable, Cloneable { public static final String ACTION_MY_PACKAGE_UNSUSPENDED = "android.intent.action.MY_PACKAGE_UNSUSPENDED"; /** - * Broadcast Action: Sent to indicate that the package becomes startable. - * The intent will have the following extra values: - * <ul> - * <li> {@link #EXTRA_UID} containing the integer uid assigned to the package. </li> - * <li> {@link #EXTRA_PACKAGE_NAME} containing the package name. </li> - * </li> - * </ul> - * - * <p class="note">This is a protected intent that can only be sent by the system. - * @hide - */ - @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) - public static final String ACTION_PACKAGE_STARTABLE = "android.intent.action.PACKAGE_STARTABLE"; - - /** - * Broadcast Action: Sent to indicate that the package becomes unstartable. - * The intent will have the following extra values: - * <ul> - * <li> {@link #EXTRA_UID} containing the integer uid assigned to the package. </li> - * <li> {@link #EXTRA_PACKAGE_NAME} containing the package name. </li> - * <li> {@link #EXTRA_UNSTARTABLE_REASON} containing the integer indicating the reason for - * the state change, - * @see PackageManager.UnstartableReason - * </li> - * </ul> - * - * <p class="note">This is a protected intent that can only be sent by the system. - * @hide - */ - @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) - public static final String ACTION_PACKAGE_UNSTARTABLE = - "android.intent.action.PACKAGE_UNSTARTABLE"; - - /** - * Broadcast Action: Sent to indicate that the package is fully loaded. - * <ul> - * <li> {@link #EXTRA_UID} containing the integer uid assigned to the package. </li> - * <li> {@link #EXTRA_PACKAGE_NAME} containing the package name. </li> - * </li> - * </ul> - * - * <p class="note">This is a protected intent that can only be sent by the system. - * @hide - */ - @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION) - public static final String ACTION_PACKAGE_FULLY_LOADED = - "android.intent.action.PACKAGE_FULLY_LOADED"; - - /** * Broadcast Action: A user ID has been removed from the system. The user * ID number is stored in the extra data under {@link #EXTRA_UID}. * @@ -5368,8 +5319,8 @@ public class Intent implements Parcelable, Cloneable { public static final String EXTRA_ATTRIBUTION_TAGS = "android.intent.extra.ATTRIBUTION_TAGS"; /** - * A long representing the start timestamp (in millis) of the permission usage when used with - * {@link #ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD} + * A long representing the start timestamp (epoch time in millis) of the permission usage + * when used with {@link #ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD} * * @hide */ @@ -5377,8 +5328,8 @@ public class Intent implements Parcelable, Cloneable { public static final String EXTRA_START_TIME = "android.intent.extra.START_TIME"; /** - * A long representing the end timestamp (in millis) of the permission usage when used with - * {@link #ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD} + * A long representing the end timestamp (epoch time in millis) of the permission usage when + * used with {@link #ACTION_VIEW_PERMISSION_USAGE_FOR_PERIOD} * * @hide */ @@ -6171,13 +6122,6 @@ public class Intent implements Parcelable, Cloneable { */ public static final String EXTRA_LOCUS_ID = "android.intent.extra.LOCUS_ID"; - /** - * Intent extra: the reason that the package associated with this intent has become unstartable. - * - * <p>Type: String - */ - public static final String EXTRA_UNSTARTABLE_REASON = "android.intent.extra.UNSTARTABLE_REASON"; - // --------------------------------------------------------------------- // --------------------------------------------------------------------- // Intent flags (see mFlags variable). diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java index fa9142ca9449..fc0e214a645f 100644 --- a/core/java/android/content/pm/ActivityInfo.java +++ b/core/java/android/content/pm/ActivityInfo.java @@ -961,6 +961,29 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { public @interface SizeChangesSupportMode {} /** + * This change id forces the packages it is applied to never have Display API sandboxing + * applied for a letterbox or SCM activity. The Display APIs will continue to provide + * DisplayArea bounds. + * @hide + */ + @ChangeId + @Overridable + @Disabled + @TestApi + public static final long NEVER_SANDBOX_DISPLAY_APIS = 184838306L; // buganizer id + + /** + * This change id forces the packages it is applied to always have Display API sandboxing + * applied, regardless of windowing mode. The Display APIs will always provide the app bounds. + * @hide + */ + @ChangeId + @Overridable + @Disabled + @TestApi + public static final long ALWAYS_SANDBOX_DISPLAY_APIS = 185004937L; // buganizer id + + /** * This change id is the gatekeeper for all treatments that force a given min aspect ratio. * Enabling this change will allow the following min aspect ratio treatments to be applied: * OVERRIDE_MIN_ASPECT_RATIO_MEDIUM @@ -1325,6 +1348,26 @@ public class ActivityInfo extends ComponentInfo implements Parcelable { return SIZE_CHANGES_UNSUPPORTED_METADATA; } + /** + * Returns if the activity should never be sandboxed to the activity window bounds. + * @hide + */ + public boolean neverSandboxDisplayApis() { + return CompatChanges.isChangeEnabled(NEVER_SANDBOX_DISPLAY_APIS, + applicationInfo.packageName, + UserHandle.getUserHandleForUid(applicationInfo.uid)); + } + + /** + * Returns if the activity should always be sandboxed to the activity window bounds. + * @hide + */ + public boolean alwaysSandboxDisplayApis() { + return CompatChanges.isChangeEnabled(ALWAYS_SANDBOX_DISPLAY_APIS, + applicationInfo.packageName, + UserHandle.getUserHandleForUid(applicationInfo.uid)); + } + /** @hide */ public void setMaxAspectRatio(float maxAspectRatio) { this.mMaxAspectRatio = maxAspectRatio; diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java index 6ad204ec31ea..9934b2a0904c 100644 --- a/core/java/android/content/pm/ApplicationInfo.java +++ b/core/java/android/content/pm/ApplicationInfo.java @@ -2130,6 +2130,7 @@ public class ApplicationInfo extends PackageItemInfo implements Parcelable { * * @hide */ + @SuppressWarnings("AutoBoxing") @SystemApi @Nullable public Boolean hasRequestRawExternalStorageAccess() { diff --git a/core/java/android/content/pm/IDataLoaderStatusListener.aidl b/core/java/android/content/pm/IDataLoaderStatusListener.aidl index 79b70f2bd5ee..9d8d0a4a1661 100644 --- a/core/java/android/content/pm/IDataLoaderStatusListener.aidl +++ b/core/java/android/content/pm/IDataLoaderStatusListener.aidl @@ -52,30 +52,7 @@ oneway interface IDataLoaderStatusListener { * fail and all retry limits are exceeded. */ const int DATA_LOADER_UNRECOVERABLE = 9; - /** There are no known issues with the data stream. */ - const int STREAM_HEALTHY = 0; - - /** There are issues with the current transport layer (network, adb connection, etc.) that may - * recover automatically or could eventually require user intervention. */ - const int STREAM_TRANSPORT_ERROR = 1; - - /** Integrity failures in the data stream, this could be due to file corruption, decompression - * issues or similar. This indicates a likely unrecoverable error. */ - const int STREAM_INTEGRITY_ERROR = 2; - - /** There are issues with the source of the data, e.g., backend availability issues, account - * issues. This indicates a potentially recoverable error, but one that may take a long time to - * resolve. */ - const int STREAM_SOURCE_ERROR = 3; - - /** The device or app is low on storage and cannot complete the stream as a result. - * A subsequent page miss resulting in app failure will transition app to unstartable state. */ - const int STREAM_STORAGE_ERROR = 4; - /** Data loader status callback */ void onStatusChanged(in int dataLoaderId, in int status); - - /** Callback to report streaming health status of a specific data loader */ - void reportStreamHealth(in int dataLoaderId, in int streamStatus); } diff --git a/core/java/android/content/pm/IncrementalStatesInfo.java b/core/java/android/content/pm/IncrementalStatesInfo.java index 6e91c19affc2..0393d34ba988 100644 --- a/core/java/android/content/pm/IncrementalStatesInfo.java +++ b/core/java/android/content/pm/IncrementalStatesInfo.java @@ -24,26 +24,19 @@ import android.os.Parcelable; * @hide */ public class IncrementalStatesInfo implements Parcelable { - private boolean mIsStartable; private boolean mIsLoading; private float mProgress; - public IncrementalStatesInfo(boolean isStartable, boolean isLoading, float progress) { - mIsStartable = isStartable; + public IncrementalStatesInfo(boolean isLoading, float progress) { mIsLoading = isLoading; mProgress = progress; } private IncrementalStatesInfo(Parcel source) { - mIsStartable = source.readBoolean(); mIsLoading = source.readBoolean(); mProgress = source.readFloat(); } - public boolean isStartable() { - return mIsStartable; - } - public boolean isLoading() { return mIsLoading; } @@ -59,7 +52,6 @@ public class IncrementalStatesInfo implements Parcelable { @Override public void writeToParcel(Parcel dest, int flags) { - dest.writeBoolean(mIsStartable); dest.writeBoolean(mIsLoading); dest.writeFloat(mProgress); } diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java index 8b9b73683575..a8a5837385cb 100644 --- a/core/java/android/content/pm/LauncherApps.java +++ b/core/java/android/content/pm/LauncherApps.java @@ -225,7 +225,6 @@ public class LauncherApps { * Indicates that a package was modified in the specified profile. * This can happen, for example, when the package is updated or when * one or more components are enabled or disabled. - * It can also happen if package state has changed, i.e., package becomes unstartable. * * @param packageName The name of the package that has changed. * @param user The UserHandle of the profile that generated the change. diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java index 5157e08deb34..85830ed125c0 100644 --- a/core/java/android/content/pm/PackageInstaller.java +++ b/core/java/android/content/pm/PackageInstaller.java @@ -1987,6 +1987,14 @@ public class PackageInstaller { } /** + * @hide + */ + @TestApi + public void setInstallFlagAllowTest() { + installFlags |= PackageManager.INSTALL_ALLOW_TEST; + } + + /** * Set the installer package for the app. * * By default this is the app that created the {@link PackageInstaller} object. diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index bba2fd09e712..67ecb7cb1b1f 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -4370,39 +4370,6 @@ public abstract class PackageManager { public static final int SYSTEM_APP_STATE_UNINSTALLED = 3; /** - * Reasons for why a package is unstartable. - * @hide - */ - @IntDef({UNSTARTABLE_REASON_UNKNOWN, - UNSTARTABLE_REASON_CONNECTION_ERROR, - UNSTARTABLE_REASON_INSUFFICIENT_STORAGE - }) - @Retention(RetentionPolicy.SOURCE) - public @interface UnstartableReason {} - - /** - * Unstartable state with no root cause specified. E.g., data loader seeing missing pages but - * unclear about the cause. This corresponds to a generic alert window shown to the user when - * the user attempts to launch the app. - * @hide - */ - public static final int UNSTARTABLE_REASON_UNKNOWN = 0; - - /** - * Unstartable state due to connection issues that interrupt package loading. - * This corresponds to an alert window shown to the user indicating connection errors. - * @hide - */ - public static final int UNSTARTABLE_REASON_CONNECTION_ERROR = 1; - - /** - * Unstartable state after encountering storage limitations. - * This corresponds to an alert window indicating limited storage. - * @hide - */ - public static final int UNSTARTABLE_REASON_INSUFFICIENT_STORAGE = 2; - - /** * A manifest property to control app's participation in {@code adb backup}. Should only * be used by system / privileged apps. * @@ -7775,6 +7742,9 @@ public abstract class PackageManager { * {@link #SYSTEM_APP_STATE_HIDDEN_UNTIL_INSTALLED_VISIBLE} or its installation state (via * {@link #SYSTEM_APP_STATE_INSTALLED} and {@link #SYSTEM_APP_STATE_UNINSTALLED}. * + * This API may only be called from {@link android.os.Process#SYSTEM_UID} or + * {@link android.os.Process#PHONE_UID}. + * * @param packageName Package name of the app. * @param state State of the app. * @hide diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index f03da7cd390b..4b8e37c56061 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -819,10 +819,9 @@ public class InputMethodService extends AbstractInputMethodService { if (dispatchOnShowInputRequested(flags, false)) { showWindow(true); applyVisibilityInInsetsConsumerIfNecessary(true /* setVisible */); - } else { - // If user uses hard keyboard, IME button should always be shown. - setImeWindowStatus(mapToImeWindowStatus(), mBackDisposition); } + setImeWindowStatus(mapToImeWindowStatus(), mBackDisposition); + final boolean isVisible = isInputViewShown(); final boolean visibilityChanged = isVisible != wasVisible; if (resultReceiver != null) { diff --git a/core/java/android/net/NetworkIdentity.java b/core/java/android/net/NetworkIdentity.java index 1eef7d9a5337..3bde6fa6913d 100644 --- a/core/java/android/net/NetworkIdentity.java +++ b/core/java/android/net/NetworkIdentity.java @@ -186,19 +186,19 @@ public class NetworkIdentity implements Comparable<NetworkIdentity> { */ public static NetworkIdentity buildNetworkIdentity(Context context, NetworkStateSnapshot snapshot, boolean defaultNetwork, @NetworkType int subType) { - final int legacyType = snapshot.legacyType; + final int legacyType = snapshot.getLegacyType(); - final String subscriberId = snapshot.subscriberId; + final String subscriberId = snapshot.getSubscriberId(); String networkId = null; - boolean roaming = !snapshot.networkCapabilities.hasCapability( + boolean roaming = !snapshot.getNetworkCapabilities().hasCapability( NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING); - boolean metered = !snapshot.networkCapabilities.hasCapability( + boolean metered = !snapshot.getNetworkCapabilities().hasCapability( NetworkCapabilities.NET_CAPABILITY_NOT_METERED); - final int oemManaged = getOemBitfield(snapshot.networkCapabilities); + final int oemManaged = getOemBitfield(snapshot.getNetworkCapabilities()); if (legacyType == TYPE_WIFI) { - networkId = snapshot.networkCapabilities.getSsid(); + networkId = snapshot.getNetworkCapabilities().getSsid(); if (networkId == null) { final WifiManager wifi = context.getSystemService(WifiManager.class); final WifiInfo info = wifi.getConnectionInfo(); diff --git a/core/java/android/net/NetworkStateSnapshot.java b/core/java/android/net/NetworkStateSnapshot.java index 0d26c2de8698..9df861a6ffdc 100644 --- a/core/java/android/net/NetworkStateSnapshot.java +++ b/core/java/android/net/NetworkStateSnapshot.java @@ -37,47 +37,76 @@ import java.util.Objects; public final class NetworkStateSnapshot implements Parcelable { /** The network associated with this snapshot. */ @NonNull - public final Network network; + private final Network mNetwork; /** The {@link NetworkCapabilities} of the network associated with this snapshot. */ @NonNull - public final NetworkCapabilities networkCapabilities; + private final NetworkCapabilities mNetworkCapabilities; /** The {@link LinkProperties} of the network associated with this snapshot. */ @NonNull - public final LinkProperties linkProperties; + private final LinkProperties mLinkProperties; /** * The Subscriber Id of the network associated with this snapshot. See * {@link android.telephony.TelephonyManager#getSubscriberId()}. */ @Nullable - public final String subscriberId; + private final String mSubscriberId; /** * The legacy type of the network associated with this snapshot. See * {@code ConnectivityManager#TYPE_*}. */ - public final int legacyType; + private final int mLegacyType; public NetworkStateSnapshot(@NonNull Network network, @NonNull NetworkCapabilities networkCapabilities, @NonNull LinkProperties linkProperties, @Nullable String subscriberId, int legacyType) { - this.network = Objects.requireNonNull(network); - this.networkCapabilities = Objects.requireNonNull(networkCapabilities); - this.linkProperties = Objects.requireNonNull(linkProperties); - this.subscriberId = subscriberId; - this.legacyType = legacyType; + mNetwork = Objects.requireNonNull(network); + mNetworkCapabilities = Objects.requireNonNull(networkCapabilities); + mLinkProperties = Objects.requireNonNull(linkProperties); + mSubscriberId = subscriberId; + mLegacyType = legacyType; } /** @hide */ public NetworkStateSnapshot(@NonNull Parcel in) { - network = in.readParcelable(null); - networkCapabilities = in.readParcelable(null); - linkProperties = in.readParcelable(null); - subscriberId = in.readString(); - legacyType = in.readInt(); + mNetwork = in.readParcelable(null); + mNetworkCapabilities = in.readParcelable(null); + mLinkProperties = in.readParcelable(null); + mSubscriberId = in.readString(); + mLegacyType = in.readInt(); + } + + /** Get the network associated with this snapshot */ + @NonNull + public Network getNetwork() { + return mNetwork; + } + + /** Get {@link NetworkCapabilities} of the network associated with this snapshot. */ + @NonNull + public NetworkCapabilities getNetworkCapabilities() { + return mNetworkCapabilities; + } + + /** Get the {@link LinkProperties} of the network associated with this snapshot. */ + @NonNull + public LinkProperties getLinkProperties() { + return mLinkProperties; + } + + /** Get the Subscriber Id of the network associated with this snapshot. */ + @Nullable + public String getSubscriberId() { + return mSubscriberId; + } + + /** Get the legacy type of the network associated with this snapshot. */ + public int getLegacyType() { + return mLegacyType; } @Override @@ -87,11 +116,11 @@ public final class NetworkStateSnapshot implements Parcelable { @Override public void writeToParcel(@NonNull Parcel out, int flags) { - out.writeParcelable(network, flags); - out.writeParcelable(networkCapabilities, flags); - out.writeParcelable(linkProperties, flags); - out.writeString(subscriberId); - out.writeInt(legacyType); + out.writeParcelable(mNetwork, flags); + out.writeParcelable(mNetworkCapabilities, flags); + out.writeParcelable(mLinkProperties, flags); + out.writeString(mSubscriberId); + out.writeInt(mLegacyType); } @NonNull @@ -115,26 +144,27 @@ public final class NetworkStateSnapshot implements Parcelable { if (this == o) return true; if (!(o instanceof NetworkStateSnapshot)) return false; NetworkStateSnapshot that = (NetworkStateSnapshot) o; - return legacyType == that.legacyType - && Objects.equals(network, that.network) - && Objects.equals(networkCapabilities, that.networkCapabilities) - && Objects.equals(linkProperties, that.linkProperties) - && Objects.equals(subscriberId, that.subscriberId); + return mLegacyType == that.mLegacyType + && Objects.equals(mNetwork, that.mNetwork) + && Objects.equals(mNetworkCapabilities, that.mNetworkCapabilities) + && Objects.equals(mLinkProperties, that.mLinkProperties) + && Objects.equals(mSubscriberId, that.mSubscriberId); } @Override public int hashCode() { - return Objects.hash(network, networkCapabilities, linkProperties, subscriberId, legacyType); + return Objects.hash(mNetwork, + mNetworkCapabilities, mLinkProperties, mSubscriberId, mLegacyType); } @Override public String toString() { return "NetworkStateSnapshot{" - + "network=" + network - + ", networkCapabilities=" + networkCapabilities - + ", linkProperties=" + linkProperties - + ", subscriberId='" + NetworkIdentityUtils.scrubSubscriberId(subscriberId) + '\'' - + ", legacyType=" + legacyType + + "network=" + mNetwork + + ", networkCapabilities=" + mNetworkCapabilities + + ", linkProperties=" + mLinkProperties + + ", subscriberId='" + NetworkIdentityUtils.scrubSubscriberId(mSubscriberId) + '\'' + + ", legacyType=" + mLegacyType + '}'; } } diff --git a/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java b/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java index 9d3462cb0b2e..8950c4bf2089 100644 --- a/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java +++ b/core/java/android/net/vcn/persistablebundleutils/IkeSessionParamsUtils.java @@ -83,7 +83,7 @@ public final class IkeSessionParamsUtils { /** Serializes an IkeSessionParams to a PersistableBundle. */ @NonNull public static PersistableBundle toPersistableBundle(@NonNull IkeSessionParams params) { - if (params.getConfiguredNetwork() != null || params.getIke3gppExtension() != null) { + if (params.getNetwork() != null || params.getIke3gppExtension() != null) { throw new IllegalStateException( "Cannot convert a IkeSessionParams with a caller configured network or with" + " 3GPP extension enabled"); diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java index c47fc576ebe9..043a22b6e311 100644 --- a/core/java/android/os/BatteryStats.java +++ b/core/java/android/os/BatteryStats.java @@ -21,6 +21,7 @@ import static android.os.BatteryStatsManager.NUM_WIFI_STATES; import static android.os.BatteryStatsManager.NUM_WIFI_SUPPL_STATES; import android.annotation.IntDef; +import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; import android.app.job.JobParameters; @@ -2622,6 +2623,15 @@ public abstract class BatteryStats implements Parcelable { */ public abstract @Nullable long[] getCustomConsumerMeasuredBatteryConsumptionUC(); + /** + * Returns the names of all {@link android.hardware.power.stats.EnergyConsumer}'s + * of (custom) energy consumer type + * {@link android.hardware.power.stats.EnergyConsumerType#OTHER}). + * + * {@hide} + */ + public abstract @NonNull String[] getCustomEnergyConsumerNames(); + public static final BitDescription[] HISTORY_STATE_DESCRIPTIONS = new BitDescription[] { new BitDescription(HistoryItem.STATE_CPU_RUNNING_FLAG, "running", "r"), new BitDescription(HistoryItem.STATE_WAKE_LOCK_FLAG, "wake_lock", "w"), diff --git a/core/java/android/os/CountDownTimer.java b/core/java/android/os/CountDownTimer.java index c7bf0fd6ba49..51faa855727e 100644 --- a/core/java/android/os/CountDownTimer.java +++ b/core/java/android/os/CountDownTimer.java @@ -22,7 +22,22 @@ package android.os; * * Example of showing a 30 second countdown in a text field: * - * <pre class="prettyprint"> + * <div> + * <div class="ds-selector-tabs"><section><h3 id="kotlin">Kotlin</h3> + * <pre class="prettyprint lang-kotlin"> + * object : CountDownTimer(30000, 1000) { + * + * override fun onTick(millisUntilFinished: Long) { + * mTextField.setText("seconds remaining: " + millisUntilFinished / 1000) + * } + * + * override fun onFinish() { + * mTextField.setText("done!") + * } + * }.start() + * </pre> + * </section><section><h3 id="java">Java</h3> + * <pre class="prettyprint lang-java"> * new CountDownTimer(30000, 1000) { * * public void onTick(long millisUntilFinished) { @@ -32,8 +47,8 @@ package android.os; * public void onFinish() { * mTextField.setText("done!"); * } - * }.start(); - * </pre> + * }.start(); + * </pre></section></div></div> * * The calls to {@link #onTick(long)} are synchronized to this object so that * one call to {@link #onTick(long)} won't ever occur before the previous diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java index e3b13f4f9f17..b8bb353a1c2f 100644 --- a/core/java/android/os/Debug.java +++ b/core/java/android/os/Debug.java @@ -623,7 +623,7 @@ public final class Debug * </tr> * <tr> * <td>summary.total-pss</td> - * <td>Total PPS memory usage in kB.</td> + * <td>Total PSS memory usage in kB.</td> * <td>{@code 1442}</td> * <td>23</td> * </tr> diff --git a/core/java/android/os/Parcelable.java b/core/java/android/os/Parcelable.java index 7a624e1da26c..a537c98fc497 100644 --- a/core/java/android/os/Parcelable.java +++ b/core/java/android/os/Parcelable.java @@ -27,10 +27,39 @@ import java.lang.annotation.RetentionPolicy; * and restored from a {@link Parcel}. Classes implementing the Parcelable * interface must also have a non-null static field called <code>CREATOR</code> * of a type that implements the {@link Parcelable.Creator} interface. - * + * * <p>A typical implementation of Parcelable is:</p> - * - * <pre> + * + * <div> + * <div class="ds-selector-tabs"><section><h3 id="kotlin">Kotlin</h3> + * <pre class="prettyprint lang-kotlin"> + * class MyParcelable private constructor(`in`: Parcel) : Parcelable { + * private val mData: Int = `in`.readInt() + * + * override fun describeContents(): Int { + * return 0 + * } + * + * override fun writeToParcel(out: Parcel, flags: Int) { + * out.writeInt(mData) + * } + * + * companion object { + * val CREATOR: Parcelable.Creator<MyParcelable?> + * = object : Parcelable.Creator<MyParcelable?> { + * override fun createFromParcel(`in`: Parcel): MyParcelable? { + * return MyParcelable(`in`) + * } + * + * override fun newArray(size: Int): Array<MyParcelable?> { + * return arrayOfNulls(size) + * } + * } + * } + * } + * </pre> + * </section><section><h3 id="java">Java</h3> + * <pre class="prettyprint lang-java"> * public class MyParcelable implements Parcelable { * private int mData; * @@ -52,11 +81,11 @@ import java.lang.annotation.RetentionPolicy; * return new MyParcelable[size]; * } * }; - * + * * private MyParcelable(Parcel in) { * mData = in.readInt(); * } - * }</pre> + * }</pre></section></div></div> */ public interface Parcelable { /** @hide */ diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java index b474d7c95996..051447f9219b 100644 --- a/core/java/android/os/RecoverySystem.java +++ b/core/java/android/os/RecoverySystem.java @@ -1423,8 +1423,8 @@ public class RecoverySystem { private boolean requestLskf(String packageName, IntentSender sender) throws IOException { try { return mService.requestLskf(packageName, sender); - } catch (RemoteException e) { - throw new IOException("could request LSKF capture"); + } catch (RemoteException | SecurityException e) { + throw new IOException("could not request LSKF capture", e); } } @@ -1437,8 +1437,8 @@ public class RecoverySystem { private boolean clearLskf(String packageName) throws IOException { try { return mService.clearLskf(packageName); - } catch (RemoteException e) { - throw new IOException("could not clear LSKF"); + } catch (RemoteException | SecurityException e) { + throw new IOException("could not clear LSKF", e); } } @@ -1452,8 +1452,8 @@ public class RecoverySystem { private boolean isLskfCaptured(String packageName) throws IOException { try { return mService.isLskfCaptured(packageName); - } catch (RemoteException e) { - throw new IOException("could not get LSKF capture state"); + } catch (RemoteException | SecurityException e) { + throw new IOException("could not get LSKF capture state", e); } } @@ -1465,12 +1465,11 @@ public class RecoverySystem { boolean slotSwitch) throws IOException { try { return mService.rebootWithLskf(packageName, reason, slotSwitch); - } catch (RemoteException e) { - throw new IOException("could not reboot for update"); + } catch (RemoteException | SecurityException e) { + throw new IOException("could not reboot for update", e); } } - /** * Calls the recovery system service to reboot and apply update. This is the legacy API and * expects a slot switch for A/B devices. @@ -1480,8 +1479,8 @@ public class RecoverySystem { String reason) throws IOException { try { return mService.rebootWithLskfAssumeSlotSwitch(packageName, reason); - } catch (RemoteException e) { - throw new IOException("could not reboot for update"); + } catch (RemoteException | RuntimeException e) { + throw new IOException("could not reboot for update", e); } } diff --git a/core/java/android/os/incremental/IIncrementalService.aidl b/core/java/android/os/incremental/IIncrementalService.aidl index ba6fc6e841b0..fe3197a98bae 100644 --- a/core/java/android/os/incremental/IIncrementalService.aidl +++ b/core/java/android/os/incremental/IIncrementalService.aidl @@ -163,16 +163,6 @@ interface IIncrementalService { boolean unregisterLoadingProgressListener(int storageId); /** - * Register storage health status listener. - */ - boolean registerStorageHealthListener(int storageId, in StorageHealthCheckParams params, in IStorageHealthListener listener); - - /** - * Register storage health status listener. - */ - void unregisterStorageHealthListener(int storageId); - - /** * Metrics key for the duration in milliseconds between now and the oldest pending read. The value is a long. */ const @utf8InCpp String METRICS_MILLIS_SINCE_OLDEST_PENDING_READ = "millisSinceOldestPendingRead"; diff --git a/core/java/android/os/incremental/IStorageHealthListener.aidl b/core/java/android/os/incremental/IStorageHealthListener.aidl index c71e73f9ec8e..dc533a0e4778 100644 --- a/core/java/android/os/incremental/IStorageHealthListener.aidl +++ b/core/java/android/os/incremental/IStorageHealthListener.aidl @@ -29,12 +29,6 @@ oneway interface IStorageHealthListener { /** There are reads pending for params.unhealthyTimeoutMs, * marking storage as unhealthy due to unknown issues. */ const int HEALTH_STATUS_UNHEALTHY = 3; - /** There are reads pending for params.unhealthyTimeoutMs, - * due to data transportation issues. */ - const int HEALTH_STATUS_UNHEALTHY_TRANSPORT = 4; - /** There are reads pending for params.unhealthyTimeoutMs, - * due to limited storage space. */ - const int HEALTH_STATUS_UNHEALTHY_STORAGE = 5; /** Health status callback. */ void onHealthStatus(in int storageId, in int status); diff --git a/core/java/android/os/incremental/IncrementalManager.java b/core/java/android/os/incremental/IncrementalManager.java index 7fb9ae0d86cc..9c8ee562849c 100644 --- a/core/java/android/os/incremental/IncrementalManager.java +++ b/core/java/android/os/incremental/IncrementalManager.java @@ -294,7 +294,6 @@ public final class IncrementalManager { return; } mLoadingProgressCallbacks.cleanUpCallbacks(storage); - unregisterHealthListener(codePath); storage.unBind(codePath); } catch (IOException e) { Slog.w(TAG, "Failed to remove code path", e); @@ -397,38 +396,6 @@ public final class IncrementalManager { } /** - * Specify the health check params and listener for listening to Incremental Storage health - * status changes. Notice that this will overwrite the previously registered listener. - * @param codePath Path of the installed package. This path is on an Incremental Storage. - * @param healthCheckParams The params for health state change timeouts. - * @param listener To report health status change. - * @return True if listener was successfully registered. - */ - public boolean registerHealthListener(@NonNull String codePath, - @NonNull StorageHealthCheckParams healthCheckParams, - @NonNull IStorageHealthListener.Stub listener) { - final IncrementalStorage storage = openStorage(codePath); - if (storage == null) { - // storage does not exist, package not installed - return false; - } - return storage.registerStorageHealthListener(healthCheckParams, listener); - } - - /** - * Stop listening to health status changes on an Incremental Storage. - * @param codePath Path of the installed package. This path is on an Incremental Storage. - */ - public void unregisterHealthListener(@NonNull String codePath) { - final IncrementalStorage storage = openStorage(codePath); - if (storage == null) { - // storage does not exist, package not installed - return; - } - storage.unregisterStorageHealthListener(); - } - - /** * Returns the metrics of an Incremental Storage. */ public IncrementalMetrics getMetrics(@NonNull String codePath) { diff --git a/core/java/android/os/incremental/IncrementalStorage.java b/core/java/android/os/incremental/IncrementalStorage.java index c19e29f9cdd6..4d46325d838c 100644 --- a/core/java/android/os/incremental/IncrementalStorage.java +++ b/core/java/android/os/incremental/IncrementalStorage.java @@ -589,33 +589,6 @@ public final class IncrementalStorage { } /** - * Register to listen to the status changes of the storage health. - * @param healthCheckParams Params to specify status change timeouts. - * @param listener To report health status change from Incremental Service to the caller. - */ - public boolean registerStorageHealthListener(StorageHealthCheckParams healthCheckParams, - IStorageHealthListener listener) { - try { - return mService.registerStorageHealthListener(mId, healthCheckParams, listener); - } catch (RemoteException e) { - e.rethrowFromSystemServer(); - return false; - } - } - - /** - * Stops listening to the status changes of the storage health. - */ - public void unregisterStorageHealthListener() { - try { - mService.unregisterStorageHealthListener(mId); - } catch (RemoteException e) { - e.rethrowFromSystemServer(); - return; - } - } - - /** * Returns the metrics of the current storage. * {@see IIncrementalService} for metrics keys. */ diff --git a/core/java/android/os/incremental/V4Signature.java b/core/java/android/os/incremental/V4Signature.java index 77d8664a6459..688e3e9d2a67 100644 --- a/core/java/android/os/incremental/V4Signature.java +++ b/core/java/android/os/incremental/V4Signature.java @@ -41,6 +41,8 @@ public class V4Signature { public static final int HASHING_ALGORITHM_SHA256 = 1; public static final byte LOG2_BLOCK_SIZE_4096_BYTES = 12; + public static final int INCFS_MAX_SIGNATURE_SIZE = 8096; // incrementalfs.h + /** * IncFS hashing data. */ @@ -191,8 +193,12 @@ public class V4Signature { private static V4Signature readFrom(InputStream stream) throws IOException { final int version = readIntLE(stream); - final byte[] hashingInfo = readBytes(stream); - final byte[] signingInfo = readBytes(stream); + int maxSize = INCFS_MAX_SIGNATURE_SIZE; + final byte[] hashingInfo = readBytes(stream, maxSize); + if (hashingInfo != null) { + maxSize -= hashingInfo.length; + } + final byte[] signingInfo = readBytes(stream, maxSize); return new V4Signature(version, hashingInfo, signingInfo); } @@ -231,9 +237,13 @@ public class V4Signature { stream.write(buffer); } - private static byte[] readBytes(InputStream stream) throws IOException { + private static byte[] readBytes(InputStream stream, int maxSize) throws IOException { try { final int size = readIntLE(stream); + if (size > maxSize) { + throw new IOException( + "Signature is too long. Max allowed is " + INCFS_MAX_SIGNATURE_SIZE); + } final byte[] bytes = new byte[size]; readFully(stream, bytes); return bytes; diff --git a/core/java/android/os/storage/StorageVolume.java b/core/java/android/os/storage/StorageVolume.java index 36177c46ebef..2adcbc318614 100644 --- a/core/java/android/os/storage/StorageVolume.java +++ b/core/java/android/os/storage/StorageVolume.java @@ -20,6 +20,7 @@ import static android.annotation.SystemApi.Client.MODULE_LIBRARIES; import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.annotation.TestApi; import android.compat.annotation.UnsupportedAppUsage; @@ -551,4 +552,82 @@ public final class StorageVolume implements Parcelable { parcel.writeString8(mFsUuid); parcel.writeString8(mState); } + + /** @hide */ + // This class is used by the mainline test suite, so we have to keep these APIs around across + // releases. Consider making this class public to help external developers to write tests as + // well. + @TestApi + public static final class Builder { + private String mId; + private File mPath; + private String mDescription; + private boolean mPrimary; + private boolean mRemovable; + private boolean mEmulated; + private UserHandle mOwner; + private UUID mStorageUuid; + private String mUuid; + private String mState; + + @SuppressLint("StreamFiles") + public Builder( + @NonNull String id, @NonNull File path, @NonNull String description, + @NonNull UserHandle owner, @NonNull String state) { + mId = id; + mPath = path; + mDescription = description; + mOwner = owner; + mState = state; + } + + @NonNull + public Builder setStorageUuid(@Nullable UUID storageUuid) { + mStorageUuid = storageUuid; + return this; + } + + @NonNull + public Builder setUuid(@Nullable String uuid) { + mUuid = uuid; + return this; + } + + @NonNull + public Builder setPrimary(boolean primary) { + mPrimary = primary; + return this; + } + + @NonNull + public Builder setRemovable(boolean removable) { + mRemovable = removable; + return this; + } + + @NonNull + public Builder setEmulated(boolean emulated) { + mEmulated = emulated; + return this; + } + + @NonNull + public StorageVolume build() { + return new StorageVolume( + mId, + mPath, + /* internalPath= */ mPath, + mDescription, + mPrimary, + mRemovable, + mEmulated, + /* allowMassStorage= */ false, + /* maxFileSize= */ 0, + mOwner, + mStorageUuid, + mUuid, + mState); + } + } + } diff --git a/core/java/android/permission/ILegacyPermissionManager.aidl b/core/java/android/permission/ILegacyPermissionManager.aidl index 3bd4bf549df0..f1f083668711 100644 --- a/core/java/android/permission/ILegacyPermissionManager.aidl +++ b/core/java/android/permission/ILegacyPermissionManager.aidl @@ -30,7 +30,11 @@ import android.permission.IOnPermissionsChangeListener; * @hide */ interface ILegacyPermissionManager { - int checkDeviceIdentifierAccess(String packageName, String callingFeatureId, String message, int pid, int uid); + int checkDeviceIdentifierAccess(String packageName, String message, String callingFeatureId, + int pid, int uid); + + int checkPhoneNumberAccess(String packageName, String message, String callingFeatureId, + int pid, int uid); void grantDefaultPermissionsToEnabledCarrierApps(in String[] packageNames, int userId); diff --git a/core/java/android/permission/LegacyPermissionManager.java b/core/java/android/permission/LegacyPermissionManager.java index b66dd82965d3..a4fa11b5121b 100644 --- a/core/java/android/permission/LegacyPermissionManager.java +++ b/core/java/android/permission/LegacyPermissionManager.java @@ -90,6 +90,36 @@ public final class LegacyPermissionManager { } /** + * Checks whether the package with the given pid/uid can read the device phone number. + * + * @param packageName the name of the package to be checked for phone number access + * @param message the message to be used for logging during phone number access + * verification + * @param callingFeatureId the feature in the package + * @param pid the process id of the package to be checked + * @param uid the uid of the package to be checked + * @return <ul> + * <li>{@link PackageManager#PERMISSION_GRANTED} if the package is allowed phone number + * access</li> + * <li>{@link android.app.AppOpsManager#MODE_IGNORED} if the package does not have phone + * number access but for appcompat reasons this should be a silent failure (ie return empty + * or null data)</li> + * <li>{@link PackageManager#PERMISSION_DENIED} if the package does not have phone number + * access</li> + * </ul> + * @hide + */ + public int checkPhoneNumberAccess(@Nullable String packageName, @Nullable String message, + @Nullable String callingFeatureId, int pid, int uid) { + try { + return mLegacyPermissionManager.checkPhoneNumberAccess(packageName, message, + callingFeatureId, pid, uid); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + + /** * Grant default permissions to currently active LUI app * @param packageName The package name for the LUI app * @param user The user handle diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index 2179f3c333a5..13819550d7e2 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -9501,6 +9501,18 @@ public final class Settings { = "bubble_important_conversations"; /** + * When enabled, notifications able to bubble will display an affordance allowing the user + * to bubble them. + * The value is boolean (1 to enable or 0 to disable). + * + * @hide + */ + @TestApi + @SuppressLint("NoSettingsProvider") + @Readable + public static final String NOTIFICATION_BUBBLES = "notification_bubbles"; + + /** * Whether notifications are dismissed by a right-to-left swipe (instead of a left-to-right * swipe). * @@ -9971,6 +9983,7 @@ public final class Settings { CLONE_TO_MANAGED_PROFILE.add(LOCATION_CHANGER); CLONE_TO_MANAGED_PROFILE.add(LOCATION_MODE); CLONE_TO_MANAGED_PROFILE.add(SHOW_IME_WITH_HARD_KEYBOARD); + CLONE_TO_MANAGED_PROFILE.add(NOTIFICATION_BUBBLES); } /** @hide */ @@ -10064,7 +10077,9 @@ public final class Settings { * Whether the notification bubbles are globally enabled * The value is boolean (1 or 0). * @hide + * @deprecated moved to secure settings. */ + @Deprecated @TestApi @Readable public static final String NOTIFICATION_BUBBLES = "notification_bubbles"; @@ -14813,7 +14828,7 @@ public final class Settings { MOVED_TO_SECURE.add(Global.ZEN_SETTINGS_SUGGESTION_VIEWED); MOVED_TO_SECURE.add(Global.CHARGING_SOUNDS_ENABLED); MOVED_TO_SECURE.add(Global.CHARGING_VIBRATION_ENABLED); - + MOVED_TO_SECURE.add(Global.NOTIFICATION_BUBBLES); } /** @hide */ diff --git a/core/java/android/service/autofill/FillEventHistory.java b/core/java/android/service/autofill/FillEventHistory.java index f2265281b140..7a8f6f415fbf 100644 --- a/core/java/android/service/autofill/FillEventHistory.java +++ b/core/java/android/service/autofill/FillEventHistory.java @@ -245,35 +245,35 @@ public final class FillEventHistory implements Parcelable { @interface EventIds{} /** No reason for save dialog. */ - public static final int NO_SAVE_REASON_NONE = 0; + public static final int NO_SAVE_UI_REASON_NONE = 0; /** The SaveInfo associated with the FillResponse is null. */ - public static final int NO_SAVE_REASON_NO_SAVE_INFO = 1; + public static final int NO_SAVE_UI_REASON_NO_SAVE_INFO = 1; /** The service asked to delay save. */ - public static final int NO_SAVE_REASON_WITH_DELAY_SAVE_FLAG = 2; + public static final int NO_SAVE_UI_REASON_WITH_DELAY_SAVE_FLAG = 2; /** There was empty value for required ids. */ - public static final int NO_SAVE_REASON_HAS_EMPTY_REQUIRED = 3; + public static final int NO_SAVE_UI_REASON_HAS_EMPTY_REQUIRED = 3; /** No value has been changed. */ - public static final int NO_SAVE_REASON_NO_VALUE_CHANGED = 4; + public static final int NO_SAVE_UI_REASON_NO_VALUE_CHANGED = 4; /** Fields failed validation. */ - public static final int NO_SAVE_REASON_FIELD_VALIDATION_FAILED = 5; + public static final int NO_SAVE_UI_REASON_FIELD_VALIDATION_FAILED = 5; /** All fields matched contents of datasets. */ - public static final int NO_SAVE_REASON_DATASET_MATCH = 6; + public static final int NO_SAVE_UI_REASON_DATASET_MATCH = 6; /** @hide */ - @IntDef(prefix = { "NO_SAVE_REASON_" }, value = { - NO_SAVE_REASON_NONE, - NO_SAVE_REASON_NO_SAVE_INFO, - NO_SAVE_REASON_WITH_DELAY_SAVE_FLAG, - NO_SAVE_REASON_HAS_EMPTY_REQUIRED, - NO_SAVE_REASON_NO_VALUE_CHANGED, - NO_SAVE_REASON_FIELD_VALIDATION_FAILED, - NO_SAVE_REASON_DATASET_MATCH + @IntDef(prefix = { "NO_SAVE_UI_REASON_" }, value = { + NO_SAVE_UI_REASON_NONE, + NO_SAVE_UI_REASON_NO_SAVE_INFO, + NO_SAVE_UI_REASON_WITH_DELAY_SAVE_FLAG, + NO_SAVE_UI_REASON_HAS_EMPTY_REQUIRED, + NO_SAVE_UI_REASON_NO_VALUE_CHANGED, + NO_SAVE_UI_REASON_FIELD_VALIDATION_FAILED, + NO_SAVE_UI_REASON_DATASET_MATCH }) @Retention(RetentionPolicy.SOURCE) public @interface NoSaveReason{} @@ -488,11 +488,12 @@ public final class FillEventHistory implements Parcelable { * Returns the reason why a save dialog was not shown. * * <p><b>Note: </b>Only set on events of type {@link #TYPE_CONTEXT_COMMITTED}. For the other - * event types, the reason is set to NO_SAVE_REASON_NONE. + * event types, the reason is set to NO_SAVE_UI_REASON_NONE. * * @return The reason why a save dialog was not shown. */ - public int getNoSaveReason() { + @NoSaveReason + public int getNoSaveUiReason() { return mSaveDialogNotShowReason; } @@ -533,7 +534,7 @@ public final class FillEventHistory implements Parcelable { this(eventType, datasetId, clientState, selectedDatasetIds, ignoredDatasetIds, changedFieldIds, changedDatasetIds, manuallyFilledFieldIds, manuallyFilledDatasetIds, detectedFieldIds, detectedFieldClassifications, - NO_SAVE_REASON_NONE); + NO_SAVE_UI_REASON_NONE); } /** @@ -599,7 +600,7 @@ public final class FillEventHistory implements Parcelable { mDetectedFieldClassifications = detectedFieldClassifications; mSaveDialogNotShowReason = Preconditions.checkArgumentInRange(saveDialogNotShowReason, - NO_SAVE_REASON_NONE, NO_SAVE_REASON_DATASET_MATCH, + NO_SAVE_UI_REASON_NONE, NO_SAVE_UI_REASON_DATASET_MATCH, "saveDialogNotShowReason"); } diff --git a/core/java/android/service/displayhash/DisplayHashParams.java b/core/java/android/service/displayhash/DisplayHashParams.java index fcce91ab6f1f..2ec9d5d11101 100644 --- a/core/java/android/service/displayhash/DisplayHashParams.java +++ b/core/java/android/service/displayhash/DisplayHashParams.java @@ -28,7 +28,7 @@ import android.view.displayhash.DisplayHashResultCallback; import com.android.internal.util.DataClass; /** - * Information passed from the {@link DisplayHasherService} to system server about how to get the + * Information passed from the {@link DisplayHashingService} to system server about how to get the * display data that will be used to generate the {@link android.view.displayhash.DisplayHash} * * @hide @@ -38,9 +38,9 @@ import com.android.internal.util.DataClass; public final class DisplayHashParams implements Parcelable { /** * The size to scale the buffer to so the hash algorithm can properly generate the hash. The - * buffer given to the {@link DisplayHasherService#onGenerateDisplayHash(byte[], HardwareBuffer, - * Rect, String, DisplayHashResultCallback)} will be stretched based on the value set here. - * If {@code null}, the buffer size will not be changed. + * buffer given to the {@link DisplayHashingService#onGenerateDisplayHash(byte[], + * HardwareBuffer, Rect, String, DisplayHashResultCallback)} will be stretched based on the + * value set here. If {@code null}, the buffer size will not be changed. */ @Nullable private final Size mBufferSize; @@ -48,7 +48,7 @@ public final class DisplayHashParams implements Parcelable { /** * Whether the content will be captured in grayscale or color. */ - private final boolean mGrayscaleBuffer; + private final boolean mUseGrayscale; /** * A builder for {@link DisplayHashParams} @@ -56,7 +56,7 @@ public final class DisplayHashParams implements Parcelable { public static final class Builder { @Nullable private Size mBufferSize; - private boolean mGrayscaleBuffer; + private boolean mUseGrayscale; /** * Creates a new Builder. @@ -68,8 +68,8 @@ public final class DisplayHashParams implements Parcelable { * The size to scale the buffer to so the hash algorithm can properly generate the hash. */ @NonNull - public Builder setBufferSize(int w, int h) { - mBufferSize = new Size(w, h); + public Builder setBufferSize(int width, int height) { + mBufferSize = new Size(width, height); return this; } @@ -77,15 +77,15 @@ public final class DisplayHashParams implements Parcelable { * Whether the content will be captured in grayscale or color. */ @NonNull - public Builder setGrayscaleBuffer(boolean value) { - mGrayscaleBuffer = value; + public Builder setUseGrayscale(boolean useGrayscale) { + mUseGrayscale = useGrayscale; return this; } /** Builds the instance. This builder should not be touched after calling this! */ @NonNull public DisplayHashParams build() { - return new DisplayHashParams(mBufferSize, mGrayscaleBuffer); + return new DisplayHashParams(mBufferSize, mUseGrayscale); } } @@ -109,28 +109,28 @@ public final class DisplayHashParams implements Parcelable { * * @param bufferSize * The size to scale the buffer to so the hash algorithm can properly generate the hash. The - * buffer given to the {@link DisplayHasherService#onGenerateDisplayHash(byte[], HardwareBuffer, - * Rect, String, DisplayHashResultCallback)} will be stretched based on the value set here. - * If {@code null}, the buffer size will not be changed. - * @param grayscaleBuffer + * buffer given to the {@link DisplayHashingService#onGenerateDisplayHash(byte[], + * HardwareBuffer, Rect, String, DisplayHashResultCallback)} will be stretched based on the + * value set here. If {@code null}, the buffer size will not be changed. + * @param useGrayscale * Whether the content will be captured in grayscale or color. * @hide */ @DataClass.Generated.Member public DisplayHashParams( @Nullable Size bufferSize, - boolean grayscaleBuffer) { + boolean useGrayscale) { this.mBufferSize = bufferSize; - this.mGrayscaleBuffer = grayscaleBuffer; + this.mUseGrayscale = useGrayscale; // onConstructed(); // You can define this method to get a callback } /** * The size to scale the buffer to so the hash algorithm can properly generate the hash. The - * buffer given to the {@link DisplayHasherService#onGenerateDisplayHash(byte[], HardwareBuffer, - * Rect, String, DisplayHashResultCallback)} will be stretched based on the value set here. - * If {@code null}, the buffer size will not be changed. + * buffer given to the {@link DisplayHashingService#onGenerateDisplayHash(byte[], + * HardwareBuffer, Rect, String, DisplayHashResultCallback)} will be stretched based on the + * value set here. If {@code null}, the buffer size will not be changed. */ @DataClass.Generated.Member public @Nullable Size getBufferSize() { @@ -141,8 +141,8 @@ public final class DisplayHashParams implements Parcelable { * Whether the content will be captured in grayscale or color. */ @DataClass.Generated.Member - public boolean isGrayscaleBuffer() { - return mGrayscaleBuffer; + public boolean isUseGrayscale() { + return mUseGrayscale; } @Override @@ -153,7 +153,7 @@ public final class DisplayHashParams implements Parcelable { return "DisplayHashParams { " + "bufferSize = " + mBufferSize + ", " + - "grayscaleBuffer = " + mGrayscaleBuffer + + "useGrayscale = " + mUseGrayscale + " }"; } @@ -164,7 +164,7 @@ public final class DisplayHashParams implements Parcelable { // void parcelFieldName(Parcel dest, int flags) { ... } byte flg = 0; - if (mGrayscaleBuffer) flg |= 0x2; + if (mUseGrayscale) flg |= 0x2; if (mBufferSize != null) flg |= 0x1; dest.writeByte(flg); if (mBufferSize != null) dest.writeSize(mBufferSize); @@ -182,11 +182,11 @@ public final class DisplayHashParams implements Parcelable { // static FieldType unparcelFieldName(Parcel in) { ... } byte flg = in.readByte(); - boolean grayscaleBuffer = (flg & 0x2) != 0; + boolean useGrayscale = (flg & 0x2) != 0; Size bufferSize = (flg & 0x1) == 0 ? null : (Size) in.readSize(); this.mBufferSize = bufferSize; - this.mGrayscaleBuffer = grayscaleBuffer; + this.mUseGrayscale = useGrayscale; // onConstructed(); // You can define this method to get a callback } @@ -206,10 +206,10 @@ public final class DisplayHashParams implements Parcelable { }; @DataClass.Generated( - time = 1617735166254L, + time = 1618436855096L, codegenVersion = "1.0.23", sourceFile = "frameworks/base/core/java/android/service/displayhash/DisplayHashParams.java", - inputSignatures = "private final @android.annotation.Nullable android.util.Size mBufferSize\nprivate final boolean mGrayscaleBuffer\nclass DisplayHashParams extends java.lang.Object implements [android.os.Parcelable]\nprivate @android.annotation.Nullable android.util.Size mBufferSize\nprivate boolean mGrayscaleBuffer\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams.Builder setBufferSize(int,int)\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams.Builder setGrayscaleBuffer(boolean)\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams build()\nclass Builder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genAidl=true, genToString=true, genParcelable=true, genHiddenConstructor=true)") + inputSignatures = "private final @android.annotation.Nullable android.util.Size mBufferSize\nprivate final boolean mUseGrayscale\nclass DisplayHashParams extends java.lang.Object implements [android.os.Parcelable]\nprivate @android.annotation.Nullable android.util.Size mBufferSize\nprivate boolean mUseGrayscale\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams.Builder setBufferSize(int,int)\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams.Builder setUseGrayscale(boolean)\npublic @android.annotation.NonNull android.service.displayhash.DisplayHashParams build()\nclass Builder extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genAidl=true, genToString=true, genParcelable=true, genHiddenConstructor=true)") @Deprecated private void __metadata() {} diff --git a/core/java/android/service/displayhash/DisplayHasherService.java b/core/java/android/service/displayhash/DisplayHashingService.java index d300cf10e47a..e8bb485780d0 100644 --- a/core/java/android/service/displayhash/DisplayHasherService.java +++ b/core/java/android/service/displayhash/DisplayHashingService.java @@ -45,21 +45,21 @@ import java.util.Map; * @hide */ @SystemApi -public abstract class DisplayHasherService extends Service { +public abstract class DisplayHashingService extends Service { /** @hide **/ public static final String EXTRA_VERIFIED_DISPLAY_HASH = "android.service.displayhash.extra.VERIFIED_DISPLAY_HASH"; /** - * Name under which a DisplayHasherService component publishes information + * Name under which a DisplayHashingService component publishes information * about itself. This meta-data must reference an XML resource containing a - * {@link com.android.internal.R.styleable#DisplayHasherService} tag. + * {@link com.android.internal.R.styleable#DisplayHashingService} tag. * * @hide */ @SystemApi - public static final String SERVICE_META_DATA = "android.displayhash.display_hasher_service"; + public static final String SERVICE_META_DATA = "android.displayhash.display_hashing_service"; /** * The {@link Intent} action that must be declared as handled by a service in its manifest @@ -69,18 +69,18 @@ public abstract class DisplayHasherService extends Service { */ @SystemApi public static final String SERVICE_INTERFACE = - "android.service.displayhash.DisplayHasherService"; + "android.service.displayhash.DisplayHashingService"; - private DisplayHasherServiceWrapper mWrapper; + private DisplayHashingServiceWrapper mWrapper; private Handler mHandler; - public DisplayHasherService() { + public DisplayHashingService() { } @Override public void onCreate() { super.onCreate(); - mWrapper = new DisplayHasherServiceWrapper(); + mWrapper = new DisplayHashingServiceWrapper(); mHandler = new Handler(Looper.getMainLooper(), null, true); } @@ -105,7 +105,6 @@ public abstract class DisplayHasherService extends Service { * if successfully generated a DisplayHash or {@link * DisplayHashResultCallback#onDisplayHashError(int)} if failed. */ - @Nullable public abstract void onGenerateDisplayHash(@NonNull byte[] salt, @NonNull HardwareBuffer buffer, @NonNull Rect bounds, @NonNull String hashAlgorithm, @NonNull DisplayHashResultCallback callback); @@ -125,8 +124,8 @@ public abstract class DisplayHasherService extends Service { * HardwareBuffer, Rect, String, DisplayHashResultCallback)} to * generate the token. * @param displayHash The token to verify that it was generated by the system. - * @return a {@link VerifiedDisplayHash} if the token was generated by the system or null - * if the token cannot be verified. + * @return a {@link VerifiedDisplayHash} if the provided display hash was originally generated + * by the system or null if the system did not generate the display hash. */ @Nullable public abstract VerifiedDisplayHash onVerifyDisplayHash(@NonNull byte[] salt, @@ -150,13 +149,13 @@ public abstract class DisplayHasherService extends Service { callback.sendResult(data); } - private final class DisplayHasherServiceWrapper extends IDisplayHasherService.Stub { + private final class DisplayHashingServiceWrapper extends IDisplayHashingService.Stub { @Override public void generateDisplayHash(byte[] salt, HardwareBuffer buffer, Rect bounds, String hashAlgorithm, RemoteCallback callback) { mHandler.sendMessage( - obtainMessage(DisplayHasherService::onGenerateDisplayHash, - DisplayHasherService.this, salt, buffer, bounds, + obtainMessage(DisplayHashingService::onGenerateDisplayHash, + DisplayHashingService.this, salt, buffer, bounds, hashAlgorithm, new DisplayHashResultCallback() { @Override public void onDisplayHashResult( @@ -179,14 +178,14 @@ public abstract class DisplayHasherService extends Service { public void verifyDisplayHash(byte[] salt, DisplayHash displayHash, RemoteCallback callback) { mHandler.sendMessage( - obtainMessage(DisplayHasherService::verifyDisplayHash, - DisplayHasherService.this, salt, displayHash, callback)); + obtainMessage(DisplayHashingService::verifyDisplayHash, + DisplayHashingService.this, salt, displayHash, callback)); } @Override public void getDisplayHashAlgorithms(RemoteCallback callback) { - mHandler.sendMessage(obtainMessage(DisplayHasherService::getDisplayHashAlgorithms, - DisplayHasherService.this, callback)); + mHandler.sendMessage(obtainMessage(DisplayHashingService::getDisplayHashAlgorithms, + DisplayHashingService.this, callback)); } } } diff --git a/core/java/android/service/displayhash/IDisplayHasherService.aidl b/core/java/android/service/displayhash/IDisplayHashingService.aidl index d9dcdcaf921e..56e1e0aa9009 100644 --- a/core/java/android/service/displayhash/IDisplayHasherService.aidl +++ b/core/java/android/service/displayhash/IDisplayHashingService.aidl @@ -26,7 +26,7 @@ import android.view.displayhash.DisplayHash; * * @hide */ -oneway interface IDisplayHasherService { +oneway interface IDisplayHashingService { /** * Generates the DisplayHash that can be used to validate that the system generated the token. * diff --git a/core/java/android/service/rotationresolver/RotationResolutionRequest.java b/core/java/android/service/rotationresolver/RotationResolutionRequest.java index 8c7db4003235..9b9244bd7ae0 100644 --- a/core/java/android/service/rotationresolver/RotationResolutionRequest.java +++ b/core/java/android/service/rotationresolver/RotationResolutionRequest.java @@ -42,7 +42,7 @@ import com.android.internal.util.DataClass; ) public final class RotationResolutionRequest implements Parcelable { /** The Name of the package of the current fore-ground activity. */ - @NonNull private final String mPackageName; + @NonNull private final String mForegroundPackageName; /** The current rotation of the screen. */ @Surface.Rotation private final int mCurrentRotation; @@ -75,7 +75,7 @@ public final class RotationResolutionRequest implements Parcelable { /** * Creates a new RotationResolutionRequest. * - * @param packageName + * @param foregroundPackageName * The Name of the package of the current fore-ground activity. * @param currentRotation * The current rotation of the screen. @@ -88,14 +88,14 @@ public final class RotationResolutionRequest implements Parcelable { */ @DataClass.Generated.Member public RotationResolutionRequest( - @NonNull String packageName, + @NonNull String foregroundPackageName, @Surface.Rotation int currentRotation, @Surface.Rotation int proposedRotation, boolean shouldUseCamera, @DurationMillisLong long timeoutMillis) { - this.mPackageName = packageName; + this.mForegroundPackageName = foregroundPackageName; com.android.internal.util.AnnotationValidations.validate( - NonNull.class, null, mPackageName); + NonNull.class, null, mForegroundPackageName); this.mCurrentRotation = currentRotation; com.android.internal.util.AnnotationValidations.validate( Surface.Rotation.class, null, mCurrentRotation); @@ -114,8 +114,8 @@ public final class RotationResolutionRequest implements Parcelable { * The Name of the package of the current fore-ground activity. */ @DataClass.Generated.Member - public @NonNull String getPackageName() { - return mPackageName; + public @NonNull String getForegroundPackageName() { + return mForegroundPackageName; } /** @@ -157,7 +157,7 @@ public final class RotationResolutionRequest implements Parcelable { // String fieldNameToString() { ... } return "RotationResolutionRequest { " + - "packageName = " + mPackageName + ", " + + "foregroundPackageName = " + mForegroundPackageName + ", " + "currentRotation = " + mCurrentRotation + ", " + "proposedRotation = " + mProposedRotation + ", " + "shouldUseCamera = " + mShouldUseCamera + ", " + @@ -174,7 +174,7 @@ public final class RotationResolutionRequest implements Parcelable { byte flg = 0; if (mShouldUseCamera) flg |= 0x8; dest.writeByte(flg); - dest.writeString(mPackageName); + dest.writeString(mForegroundPackageName); dest.writeInt(mCurrentRotation); dest.writeInt(mProposedRotation); dest.writeLong(mTimeoutMillis); @@ -193,14 +193,14 @@ public final class RotationResolutionRequest implements Parcelable { byte flg = in.readByte(); boolean shouldUseCamera = (flg & 0x8) != 0; - String packageName = in.readString(); + String foregroundPackageName = in.readString(); int currentRotation = in.readInt(); int proposedRotation = in.readInt(); long timeoutMillis = in.readLong(); - this.mPackageName = packageName; + this.mForegroundPackageName = foregroundPackageName; com.android.internal.util.AnnotationValidations.validate( - NonNull.class, null, mPackageName); + NonNull.class, null, mForegroundPackageName); this.mCurrentRotation = currentRotation; com.android.internal.util.AnnotationValidations.validate( Surface.Rotation.class, null, mCurrentRotation); @@ -230,10 +230,10 @@ public final class RotationResolutionRequest implements Parcelable { }; @DataClass.Generated( - time = 1617213094231L, + time = 1618447759819L, codegenVersion = "1.0.23", sourceFile = "frameworks/base/core/java/android/service/rotationresolver/RotationResolutionRequest.java", - inputSignatures = "private final @android.annotation.NonNull java.lang.String mPackageName\nprivate final @android.view.Surface.Rotation int mCurrentRotation\nprivate final @android.view.Surface.Rotation int mProposedRotation\nprivate final boolean mShouldUseCamera\nprivate final @android.annotation.DurationMillisLong long mTimeoutMillis\nclass RotationResolutionRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genToString=true)") + inputSignatures = "private final @android.annotation.NonNull java.lang.String mForegroundPackageName\nprivate final @android.view.Surface.Rotation int mCurrentRotation\nprivate final @android.view.Surface.Rotation int mProposedRotation\nprivate final boolean mShouldUseCamera\nprivate final @android.annotation.DurationMillisLong long mTimeoutMillis\nclass RotationResolutionRequest extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genToString=true)") @Deprecated private void __metadata() {} diff --git a/core/java/android/service/textservice/SpellCheckerService.java b/core/java/android/service/textservice/SpellCheckerService.java index e4925842ad85..45f974354c8a 100644 --- a/core/java/android/service/textservice/SpellCheckerService.java +++ b/core/java/android/service/textservice/SpellCheckerService.java @@ -421,7 +421,8 @@ public abstract class SpellCheckerService extends Service { final ArrayList<SentenceWordItem> wordItems = new ArrayList<SentenceWordItem>(); wordIterator.setCharSequence(originalText, 0, originalText.length()); int wordEnd = wordIterator.following(start); - int wordStart = wordIterator.getBeginning(wordEnd); + int wordStart = wordEnd == BreakIterator.DONE ? BreakIterator.DONE + : wordIterator.getBeginning(wordEnd); if (DBG) { Log.d(TAG, "iterator: break: ---- 1st word start = " + wordStart + ", end = " + wordEnd + "\n" + originalText); diff --git a/core/java/android/service/translation/ITranslationCallback.aidl b/core/java/android/service/translation/ITranslationCallback.aidl index 893c9d0ff661..c7e63a0529d8 100644 --- a/core/java/android/service/translation/ITranslationCallback.aidl +++ b/core/java/android/service/translation/ITranslationCallback.aidl @@ -25,5 +25,4 @@ import android.view.translation.TranslationResponse; */ oneway interface ITranslationCallback { void onTranslationResponse(in TranslationResponse translationResponse); - void onError(); } diff --git a/core/java/android/service/translation/OnTranslationResultCallbackWrapper.java b/core/java/android/service/translation/OnTranslationResultCallbackWrapper.java index 10a2aa237927..f5851551d5c4 100644 --- a/core/java/android/service/translation/OnTranslationResultCallbackWrapper.java +++ b/core/java/android/service/translation/OnTranslationResultCallbackWrapper.java @@ -66,22 +66,13 @@ final class OnTranslationResultCallbackWrapper implements } } + /** + * @deprecated use {@link #onTranslationSuccess} with error response instead. + */ @Override + @Deprecated public void onError() { - assertNotCalled(); - if (mCalled.getAndSet(true)) { - throw new IllegalStateException("Already called"); - } - - try { - mCallback.onError(); - } catch (RemoteException e) { - if (e instanceof DeadObjectException) { - Log.w(TAG, "Process is dead, ignore."); - return; - } - throw e.rethrowAsRuntimeException(); - } + // no-op. } private void assertNotCalled() { diff --git a/core/java/android/service/translation/TranslationService.java b/core/java/android/service/translation/TranslationService.java index a3bbdb9af475..17cb3dae6cb9 100644 --- a/core/java/android/service/translation/TranslationService.java +++ b/core/java/android/service/translation/TranslationService.java @@ -16,6 +16,8 @@ package android.service.translation; +import static android.view.translation.TranslationManager.STATUS_SYNC_CALL_FAIL; +import static android.view.translation.TranslationManager.STATUS_SYNC_CALL_SUCCESS; import static android.view.translation.Translator.EXTRA_SERVICE_BINDER; import static android.view.translation.Translator.EXTRA_SESSION_ID; @@ -141,7 +143,9 @@ public abstract class TranslationService extends Service { /** * TODO: implement javadoc + * @deprecated use {@link #onTranslationSuccess} with an error response instead. */ + @Deprecated void onError(); } @@ -207,13 +211,33 @@ public abstract class TranslationService extends Service { } /** - * TODO: fill in javadoc. + * Called to notify the service that a session was created + * (see {@link android.view.translation.Translator}). * - * @param translationContext - * @param sessionId + * <p>The service must call {@code callback.accept()} to acknowledge whether the session is + * supported and created successfully. If the translation context is not supported, the service + * should call back with {@code false}.</p> + * + * @param translationContext the {@link TranslationContext} of the session being created. + * @param sessionId the int id of the session. + * @param callback {@link Consumer} to notify whether the session was successfully created. */ // TODO(b/176464808): the session id won't be unique cross client/server process. Need to find // solution to make it's safe. + // TODO: make abstract once aiai is implemented. + public void onCreateTranslationSession(@NonNull TranslationContext translationContext, + int sessionId, @NonNull Consumer<Boolean> callback) { + onCreateTranslationSession(translationContext, sessionId); + callback.accept(true); + } + + /** + * TODO: fill in javadoc. + * + * @deprecated use {@link #onCreateTranslationSession(TranslationContext, int, Consumer)} + * instead. + */ + @Deprecated public abstract void onCreateTranslationSession(@NonNull TranslationContext translationContext, int sessionId); @@ -253,19 +277,30 @@ public abstract class TranslationService extends Service { // TODO(b/176464808): Need to handle client dying case - // TODO(b/176464808): Need to handle the failure case. e.g. if the context is not supported. - private void handleOnCreateTranslationSession(@NonNull TranslationContext translationContext, int sessionId, IResultReceiver resultReceiver) { - try { - final Bundle extras = new Bundle(); - extras.putBinder(EXTRA_SERVICE_BINDER, mClientInterface.asBinder()); - extras.putInt(EXTRA_SESSION_ID, sessionId); - resultReceiver.send(0, extras); - } catch (RemoteException e) { - Log.w(TAG, "RemoteException sending client interface: " + e); - } - onCreateTranslationSession(translationContext, sessionId); + onCreateTranslationSession(translationContext, sessionId, + new Consumer<Boolean>() { + @Override + public void accept(Boolean created) { + try { + if (!created) { + Log.w(TAG, "handleOnCreateTranslationSession(): context=" + + translationContext + " not supported by service."); + resultReceiver.send(STATUS_SYNC_CALL_FAIL, null); + return; + } + + final Bundle extras = new Bundle(); + extras.putBinder(EXTRA_SERVICE_BINDER, mClientInterface.asBinder()); + extras.putInt(EXTRA_SESSION_ID, sessionId); + resultReceiver.send(STATUS_SYNC_CALL_SUCCESS, extras); + } catch (RemoteException e) { + Log.w(TAG, "RemoteException sending client interface: " + e); + } + } + }); + } private void handleOnTranslationCapabilitiesRequest( @@ -280,9 +315,8 @@ public abstract class TranslationService extends Service { final Bundle bundle = new Bundle(); bundle.putParcelableArray(TranslationManager.EXTRA_CAPABILITIES, capabilities.toArray(new TranslationCapability[0])); - resultReceiver.send(TranslationManager.STATUS_SYNC_CALL_SUCCESS, bundle); + resultReceiver.send(STATUS_SYNC_CALL_SUCCESS, bundle); } }); - } } diff --git a/core/java/android/service/voice/AbstractHotwordDetector.java b/core/java/android/service/voice/AbstractHotwordDetector.java index e4eefc4e3a81..48967482fbdf 100644 --- a/core/java/android/service/voice/AbstractHotwordDetector.java +++ b/core/java/android/service/voice/AbstractHotwordDetector.java @@ -26,8 +26,10 @@ import android.os.Looper; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; import android.os.RemoteException; +import android.os.SharedMemory; import android.util.Slog; +import com.android.internal.app.IHotwordRecognitionStatusCallback; import com.android.internal.app.IVoiceInteractionManagerService; /** Base implementation of {@link HotwordDetector}. */ @@ -35,6 +37,8 @@ abstract class AbstractHotwordDetector implements HotwordDetector { private static final String TAG = AbstractHotwordDetector.class.getSimpleName(); private static final boolean DEBUG = false; + protected final Object mLock = new Object(); + private final IVoiceInteractionManagerService mManagerService; private final Handler mHandler; private final HotwordDetector.Callback mCallback; @@ -79,6 +83,43 @@ abstract class AbstractHotwordDetector implements HotwordDetector { return true; } + /** + * Set configuration and pass read-only data to hotword detection service. + * + * @param options Application configuration data to provide to the + * {@link HotwordDetectionService}. PersistableBundle does not allow any remotable objects or + * other contents that can be used to communicate with other processes. + * @param sharedMemory The unrestricted data blob to provide to the + * {@link HotwordDetectionService}. Use this to provide the hotword models data or other + * such data to the trusted process. + * + * @throws IllegalStateException if this AlwaysOnHotwordDetector wasn't specified to use a + * {@link HotwordDetectionService} when it was created. In addition, if this + * AlwaysOnHotwordDetector is in an invalid or error state. + */ + @Override + public void updateState(@Nullable PersistableBundle options, + @Nullable SharedMemory sharedMemory) { + if (DEBUG) { + Slog.d(TAG, "updateState()"); + } + synchronized (mLock) { + updateStateLocked(options, sharedMemory, null /* callback */); + } + } + + protected void updateStateLocked(@Nullable PersistableBundle options, + @Nullable SharedMemory sharedMemory, IHotwordRecognitionStatusCallback callback) { + if (DEBUG) { + Slog.d(TAG, "updateStateLocked()"); + } + try { + mManagerService.updateState(options, sharedMemory, callback); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + private static class BinderCallback extends IMicrophoneHotwordDetectionVoiceInteractionCallback.Stub { private final Handler mHandler; diff --git a/core/java/android/service/voice/AlwaysOnHotwordDetector.java b/core/java/android/service/voice/AlwaysOnHotwordDetector.java index 8ca0e7ccff37..a3e00fb8fdc0 100644 --- a/core/java/android/service/voice/AlwaysOnHotwordDetector.java +++ b/core/java/android/service/voice/AlwaysOnHotwordDetector.java @@ -24,6 +24,7 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.RequiresPermission; import android.annotation.SystemApi; +import android.annotation.TestApi; import android.app.ActivityThread; import android.compat.annotation.UnsupportedAppUsage; import android.content.Context; @@ -49,6 +50,7 @@ import android.os.PersistableBundle; import android.os.RemoteException; import android.os.SharedMemory; import android.service.voice.HotwordDetectionService.InitializationStatus; +import android.util.Log; import android.util.Slog; import com.android.internal.app.IHotwordRecognitionStatusCallback; @@ -276,7 +278,6 @@ public class AlwaysOnHotwordDetector extends AbstractHotwordDetector { private final IVoiceInteractionSoundTriggerSession mSoundTriggerSession; private final SoundTriggerListener mInternalCallback; private final Callback mExternalCallback; - private final Object mLock = new Object(); private final Handler mHandler; private final IBinder mBinder = new Binder(); private final int mTargetSdkVersion; @@ -584,24 +585,15 @@ public class AlwaysOnHotwordDetector extends AbstractHotwordDetector { } /** - * Set configuration and pass read-only data to hotword detection service. - * - * @param options Application configuration data to provide to the - * {@link HotwordDetectionService}. PersistableBundle does not allow any remotable objects or - * other contents that can be used to communicate with other processes. - * @param sharedMemory The unrestricted data blob to provide to the - * {@link HotwordDetectionService}. Use this to provide the hotword models data or other - * such data to the trusted process. + * {@inheritDoc} * * @throws IllegalStateException if this AlwaysOnHotwordDetector wasn't specified to use a * {@link HotwordDetectionService} when it was created. In addition, if this * AlwaysOnHotwordDetector is in an invalid or error state. */ + @Override public final void updateState(@Nullable PersistableBundle options, @Nullable SharedMemory sharedMemory) { - if (DBG) { - Slog.d(TAG, "updateState()"); - } synchronized (mLock) { if (!mSupportHotwordDetectionService) { throw new IllegalStateException( @@ -611,19 +603,36 @@ public class AlwaysOnHotwordDetector extends AbstractHotwordDetector { throw new IllegalStateException( "updateState called on an invalid detector or error state"); } - updateStateLocked(options, sharedMemory, null /* callback */); } + + super.updateState(options, sharedMemory); } - private void updateStateLocked(@Nullable PersistableBundle options, - @Nullable SharedMemory sharedMemory, IHotwordRecognitionStatusCallback callback) { - if (DBG) { - Slog.d(TAG, "updateStateLocked()"); - } - try { - mModelManagementService.updateState(options, sharedMemory, callback); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); + /** + * Test API to simulate to trigger hardware recognition event for test. + * + * @hide + */ + @TestApi + @RequiresPermission(allOf = {RECORD_AUDIO, CAPTURE_AUDIO_HOTWORD}) + public void triggerHardwareRecognitionEventForTest(int status, int soundModelHandle, + boolean captureAvailable, int captureSession, int captureDelayMs, int capturePreambleMs, + boolean triggerInData, @NonNull AudioFormat captureFormat, @Nullable byte[] data) { + Log.d(TAG, "triggerHardwareRecognitionEventForTest()"); + synchronized (mLock) { + if (mAvailability == STATE_INVALID || mAvailability == STATE_ERROR) { + throw new IllegalStateException("triggerHardwareRecognitionEventForTest called on" + + " an invalid detector or error state"); + } + try { + mModelManagementService.triggerHardwareRecognitionEventForTest( + new KeyphraseRecognitionEvent(status, soundModelHandle, captureAvailable, + captureSession, captureDelayMs, capturePreambleMs, triggerInData, + captureFormat, data, null /* keyphraseExtras */), + mInternalCallback); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } } } diff --git a/core/java/android/service/voice/HotwordDetectionService.java b/core/java/android/service/voice/HotwordDetectionService.java index 23b2103ce5fd..ea854e8c9283 100644 --- a/core/java/android/service/voice/HotwordDetectionService.java +++ b/core/java/android/service/voice/HotwordDetectionService.java @@ -24,8 +24,11 @@ import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.SdkConstant; +import android.annotation.SuppressLint; import android.annotation.SystemApi; import android.app.Service; +import android.content.ContentCaptureOptions; +import android.content.Context; import android.content.Intent; import android.media.AudioFormat; import android.os.Bundle; @@ -38,6 +41,8 @@ import android.os.PersistableBundle; import android.os.RemoteException; import android.os.SharedMemory; import android.util.Log; +import android.view.contentcapture.ContentCaptureManager; +import android.view.contentcapture.IContentCaptureManager; import java.lang.annotation.Documented; import java.lang.annotation.Retention; @@ -122,6 +127,9 @@ public abstract class HotwordDetectionService extends Service { private Handler mHandler; + @Nullable + private ContentCaptureManager mContentCaptureManager; + private final IHotwordDetectionService mInterface = new IHotwordDetectionService.Stub() { @Override public void detectFromDspSource( @@ -187,6 +195,13 @@ public abstract class HotwordDetectionService extends Service { Log.i(TAG, "Unsupported audio source " + audioSource); } } + + @Override + public void updateContentCaptureManager(IContentCaptureManager manager, + ContentCaptureOptions options) { + mContentCaptureManager = new ContentCaptureManager( + HotwordDetectionService.this, manager, options); + } }; @CallSuper @@ -207,6 +222,16 @@ public abstract class HotwordDetectionService extends Service { return null; } + @Override + @SuppressLint("OnNameExpected") + public @Nullable Object getSystemService(@ServiceName @NonNull String name) { + if (Context.CONTENT_CAPTURE_MANAGER_SERVICE.equals(name)) { + return mContentCaptureManager; + } else { + return super.getSystemService(name); + } + } + /** * Called when the device hardware (such as a DSP) detected the hotword, to request second stage * validation before handing over the audio to the {@link AlwaysOnHotwordDetector}. diff --git a/core/java/android/service/voice/HotwordDetector.java b/core/java/android/service/voice/HotwordDetector.java index f4e5ddaa31a6..ab7d9cd5ae5c 100644 --- a/core/java/android/service/voice/HotwordDetector.java +++ b/core/java/android/service/voice/HotwordDetector.java @@ -27,6 +27,7 @@ import android.annotation.SystemApi; import android.media.AudioFormat; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; +import android.os.SharedMemory; import android.service.voice.HotwordDetectionService.InitializationStatus; /** @@ -106,6 +107,21 @@ public interface HotwordDetector { @Nullable PersistableBundle options); /** + * Set configuration and pass read-only data to hotword detection service. + * + * @param options Application configuration data to provide to the + * {@link HotwordDetectionService}. PersistableBundle does not allow any remotable objects or + * other contents that can be used to communicate with other processes. + * @param sharedMemory The unrestricted data blob to provide to the + * {@link HotwordDetectionService}. Use this to provide the hotword models data or other + * such data to the trusted process. + * + * @throws IllegalStateException if this HotwordDetector wasn't specified to use a + * {@link HotwordDetectionService} when it was created. + */ + void updateState(@Nullable PersistableBundle options, @Nullable SharedMemory sharedMemory); + + /** * The callback to notify of detection events. */ interface Callback { diff --git a/core/java/android/service/voice/IHotwordDetectionService.aidl b/core/java/android/service/voice/IHotwordDetectionService.aidl index d2421603e554..2ffe787e895a 100644 --- a/core/java/android/service/voice/IHotwordDetectionService.aidl +++ b/core/java/android/service/voice/IHotwordDetectionService.aidl @@ -22,6 +22,8 @@ import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; import android.os.SharedMemory; import android.service.voice.IDspHotwordDetectionCallback; +import android.view.contentcapture.IContentCaptureManager; +import android.content.ContentCaptureOptions; /** * Provide the interface to communicate with hotword detection service. @@ -42,6 +44,12 @@ oneway interface IHotwordDetectionService { in PersistableBundle options, in IDspHotwordDetectionCallback callback); - void updateState(in PersistableBundle options, in SharedMemory sharedMemory, - in IRemoteCallback callback); + void updateState( + in PersistableBundle options, + in SharedMemory sharedMemory, + in IRemoteCallback callback); + + void updateContentCaptureManager( + in IContentCaptureManager contentCaptureManager, + in ContentCaptureOptions options); } diff --git a/core/java/android/service/voice/SoftwareHotwordDetector.java b/core/java/android/service/voice/SoftwareHotwordDetector.java index 376596b9b0d0..87037f4def6a 100644 --- a/core/java/android/service/voice/SoftwareHotwordDetector.java +++ b/core/java/android/service/voice/SoftwareHotwordDetector.java @@ -51,7 +51,6 @@ class SoftwareHotwordDetector extends AbstractHotwordDetector { private final HotwordDetector.Callback mCallback; private final AudioFormat mAudioFormat; private final Handler mHandler; - private final Object mLock = new Object(); SoftwareHotwordDetector( IVoiceInteractionManagerService managerService, @@ -65,12 +64,7 @@ class SoftwareHotwordDetector extends AbstractHotwordDetector { mAudioFormat = audioFormat; mCallback = callback; mHandler = new Handler(Looper.getMainLooper()); - - try { - mManagerService.updateState(options, sharedMemory, null /* callback */); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } + updateStateLocked(options, sharedMemory, null /* callback */); } @RequiresPermission(RECORD_AUDIO) diff --git a/core/java/android/speech/RecognitionListener.java b/core/java/android/speech/RecognitionListener.java index 07bd9eae864b..c94b60f847f4 100644 --- a/core/java/android/speech/RecognitionListener.java +++ b/core/java/android/speech/RecognitionListener.java @@ -62,7 +62,8 @@ public interface RecognitionListener { /** * A network or recognition error occurred. * - * @param error code is defined in {@link SpeechRecognizer} + * @param error code is defined in {@link SpeechRecognizer}. Implementations need to handle any + * integer error constant to be passed here beyond constants prefixed with ERROR_. */ void onError(@SpeechRecognizer.RecognitionError int error); diff --git a/core/java/android/uwb/IUwbAdapter.aidl b/core/java/android/uwb/IUwbAdapter.aidl index 30da248e9e87..62f1c0c3fa0d 100644 --- a/core/java/android/uwb/IUwbAdapter.aidl +++ b/core/java/android/uwb/IUwbAdapter.aidl @@ -16,6 +16,7 @@ package android.uwb; +import android.content.AttributionSource; import android.os.PersistableBundle; import android.uwb.IUwbAdapterStateCallbacks; import android.uwb.IUwbRangingCallbacks; @@ -77,11 +78,13 @@ interface IUwbAdapter { * If the provided sessionHandle is already open for the calling client, then * #onRangingOpenFailed must be called and the new session must not be opened. * + * @param attributionSource AttributionSource to use for permission enforcement. * @param sessionHandle the session handle to open ranging for * @param rangingCallbacks the callbacks used to deliver ranging information * @param parameters the configuration to use for ranging */ - void openRanging(in SessionHandle sessionHandle, + void openRanging(in AttributionSource attributionSource, + in SessionHandle sessionHandle, in IUwbRangingCallbacks rangingCallbacks, in PersistableBundle parameters); diff --git a/core/java/android/uwb/IUwbRangingCallbacks.aidl b/core/java/android/uwb/IUwbRangingCallbacks.aidl index f15debbf3e6f..555bafee8b1e 100644 --- a/core/java/android/uwb/IUwbRangingCallbacks.aidl +++ b/core/java/android/uwb/IUwbRangingCallbacks.aidl @@ -24,7 +24,7 @@ import android.uwb.SessionHandle; /** * @hide */ -interface IUwbRangingCallbacks { +oneway interface IUwbRangingCallbacks { /** * Called when the ranging session has been opened * diff --git a/core/java/android/uwb/RangingManager.java b/core/java/android/uwb/RangingManager.java index ff8b91207166..6bba79600598 100644 --- a/core/java/android/uwb/RangingManager.java +++ b/core/java/android/uwb/RangingManager.java @@ -63,8 +63,7 @@ public class RangingManager extends android.uwb.IUwbRangingCallbacks.Stub { new RangingSession(executor, callbacks, mAdapter, sessionHandle); mRangingSessionTable.put(sessionHandle, session); try { - // TODO: Pass in the attributionSource to the service. - mAdapter.openRanging(sessionHandle, this, params); + mAdapter.openRanging(attributionSource, sessionHandle, this, params); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java index c201e3beb9b2..def9ca4e74fb 100644 --- a/core/java/android/view/InsetsController.java +++ b/core/java/android/view/InsetsController.java @@ -541,9 +541,6 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation private final SparseArray<InsetsSourceControl> mTmpControlArray = new SparseArray<>(); private final ArrayList<RunningAnimation> mRunningAnimations = new ArrayList<>(); - private final ArrayList<WindowInsetsAnimation> mTmpRunningAnims = new ArrayList<>(); - private final List<WindowInsetsAnimation> mUnmodifiableTmpRunningAnims = - Collections.unmodifiableList(mTmpRunningAnims); private final ArrayList<InsetsAnimationControlImpl> mTmpFinishedControls = new ArrayList<>(); private final ArraySet<InsetsSourceConsumer> mRequestedVisibilityChanged = new ArraySet<>(); private WindowInsets mLastInsets; @@ -601,9 +598,8 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation return; } - mTmpFinishedControls.clear(); - mTmpRunningAnims.clear(); - InsetsState state = new InsetsState(mState, true /* copySources */); + final List<WindowInsetsAnimation> runningAnimations = new ArrayList<>(); + final InsetsState state = new InsetsState(mState, true /* copySources */); for (int i = mRunningAnimations.size() - 1; i >= 0; i--) { RunningAnimation runningAnimation = mRunningAnimations.get(i); if (DEBUG) Log.d(TAG, "Running animation type: " + runningAnimation.type); @@ -615,7 +611,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation // if it gets finished within applyChangeInsets we still dispatch it to // onProgress. if (runningAnimation.startDispatched) { - mTmpRunningAnims.add(control.getAnimation()); + runningAnimations.add(control.getAnimation()); } if (control.applyChangeInsets(state)) { @@ -628,9 +624,10 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation mLastInsets.isRound(), mLastInsets.shouldAlwaysConsumeSystemBars(), mLastLegacySoftInputMode, mLastLegacyWindowFlags, mLastLegacySystemUiFlags, mWindowType, mLastWindowingMode, null /* typeSideMap */); - mHost.dispatchWindowInsetsAnimationProgress(insets, mUnmodifiableTmpRunningAnims); + mHost.dispatchWindowInsetsAnimationProgress(insets, + Collections.unmodifiableList(runningAnimations)); if (DEBUG) { - for (WindowInsetsAnimation anim : mUnmodifiableTmpRunningAnims) { + for (WindowInsetsAnimation anim : runningAnimations) { Log.d(TAG, String.format("Running animation type: %d, progress: %f", anim.getTypeMask(), anim.getInterpolatedFraction())); } @@ -639,6 +636,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation for (int i = mTmpFinishedControls.size() - 1; i >= 0; i--) { dispatchAnimationEnd(mTmpFinishedControls.get(i).getAnimation()); } + mTmpFinishedControls.clear(); }; } @@ -1441,7 +1439,7 @@ public class InsetsController implements WindowInsetsController, InsetsAnimation } void dump(String prefix, PrintWriter pw) { - pw.println(prefix); pw.println("InsetsController:"); + pw.print(prefix); pw.println("InsetsController:"); mState.dump(prefix + " ", pw); } diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java index dea32cd96756..31ca8e124f9e 100644 --- a/core/java/android/view/MotionEvent.java +++ b/core/java/android/view/MotionEvent.java @@ -2674,7 +2674,7 @@ public final class MotionEvent extends InputEvent implements Parcelable { * @see #AXIS_X */ public final float getRawX() { - Compatibility.reportChange(APP_USES_RAW_INPUT_COORDS); + Compatibility.reportUnconditionalChange(APP_USES_RAW_INPUT_COORDS); return nativeGetRawAxisValue(mNativePtr, AXIS_X, 0, HISTORY_CURRENT); } @@ -2688,7 +2688,7 @@ public final class MotionEvent extends InputEvent implements Parcelable { * @see #AXIS_Y */ public final float getRawY() { - Compatibility.reportChange(APP_USES_RAW_INPUT_COORDS); + Compatibility.reportUnconditionalChange(APP_USES_RAW_INPUT_COORDS); return nativeGetRawAxisValue(mNativePtr, AXIS_Y, 0, HISTORY_CURRENT); } @@ -2705,7 +2705,7 @@ public final class MotionEvent extends InputEvent implements Parcelable { * @see #AXIS_X */ public float getRawX(int pointerIndex) { - Compatibility.reportChange(APP_USES_RAW_INPUT_COORDS); + Compatibility.reportUnconditionalChange(APP_USES_RAW_INPUT_COORDS); return nativeGetRawAxisValue(mNativePtr, AXIS_X, pointerIndex, HISTORY_CURRENT); } @@ -2722,7 +2722,7 @@ public final class MotionEvent extends InputEvent implements Parcelable { * @see #AXIS_Y */ public float getRawY(int pointerIndex) { - Compatibility.reportChange(APP_USES_RAW_INPUT_COORDS); + Compatibility.reportUnconditionalChange(APP_USES_RAW_INPUT_COORDS); return nativeGetRawAxisValue(mNativePtr, AXIS_Y, pointerIndex, HISTORY_CURRENT); } diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java index 4977a6e59ede..3ff7a65b6c6a 100644 --- a/core/java/android/view/SurfaceControl.java +++ b/core/java/android/view/SurfaceControl.java @@ -34,6 +34,7 @@ import android.annotation.Size; import android.annotation.TestApi; import android.compat.annotation.UnsupportedAppUsage; import android.graphics.Bitmap; +import android.graphics.BLASTBufferQueue; import android.graphics.ColorSpace; import android.graphics.GraphicBuffer; import android.graphics.Matrix; @@ -95,6 +96,7 @@ public final class SurfaceControl implements Parcelable { private static native void nativeWriteToParcel(long nativeObject, Parcel out); private static native void nativeRelease(long nativeObject); private static native void nativeDisconnect(long nativeObject); + private static native void nativeUpdateDefaultBufferSize(long nativeObject, int width, int height); private static native int nativeCaptureDisplay(DisplayCaptureArgs captureArgs, ScreenCaptureListener captureListener); private static native int nativeCaptureLayers(LayerCaptureArgs captureArgs, @@ -1083,6 +1085,11 @@ public final class SurfaceControl implements Parcelable { throw new IllegalStateException( "Only buffer layers can set a valid buffer size."); } + + if ((mFlags & FX_SURFACE_MASK) == FX_SURFACE_NORMAL) { + setBLASTLayer(); + } + return new SurfaceControl( mSession, mName, mWidth, mHeight, mFormat, mFlags, mParent, mMetadata, mLocalOwnerView, mCallsite); @@ -1139,9 +1146,6 @@ public final class SurfaceControl implements Parcelable { return setFlags(FX_SURFACE_NORMAL, FX_SURFACE_MASK); } - /** - * Set the initial size of the controlled surface's buffers in pixels. - */ private void unsetBufferSize() { mWidth = 0; mHeight = 0; @@ -1310,7 +1314,6 @@ public final class SurfaceControl implements Parcelable { * @hide */ public Builder setBLASTLayer() { - unsetBufferSize(); return setFlags(FX_SURFACE_BLAST, FX_SURFACE_MASK); } @@ -2659,8 +2662,7 @@ public final class SurfaceControl implements Parcelable { final Point size = mResizedSurfaces.valueAt(i); final SurfaceControl surfaceControl = mResizedSurfaces.keyAt(i); synchronized (surfaceControl.mLock) { - surfaceControl.mWidth = size.x; - surfaceControl.mHeight = size.y; + surfaceControl.resize(size.x, size.y); } } mResizedSurfaces.clear(); @@ -3576,4 +3578,13 @@ public final class SurfaceControl implements Parcelable { public static Transaction getGlobalTransaction() { return sGlobalTransaction; } + + /** + * @hide + */ + public void resize(int w, int h) { + mWidth = w; + mHeight = h; + nativeUpdateDefaultBufferSize(mNativeObject, w, h); + } } diff --git a/core/java/android/view/SyncRtSurfaceTransactionApplier.java b/core/java/android/view/SyncRtSurfaceTransactionApplier.java index acbcbfad1a75..162c71bf1c16 100644 --- a/core/java/android/view/SyncRtSurfaceTransactionApplier.java +++ b/core/java/android/view/SyncRtSurfaceTransactionApplier.java @@ -191,7 +191,7 @@ public class SyncRtSurfaceTransactionApplier { * @return this Builder */ public Builder withMatrix(Matrix matrix) { - this.matrix = matrix; + this.matrix = new Matrix(matrix); flags |= FLAG_MATRIX; return this; } @@ -201,7 +201,7 @@ public class SyncRtSurfaceTransactionApplier { * @return this Builder */ public Builder withWindowCrop(Rect windowCrop) { - this.windowCrop = windowCrop; + this.windowCrop = new Rect(windowCrop); flags |= FLAG_WINDOW_CROP; return this; } @@ -272,8 +272,8 @@ public class SyncRtSurfaceTransactionApplier { this.flags = params; this.surface = surface; this.alpha = alpha; - this.matrix = new Matrix(matrix); - this.windowCrop = new Rect(windowCrop); + this.matrix = matrix; + this.windowCrop = windowCrop; this.layer = layer; this.cornerRadius = cornerRadius; this.backgroundBlurRadius = backgroundBlurRadius; diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java index d6b5a2c299e9..b82afca2f694 100644 --- a/core/java/android/view/View.java +++ b/core/java/android/view/View.java @@ -1494,7 +1494,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, public static final int SCROLL_CAPTURE_HINT_AUTO = 0; /** - * Explicitly exclcude this view as a potential scroll capture target. The system will not + * Explicitly exclude this view as a potential scroll capture target. The system will not * consider it. Mutually exclusive with {@link #SCROLL_CAPTURE_HINT_INCLUDE}, which this flag * takes precedence over. * @@ -5260,6 +5260,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, @Nullable private ViewTranslationCallback mViewTranslationCallback; + @Nullable + + private ViewTranslationResponse mViewTranslationResponse; + /** * Simple constructor to use when creating a view from code. * @@ -26005,6 +26009,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * * @attr ref android.R.styleable#View_minWidth */ + @RemotableViewMethod public void setMinimumWidth(int minWidth) { mMinWidth = minWidth; requestLayout(); @@ -30143,6 +30148,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback, */ public void setScrollCaptureHint(@ScrollCaptureHint int hint) { mPrivateFlags4 &= ~PFLAG4_SCROLL_CAPTURE_HINT_MASK; + // Since include/exclude are mutually exclusive, exclude takes precedence. + if ((hint & SCROLL_CAPTURE_HINT_EXCLUDE) != 0) { + hint &= ~SCROLL_CAPTURE_HINT_INCLUDE; + } mPrivateFlags4 |= ((hint << PFLAG4_SCROLL_CAPTURE_HINT_SHIFT) & PFLAG4_SCROLL_CAPTURE_HINT_MASK); } @@ -30765,57 +30774,50 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } /** - * Returns a {@link ViewTranslationRequest} which represents the content to be translated. + * Collects a {@link ViewTranslationRequest} which represents the content to be translated in + * the view. * - * <p>The default implementation does nothing and returns null.</p> + * <p>The default implementation does nothing.</p> * * @param supportedFormats the supported translation formats. For now, the only possible value * is the {@link android.view.translation.TranslationSpec#DATA_FORMAT_TEXT}. - * @return the {@link ViewTranslationRequest} which contains the information to be translated or - * {@code null} if this View doesn't support translation. - * The {@link AutofillId} must be set on the returned value. + * @param requestsCollector a {@link ViewTranslationRequest} collector that can be used to + * collect the information to be translated in the view. The {@code requestsCollector} only + * accepts one request; an IllegalStateException is thrown if more than one + * {@link ViewTranslationRequest} is submitted to it. The {@link AutofillId} must be set on the + * {@link ViewTranslationRequest}. */ - @Nullable - public ViewTranslationRequest onCreateTranslationRequest( - @NonNull @DataFormat int[] supportedFormats) { - return null; + public void onCreateViewTranslationRequest(@NonNull @DataFormat int[] supportedFormats, + @NonNull Consumer<ViewTranslationRequest> requestsCollector) { } /** - * Returns a {@link ViewTranslationRequest} list which represents the content to be translated - * in the virtual view. This is called if this view returned a virtual view structure - * from {@link #onProvideContentCaptureStructure} and the system determined that those virtual - * views were relevant for translation. + * Collects {@link ViewTranslationRequest}s which represents the content to be translated + * for the virtual views in the host view. This is called if this view returned a virtual + * view structure from {@link #onProvideContentCaptureStructure} and the system determined that + * those virtual views were relevant for translation. * * <p>The default implementation does nothing.</p> * - * @param virtualChildIds the virtual child ids which represents the child views in the virtual + * @param virtualIds the virtual view ids which represents the virtual views in the host * view. * @param supportedFormats the supported translation formats. For now, the only possible value * is the {@link android.view.translation.TranslationSpec#DATA_FORMAT_TEXT}. * @param requestsCollector a {@link ViewTranslationRequest} collector that can be called - * multiple times to collect the information to be translated in the virtual view. One + * multiple times to collect the information to be translated in the host view. One * {@link ViewTranslationRequest} per virtual child. The {@link ViewTranslationRequest} must * contains the {@link AutofillId} corresponding to the virtualChildIds. Do not keep this * Consumer after the method returns. */ @SuppressLint("NullableCollection") - public void onCreateTranslationRequests(@NonNull long[] virtualChildIds, + public void onCreateVirtualViewTranslationRequests(@NonNull long[] virtualIds, @NonNull @DataFormat int[] supportedFormats, @NonNull Consumer<ViewTranslationRequest> requestsCollector) { // no-op } /** - * Returns a {@link ViewTranslationCallback} that is used to display/hide the translated - * information. If the View supports displaying translated content, it should implement - * {@link ViewTranslationCallback}. - * - * <p>The default implementation returns null if developers don't set the customized - * {@link ViewTranslationCallback} by {@link #setViewTranslationCallback} </p> - * - * @return a {@link ViewTranslationCallback} that is used to control how to display the - * translated information or {@code null} if this View doesn't support translation. + * @hide */ @Nullable public ViewTranslationCallback getViewTranslationCallback() { @@ -30835,30 +30837,52 @@ public class View implements Drawable.Callback, KeyEvent.Callback, } /** - * Called when the content from {@link View#onCreateTranslationRequest} had been translated by - * the TranslationService. + * Clear the {@link ViewTranslationCallback} from this view. + */ + public void clearViewTranslationCallback() { + mViewTranslationCallback = null; + } + + /** + * Returns the {@link ViewTranslationResponse} associated with this view. The response will be + * set when the translation is done then {@link #onViewTranslationResponse} is called. The + * {@link ViewTranslationCallback} can use to get {@link ViewTranslationResponse} to display the + * translated information. * - * <p> The default implementation does nothing.</p> + * @return a {@link ViewTranslationResponse} that contains the translated information associated + * with this view or {@code null} if this View doesn't have the translation. + */ + @Nullable + public ViewTranslationResponse getViewTranslationResponse() { + return mViewTranslationResponse; + } + + /** + * Called when the content from {@link View#onCreateViewTranslationRequest} had been translated + * by the TranslationService. + * + * <p> The default implementation will set the ViewTranslationResponse that can be get from + * {@link View#getViewTranslationResponse}. </p> * * @param response a {@link ViewTranslationResponse} that contains the translated information * which can be shown in the view. */ - public void onTranslationResponse(@NonNull ViewTranslationResponse response) { - // no-op + public void onViewTranslationResponse(@NonNull ViewTranslationResponse response) { + mViewTranslationResponse = response; } /** - * Called when the content from {@link View#onCreateTranslationRequest} had been translated by - * the TranslationService. + * Called when the content from {@link View#onCreateVirtualViewTranslationRequests} had been + * translated by the TranslationService. * * <p> The default implementation does nothing.</p> * * @param response a {@link ViewTranslationResponse} SparseArray for the request that send by - * {@link View#onCreateTranslationRequests} that contains the translated information which can - * be shown in the view. The key of SparseArray is - * the virtual child ids. + * {@link View#onCreateVirtualViewTranslationRequests} that contains the translated information + * which can be shown in the view. The key of SparseArray is the virtual child ids. */ - public void onTranslationResponse(@NonNull LongSparseArray<ViewTranslationResponse> response) { + public void onVirtualViewTranslationResponses( + @NonNull LongSparseArray<ViewTranslationResponse> response) { // no-op } @@ -30866,16 +30890,18 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * Dispatch to collect the {@link ViewTranslationRequest}s for translation purpose by traversing * the hierarchy when the app requests ui translation. Typically, this method should only be * overridden by subclasses that provide a view hierarchy (such as {@link ViewGroup}). Other - * classes should override {@link View#onCreateTranslationRequest}. When requested to start the - * ui translation, the system will call this method to traverse the view hierarchy to call - * {@link View#onCreateTranslationRequest} to build {@link ViewTranslationRequest}s and create a + * classes should override {@link View#onCreateViewTranslationRequest} for normal view or + * override {@link View#onVirtualViewTranslationResponses} for view contains virtual children. + * When requested to start the ui translation, the system will call this method to traverse the + * view hierarchy to collect {@link ViewTranslationRequest}s and create a * {@link android.view.translation.Translator} to translate the requests. All the * {@link ViewTranslationRequest}s must be added when the traversal is done. * - * <p> The default implementation calls {@link View#onCreateTranslationRequest} to build - * {@link ViewTranslationRequest} if the view should be translated. The view is marked as having - * {@link #setHasTransientState(boolean) transient state} so that recycling of views doesn't - * prevent the system from attaching the response to it.</p> + * <p> The default implementation calls {@link View#onCreateViewTranslationRequest} for normal + * view or calls {@link View#onVirtualViewTranslationResponses} for view contains virtual + * children to build {@link ViewTranslationRequest} if the view should be translated. + * The view is marked as having {@link #setHasTransientState(boolean) transient state} so that + * recycling of views doesn't prevent the system from attaching the response to it.</p> * * @param viewIds a map for the view's {@link AutofillId} and its virtual child ids or * {@code null} if the view doesn't have virtual child that should be translated. The virtual @@ -30888,27 +30914,47 @@ public class View implements Drawable.Callback, KeyEvent.Callback, */ public void dispatchRequestTranslation(@NonNull Map<AutofillId, long[]> viewIds, @NonNull @DataFormat int[] supportedFormats, - @Nullable TranslationCapability capability, + @NonNull TranslationCapability capability, @NonNull List<ViewTranslationRequest> requests) { AutofillId autofillId = getAutofillId(); if (viewIds.containsKey(autofillId)) { if (viewIds.get(autofillId) == null) { - ViewTranslationRequest request = onCreateTranslationRequest(supportedFormats); - if (request != null && request.getKeys().size() > 0) { - requests.add(request); - if (Log.isLoggable(CONTENT_CAPTURE_LOG_TAG, Log.VERBOSE)) { - Log.v(CONTENT_CAPTURE_LOG_TAG, "Calling setHasTransientState(true) for " - + autofillId); - } - // TODO: Add a default ViewTranslationCallback for View that resets this in - // onClearTranslation(). Also update the javadoc for this method to mention - // that. - setHasTransientState(true); - } + // TODO: avoiding the allocation per view + onCreateViewTranslationRequest(supportedFormats, + new ViewTranslationRequestConsumer(requests)); } else { - onCreateTranslationRequests(viewIds.get(autofillId), supportedFormats, request -> { - requests.add(request); - }); + onCreateVirtualViewTranslationRequests(viewIds.get(autofillId), supportedFormats, + request -> { + requests.add(request); + }); + } + } + } + + private class ViewTranslationRequestConsumer implements Consumer<ViewTranslationRequest> { + private final List<ViewTranslationRequest> mRequests; + private boolean mCalled; + + ViewTranslationRequestConsumer(List<ViewTranslationRequest> requests) { + mRequests = requests; + } + + @Override + public void accept(ViewTranslationRequest request) { + if (mCalled) { + throw new IllegalStateException("The translation Consumer is not reusable."); + } + mCalled = true; + if (request != null && request.getKeys().size() > 0) { + mRequests.add(request); + if (Log.isLoggable(CONTENT_CAPTURE_LOG_TAG, Log.VERBOSE)) { + Log.v(CONTENT_CAPTURE_LOG_TAG, "Calling setHasTransientState(true) for " + + getAutofillId()); + } + // TODO: Add a default ViewTranslationCallback for View that resets this in + // onClearTranslation(). Also update the javadoc for this method to mention + // that. + setHasTransientState(true); } } } @@ -30927,7 +30973,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback, * @param executor The executor that the callback should be invoked on. * @param callback The callback to handle the results of generating the display hash */ - @Nullable public void generateDisplayHash(@NonNull String hashAlgorithm, @Nullable Rect bounds, @NonNull Executor executor, @NonNull DisplayHashResultCallback callback) { diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java index 04e2cdee56a0..a02281be1228 100644 --- a/core/java/android/view/ViewGroup.java +++ b/core/java/android/view/ViewGroup.java @@ -7490,12 +7490,9 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager @NonNull Rect localVisibleRect, @NonNull Point windowOffset, @NonNull Consumer<ScrollCaptureTarget> targets) { - // copy local visible rect for modification and dispatch - final Rect rect = getTempRect(); - rect.set(localVisibleRect); - - if (getClipToPadding()) { - rect.inset(mPaddingLeft, mPaddingTop, mPaddingRight, mPaddingBottom); + if (getClipToPadding() && !localVisibleRect.intersect(mPaddingLeft, mPaddingTop, + (mRight - mLeft) - mPaddingRight, (mBottom - mTop) - mPaddingBottom)) { + return; } // Dispatch to self first. @@ -7506,6 +7503,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager return; } + final Rect tmpRect = getTempRect(); final int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { View child = getChildAt(i); @@ -7518,8 +7516,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager // If the resulting rectangle is not empty, the request is forwarded to the child. // copy local visible rect for modification and dispatch - final Rect childVisibleRect = getTempRect(); - childVisibleRect.set(localVisibleRect); + tmpRect.set(localVisibleRect); // transform to child coords final Point childWindowOffset = getTempPoint(); @@ -7528,20 +7525,18 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager final int dx = child.mLeft - mScrollX; final int dy = child.mTop - mScrollY; - childVisibleRect.offset(-dx, -dy); + tmpRect.offset(-dx, -dy); childWindowOffset.offset(dx, dy); boolean rectIsVisible = true; // Clip to child bounds if (getClipChildren()) { - rectIsVisible = childVisibleRect.intersect(0, 0, child.getWidth(), - child.getHeight()); + rectIsVisible = tmpRect.intersect(0, 0, child.getWidth(), child.getHeight()); } - // Clip to child padding. if (rectIsVisible) { - child.dispatchScrollCaptureSearch(childVisibleRect, childWindowOffset, targets); + child.dispatchScrollCaptureSearch(tmpRect, childWindowOffset, targets); } } } diff --git a/core/java/android/view/contentcapture/ContentCaptureEvent.java b/core/java/android/view/contentcapture/ContentCaptureEvent.java index ce014693c4c4..ac4554134a44 100644 --- a/core/java/android/view/contentcapture/ContentCaptureEvent.java +++ b/core/java/android/view/contentcapture/ContentCaptureEvent.java @@ -428,10 +428,11 @@ public final class ContentCaptureEvent implements Parcelable { } if (mNode != null) { final String className = mNode.getClassName(); - if (mNode != null) { - string.append(", class=").append(className); - } + string.append(", class=").append(className); string.append(", id=").append(mNode.getAutofillId()); + if (mNode.getText() != null) { + string.append(", text=").append(getSanitizedString(mNode.getText())); + } } if (mText != null) { string.append(", text=").append(getSanitizedString(mText)); diff --git a/core/java/android/view/displayhash/DisplayHash.java b/core/java/android/view/displayhash/DisplayHash.java index 41484865b98e..4ec0a5918300 100644 --- a/core/java/android/view/displayhash/DisplayHash.java +++ b/core/java/android/view/displayhash/DisplayHash.java @@ -16,6 +16,7 @@ package android.view.displayhash; +import android.annotation.CurrentTimeMillisLong; import android.annotation.NonNull; import android.annotation.SystemApi; import android.graphics.Rect; @@ -31,6 +32,7 @@ public final class DisplayHash implements Parcelable { /** * The timestamp when the hash was generated. */ + @CurrentTimeMillisLong private final long mTimeMillis; /** @@ -73,7 +75,7 @@ public final class DisplayHash implements Parcelable { * @hide */ @SystemApi - public DisplayHash(long timeMillis, @NonNull Rect boundsInWindow, + public DisplayHash(@CurrentTimeMillisLong long timeMillis, @NonNull Rect boundsInWindow, @NonNull String hashAlgorithm, @NonNull byte[] imageHash, @NonNull byte[] hmac) { mTimeMillis = timeMillis; mBoundsInWindow = boundsInWindow; @@ -92,6 +94,7 @@ public final class DisplayHash implements Parcelable { * @hide */ @SystemApi + @CurrentTimeMillisLong public long getTimeMillis() { return mTimeMillis; } diff --git a/core/java/android/view/displayhash/DisplayHashManager.java b/core/java/android/view/displayhash/DisplayHashManager.java index 69dfc3869b7d..4f5fef6f65f9 100644 --- a/core/java/android/view/displayhash/DisplayHashManager.java +++ b/core/java/android/view/displayhash/DisplayHashManager.java @@ -35,7 +35,8 @@ import java.util.Collections; import java.util.Set; /** - * Utility class for DisplayHash requests. + * Manages DisplayHash requests. The manager object can be retrieved by calling + * {@code Context.getSystemService(Context.DISPLAY_HASH_SERVICE)} */ @SystemService(DISPLAY_HASH_SERVICE) public final class DisplayHashManager { @@ -75,7 +76,7 @@ public final class DisplayHashManager { return sSupportedHashAlgorithms; } catch (RemoteException e) { Log.e(TAG, "Failed to send request getSupportedHashingAlgorithms", e); - return Collections.emptySet(); + throw e.rethrowFromSystemServer(); } } } @@ -93,7 +94,7 @@ public final class DisplayHashManager { return WindowManagerGlobal.getWindowManagerService().verifyDisplayHash(displayHash); } catch (RemoteException e) { Log.e(TAG, "Failed to send request verifyImpressionToken", e); - return null; + throw e.rethrowFromSystemServer(); } } diff --git a/core/java/android/view/displayhash/VerifiedDisplayHash.java b/core/java/android/view/displayhash/VerifiedDisplayHash.java index 16a428e73005..b17c068dd984 100644 --- a/core/java/android/view/displayhash/VerifiedDisplayHash.java +++ b/core/java/android/view/displayhash/VerifiedDisplayHash.java @@ -16,6 +16,7 @@ package android.view.displayhash; +import android.annotation.CurrentTimeMillisLong; import android.annotation.NonNull; import android.graphics.Rect; import android.os.Parcelable; @@ -30,6 +31,7 @@ public final class VerifiedDisplayHash implements Parcelable { /** * The timestamp when the hash was generated. */ + @CurrentTimeMillisLong private final long mTimeMillis; /** @@ -78,7 +80,7 @@ public final class VerifiedDisplayHash implements Parcelable { - // Code below generated by codegen v1.0.22. + // Code below generated by codegen v1.0.23. // // DO NOT MODIFY! // CHECKSTYLE:OFF Generated code @@ -106,11 +108,13 @@ public final class VerifiedDisplayHash implements Parcelable { */ @DataClass.Generated.Member public VerifiedDisplayHash( - long timeMillis, + @CurrentTimeMillisLong long timeMillis, @NonNull Rect boundsInWindow, @NonNull String hashAlgorithm, @NonNull byte[] imageHash) { this.mTimeMillis = timeMillis; + com.android.internal.util.AnnotationValidations.validate( + CurrentTimeMillisLong.class, null, mTimeMillis); this.mBoundsInWindow = boundsInWindow; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mBoundsInWindow); @@ -128,7 +132,7 @@ public final class VerifiedDisplayHash implements Parcelable { * The timestamp when the hash was generated. */ @DataClass.Generated.Member - public long getTimeMillis() { + public @CurrentTimeMillisLong long getTimeMillis() { return mTimeMillis; } @@ -200,6 +204,8 @@ public final class VerifiedDisplayHash implements Parcelable { byte[] imageHash = in.createByteArray(); this.mTimeMillis = timeMillis; + com.android.internal.util.AnnotationValidations.validate( + CurrentTimeMillisLong.class, null, mTimeMillis); this.mBoundsInWindow = boundsInWindow; com.android.internal.util.AnnotationValidations.validate( NonNull.class, null, mBoundsInWindow); @@ -228,10 +234,10 @@ public final class VerifiedDisplayHash implements Parcelable { }; @DataClass.Generated( - time = 1613168749684L, - codegenVersion = "1.0.22", + time = 1617747271440L, + codegenVersion = "1.0.23", sourceFile = "frameworks/base/core/java/android/view/displayhash/VerifiedDisplayHash.java", - inputSignatures = "private final long mTimeMillis\nprivate final @android.annotation.NonNull android.graphics.Rect mBoundsInWindow\nprivate final @android.annotation.NonNull java.lang.String mHashAlgorithm\nprivate final @android.annotation.NonNull byte[] mImageHash\nprivate java.lang.String imageHashToString()\nprivate java.lang.String byteArrayToString(byte[])\nclass VerifiedDisplayHash extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genAidl=true)") + inputSignatures = "private final @android.annotation.CurrentTimeMillisLong long mTimeMillis\nprivate final @android.annotation.NonNull android.graphics.Rect mBoundsInWindow\nprivate final @android.annotation.NonNull java.lang.String mHashAlgorithm\nprivate final @android.annotation.NonNull byte[] mImageHash\nprivate java.lang.String imageHashToString()\nprivate java.lang.String byteArrayToString(byte[])\nclass VerifiedDisplayHash extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genToString=true, genAidl=true)") @Deprecated private void __metadata() {} diff --git a/core/java/android/view/textservice/SpellCheckerSession.java b/core/java/android/view/textservice/SpellCheckerSession.java index a449cf1876e1..6cfb9381f130 100644 --- a/core/java/android/view/textservice/SpellCheckerSession.java +++ b/core/java/android/view/textservice/SpellCheckerSession.java @@ -17,10 +17,13 @@ package android.view.textservice; import android.annotation.BinderThread; +import android.annotation.NonNull; import android.annotation.Nullable; +import android.annotation.SuppressLint; import android.compat.annotation.UnsupportedAppUsage; import android.os.Binder; import android.os.Build; +import android.os.Bundle; import android.os.Handler; import android.os.HandlerThread; import android.os.Message; @@ -37,6 +40,7 @@ import com.android.internal.textservice.ITextServicesSessionListener; import dalvik.system.CloseGuard; import java.util.LinkedList; +import java.util.Locale; import java.util.Queue; import java.util.concurrent.Executor; @@ -525,6 +529,161 @@ public class SpellCheckerSession { } } + /** Parameters used to create a {@link SpellCheckerSession}. */ + public static class SpellCheckerSessionParams { + @Nullable + private final Locale mLocale; + private final boolean mShouldReferToSpellCheckerLanguageSettings; + private final @SuggestionsInfo.ResultAttrs int mSupportedAttributes; + private final Bundle mExtras; + + private SpellCheckerSessionParams(Locale locale, + boolean referToSpellCheckerLanguageSettings, int supportedAttributes, + Bundle extras) { + mLocale = locale; + mShouldReferToSpellCheckerLanguageSettings = referToSpellCheckerLanguageSettings; + mSupportedAttributes = supportedAttributes; + mExtras = extras; + } + + /** + * Returns the locale in which the spell checker should operate. + * + * @see android.service.textservice.SpellCheckerService.Session#getLocale() + */ + @SuppressLint("UseIcu") + @Nullable + public Locale getLocale() { + return mLocale; + } + + /** + * Returns true if the user's spell checker language settings should be used to determine + * the spell checker locale. + */ + public boolean shouldReferToSpellCheckerLanguageSettings() { + return mShouldReferToSpellCheckerLanguageSettings; + } + + /** + * Returns a bitmask of {@link SuggestionsInfo} attributes that the spell checker can set + * in {@link SuggestionsInfo} it returns. + * + * @see android.service.textservice.SpellCheckerService.Session#getSupportedAttributes() + */ + public @SuggestionsInfo.ResultAttrs int getSupportedAttributes() { + return mSupportedAttributes; + } + + /** + * Returns a bundle containing extra parameters for the spell checker. + * + * <p>This bundle can be used to pass implementation-specific parameters to the + * {@link android.service.textservice.SpellCheckerService} implementation. + * + * @see android.service.textservice.SpellCheckerService.Session#getBundle() + */ + @NonNull + public Bundle getExtras() { + return mExtras; + } + + /** Builder of {@link SpellCheckerSessionParams}. */ + public static final class Builder { + @Nullable + private Locale mLocale; + private boolean mShouldReferToSpellCheckerLanguageSettings = false; + private @SuggestionsInfo.ResultAttrs int mSupportedAttributes = 0; + private Bundle mExtras = Bundle.EMPTY; + + /** Constructs a {@code Builder}. */ + public Builder() { + } + + /** + * Returns constructed {@link SpellCheckerSession} instance. + * + * <p>Before calling this method, either {@link #setLocale(Locale)} should be called + * with a non-null locale or + * {@link #setShouldReferToSpellCheckerLanguageSettings(boolean)} should be called with + * {@code true}. + */ + @NonNull + public SpellCheckerSessionParams build() { + if (mLocale == null && !mShouldReferToSpellCheckerLanguageSettings) { + throw new IllegalArgumentException("mLocale should not be null if " + + " mShouldReferToSpellCheckerLanguageSettings is false."); + } + return new SpellCheckerSessionParams(mLocale, + mShouldReferToSpellCheckerLanguageSettings, mSupportedAttributes, mExtras); + } + + /** + * Sets the locale in which the spell checker should operate. + * + * @see android.service.textservice.SpellCheckerService.Session#getLocale() + */ + @NonNull + public Builder setLocale(@SuppressLint("UseIcu") @Nullable Locale locale) { + mLocale = locale; + return this; + } + + /** + * Sets whether or not the user's spell checker language settings should be used to + * determine spell checker locale. + * + * <p>If {@code shouldReferToSpellCheckerLanguageSettings} is true, the exact way of + * determining spell checker locale differs based on {@code locale} specified in + * {@link #setLocale(Locale)}. + * If {@code shouldReferToSpellCheckerLanguageSettings} is true and {@code locale} is + * null, the locale specified in Settings will be used. If + * {@code shouldReferToSpellCheckerLanguageSettings} is true and {@code locale} is not + * null, {@link SpellCheckerSession} can be created only when the locale specified in + * Settings is the same as {@code locale}. Exceptionally, if + * {@code shouldReferToSpellCheckerLanguageSettings} is true and {@code locale} is + * language only (e.g. "en"), the specified locale in Settings (e.g. "en_US") will be + * used. + * + * @see #setLocale(Locale) + */ + @NonNull + public Builder setShouldReferToSpellCheckerLanguageSettings( + boolean shouldReferToSpellCheckerLanguageSettings) { + mShouldReferToSpellCheckerLanguageSettings = + shouldReferToSpellCheckerLanguageSettings; + return this; + } + + /** + * Sets a bitmask of {@link SuggestionsInfo} attributes that the spell checker can set + * in {@link SuggestionsInfo} it returns. + * + * @see android.service.textservice.SpellCheckerService.Session#getSupportedAttributes() + */ + @NonNull + public Builder setSupportedAttributes( + @SuggestionsInfo.ResultAttrs int supportedAttributes) { + mSupportedAttributes = supportedAttributes; + return this; + } + + /** + * Sets a bundle containing extra parameters for the spell checker. + * + * <p>This bundle can be used to pass implementation-specific parameters to the + * {@link android.service.textservice.SpellCheckerService} implementation. + * + * @see android.service.textservice.SpellCheckerService.Session#getBundle() + */ + @NonNull + public Builder setExtras(@NonNull Bundle extras) { + mExtras = extras; + return this; + } + } + } + /** * Callback for getting results from text services */ diff --git a/core/java/android/view/textservice/TextServicesManager.java b/core/java/android/view/textservice/TextServicesManager.java index bf91cca85522..ae927cf60565 100644 --- a/core/java/android/view/textservice/TextServicesManager.java +++ b/core/java/android/view/textservice/TextServicesManager.java @@ -19,7 +19,6 @@ package android.view.textservice; import android.annotation.CallbackExecutor; import android.annotation.NonNull; import android.annotation.Nullable; -import android.annotation.SuppressLint; import android.annotation.SystemService; import android.annotation.UserIdInt; import android.compat.annotation.UnsupportedAppUsage; @@ -35,6 +34,7 @@ import android.os.UserHandle; import android.util.Log; import android.view.inputmethod.InputMethodManager; import android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener; +import android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams; import com.android.internal.textservice.ISpellCheckerSessionListener; import com.android.internal.textservice.ITextServicesManager; @@ -166,15 +166,17 @@ public final class TextServicesManager { * {@link SuggestionsInfo#RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS} will be passed to the spell * checker as supported attributes. * - * @see #newSpellCheckerSession(Locale, boolean, int, Bundle, Executor, - * SpellCheckerSessionListener) - * @param bundle A bundle to pass to the spell checker. - * @param locale The locale for the spell checker. - * @param listener A spell checker session lister for getting results from the spell checker. - * The listener will be called on the calling thread. - * @param referToSpellCheckerLanguageSettings If true, the session for one of enabled - * languages in settings will be used. - * @return A spell checker session from the spell checker. + * @param locale the locale for the spell checker. If {@code locale} is null and + * referToSpellCheckerLanguageSettings is true, the locale specified in Settings will be + * returned. If {@code locale} is not null and referToSpellCheckerLanguageSettings is true, + * the locale specified in Settings will be returned only when it is same as {@code locale}. + * Exceptionally, when referToSpellCheckerLanguageSettings is true and {@code locale} is + * only language (e.g. "en"), the specified locale in Settings (e.g. "en_US") will be + * selected. + * @param listener a spell checker session lister for getting results from the spell checker. + * @param referToSpellCheckerLanguageSettings if true, the session for one of enabled + * languages in settings will be returned. + * @return a spell checker session of the spell checker */ @Nullable public SpellCheckerSession newSpellCheckerSession(@Nullable Bundle bundle, @@ -186,51 +188,40 @@ public final class TextServicesManager { int supportedAttributes = SuggestionsInfo.RESULT_ATTR_IN_THE_DICTIONARY | SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO | SuggestionsInfo.RESULT_ATTR_HAS_RECOMMENDED_SUGGESTIONS; + SpellCheckerSessionParams.Builder paramsBuilder = new SpellCheckerSessionParams.Builder() + .setLocale(locale) + .setShouldReferToSpellCheckerLanguageSettings(referToSpellCheckerLanguageSettings) + .setSupportedAttributes(supportedAttributes); + if (bundle != null) { + paramsBuilder.setExtras(bundle); + } // Using the implicit looper to preserve the old behavior. Executor executor = new HandlerExecutor(new Handler()); - return newSpellCheckerSession(locale, referToSpellCheckerLanguageSettings, - supportedAttributes, bundle, executor, listener); + return newSpellCheckerSession(paramsBuilder.build(), executor, listener); } /** * Get a spell checker session from the spell checker. * - * <p>If {@code locale} is null and {@code referToSpellCheckerLanguageSettings} is true, the - * locale specified in Settings will be used. If {@code locale} is not null and - * {@code referToSpellCheckerLanguageSettings} is true, the locale specified in Settings will be - * returned only when it is same as {@code locale}. - * Exceptionally, when {@code referToSpellCheckerLanguageSettings} is true and {@code locale} is - * language only (e.g. "en"), the specified locale in Settings (e.g. "en_US") will be - * selected. - * - * @param locale The locale for the spell checker. - * @param referToSpellCheckerLanguageSettings If true, the session for one of enabled - * languages in settings will be used. - * @param supportedAttributes A union of {@link SuggestionsInfo} attributes that the spell - * checker can set in the spell checking results. - * @param bundle A bundle for passing implementation-specific extra parameters for the spell - * checker. You can check the current spell checker package by - * {@link #getCurrentSpellCheckerInfo()}. - * @param executor An executor to call the listener on. - * @param listener A spell checker session lister for getting results from a spell checker. + * @param params The parameters passed to the spell checker. + * @param executor The executor on which {@code listener} will be called back. + * @param listener a spell checker session lister for getting results from the spell checker. * @return The spell checker session of the spell checker. */ @Nullable public SpellCheckerSession newSpellCheckerSession( - @SuppressLint("UseIcu") @Nullable Locale locale, - boolean referToSpellCheckerLanguageSettings, - @SuggestionsInfo.ResultAttrs int supportedAttributes, - @Nullable Bundle bundle, + @NonNull SpellCheckerSessionParams params, @NonNull @CallbackExecutor Executor executor, @NonNull SpellCheckerSessionListener listener) { Objects.requireNonNull(executor); Objects.requireNonNull(listener); - if (!referToSpellCheckerLanguageSettings && locale == null) { + Locale locale = params.getLocale(); + if (!params.shouldReferToSpellCheckerLanguageSettings() && locale == null) { throw new IllegalArgumentException("Locale should not be null if you don't refer" + " settings."); } - if (referToSpellCheckerLanguageSettings && !isSpellCheckerEnabled()) { + if (params.shouldReferToSpellCheckerLanguageSettings() && !isSpellCheckerEnabled()) { return null; } @@ -244,7 +235,7 @@ public final class TextServicesManager { return null; } SpellCheckerSubtype subtypeInUse = null; - if (referToSpellCheckerLanguageSettings) { + if (params.shouldReferToSpellCheckerLanguageSettings()) { subtypeInUse = getCurrentSpellCheckerSubtype(true); if (subtypeInUse == null) { return null; @@ -278,7 +269,8 @@ public final class TextServicesManager { try { mService.getSpellCheckerService(mUserId, sci.getId(), subtypeInUse.getLocale(), session.getTextServicesSessionListener(), - session.getSpellCheckerSessionListener(), bundle, supportedAttributes); + session.getSpellCheckerSessionListener(), + params.getExtras(), params.getSupportedAttributes()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } diff --git a/core/java/android/view/translation/ITranslationManager.aidl b/core/java/android/view/translation/ITranslationManager.aidl index 9c53f461eb95..560edecc9da6 100644 --- a/core/java/android/view/translation/ITranslationManager.aidl +++ b/core/java/android/view/translation/ITranslationManager.aidl @@ -40,9 +40,6 @@ oneway interface ITranslationManager { void updateUiTranslationState(int state, in TranslationSpec sourceSpec, in TranslationSpec targetSpec, in List<AutofillId> viewIds, IBinder token, int taskId, int userId); - // deprecated - void updateUiTranslationStateByTaskId(int state, in TranslationSpec sourceSpec, - in TranslationSpec targetSpec, in List<AutofillId> viewIds, int taskId, int userId); void registerUiTranslationStateCallback(in IRemoteCallback callback, int userId); void unregisterUiTranslationStateCallback(in IRemoteCallback callback, int userId); diff --git a/core/java/android/view/translation/TranslationManager.java b/core/java/android/view/translation/TranslationManager.java index b61eab97779e..8785d9cec2c6 100644 --- a/core/java/android/view/translation/TranslationManager.java +++ b/core/java/android/view/translation/TranslationManager.java @@ -24,6 +24,7 @@ import android.app.PendingIntent; import android.content.Context; import android.os.Handler; import android.os.Looper; +import android.os.Parcelable; import android.os.RemoteException; import android.os.SynchronousResultReceiver; import android.util.ArrayMap; @@ -200,8 +201,14 @@ public final class TranslationManager { if (result.resultCode != STATUS_SYNC_CALL_SUCCESS) { return Collections.emptySet(); } - return new ArraySet<>( - (TranslationCapability[]) result.bundle.getParcelableArray(EXTRA_CAPABILITIES)); + Parcelable[] parcelables = result.bundle.getParcelableArray(EXTRA_CAPABILITIES); + ArraySet<TranslationCapability> capabilities = new ArraySet(); + for (Parcelable obj : parcelables) { + if (obj instanceof TranslationCapability) { + capabilities.add((TranslationCapability) obj); + } + } + return capabilities; } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } catch (TimeoutException e) { diff --git a/core/java/android/view/translation/TranslationResponse.java b/core/java/android/view/translation/TranslationResponse.java index f9b7012b8f03..eef283d7a6db 100644 --- a/core/java/android/view/translation/TranslationResponse.java +++ b/core/java/android/view/translation/TranslationResponse.java @@ -87,7 +87,7 @@ public final class TranslationResponse implements Parcelable { /** * Adds {@link TranslationResponseValue} to be translated. The input * TranslationResponseValue format should match those provided by the - * {@link android.view.translation.Translator}'s destSpec. + * {@link android.view.translation.Translator}'s targetSpec. * * @param value the translated value. * @return this Builder. @@ -109,7 +109,7 @@ public final class TranslationResponse implements Parcelable { /** * Sets the list of {@link ViewTranslationResponse} to be translated. The input * ViewTranslationResponse contains {@link TranslationResponseValue}s whose format should - * match those provided by the {@link android.view.translation.Translator}'s destSpec. + * match those provided by the {@link android.view.translation.Translator}'s targetSpec. * * @param response the translated response. * @return this Builder. diff --git a/core/java/android/view/translation/Translator.java b/core/java/android/view/translation/Translator.java index 188d5629e909..6037302a9445 100644 --- a/core/java/android/view/translation/Translator.java +++ b/core/java/android/view/translation/Translator.java @@ -231,9 +231,8 @@ public class Translator { * * @throws IllegalStateException if this Translator session was destroyed when called. * - * @deprecated use {@link #translate(TranslationRequest, CancellationSignal, + * @removed use {@link #translate(TranslationRequest, CancellationSignal, * Executor, Consumer)} instead. - * @hide */ @Deprecated @Nullable @@ -379,24 +378,5 @@ public class Translator { } } } - - @Override - public void onError() throws RemoteException { - final Consumer<TranslationResponse> callback = mCallback.get(); - final Runnable runnable = () -> callback.accept( - new TranslationResponse.Builder( - TranslationResponse.TRANSLATION_STATUS_UNKNOWN_ERROR) - .build()); - - if (callback != null) { - final Executor executor = mExecutor.get(); - final long token = Binder.clearCallingIdentity(); - try { - executor.execute(runnable); - } finally { - restoreCallingIdentity(token); - } - } - } } } diff --git a/core/java/android/view/translation/UiTranslationController.java b/core/java/android/view/translation/UiTranslationController.java index 00aeede2b242..0425572a6f76 100644 --- a/core/java/android/view/translation/UiTranslationController.java +++ b/core/java/android/view/translation/UiTranslationController.java @@ -100,7 +100,7 @@ public class UiTranslationController { * Update the Ui translation state. */ public void updateUiTranslationState(@UiTranslationState int state, TranslationSpec sourceSpec, - TranslationSpec destSpec, List<AutofillId> views) { + TranslationSpec targetSpec, List<AutofillId> views) { if (!mActivity.isResumed() && (state == STATE_UI_TRANSLATION_STARTED || state == STATE_UI_TRANSLATION_RESUMED)) { return; @@ -113,11 +113,11 @@ public class UiTranslationController { switch (state) { case STATE_UI_TRANSLATION_STARTED: final Pair<TranslationSpec, TranslationSpec> specs = - new Pair<>(sourceSpec, destSpec); + new Pair<>(sourceSpec, targetSpec); if (!mTranslators.containsKey(specs)) { mWorkerHandler.sendMessage(PooledLambda.obtainMessage( UiTranslationController::createTranslatorAndStart, - UiTranslationController.this, sourceSpec, destSpec, views)); + UiTranslationController.this, sourceSpec, targetSpec, views)); } else { onUiTranslationStarted(mTranslators.get(specs), views); } @@ -315,7 +315,7 @@ public class UiTranslationController { } return; } - view.onTranslationResponse(virtualChildResponse); + view.onVirtualViewTranslationResponses(virtualChildResponse); if (view.getViewTranslationCallback() != null) { view.getViewTranslationCallback().onShowTranslation(view); } @@ -373,8 +373,7 @@ public class UiTranslationController { // TODO: Do this for specific views on request only. callback.enableContentPadding(); - - view.onTranslationResponse(response); + view.onViewTranslationResponse(response); callback.onShowTranslation(view); }); } @@ -386,12 +385,13 @@ public class UiTranslationController { * translation when the Translator is created successfully. */ @WorkerThread - private void createTranslatorAndStart(TranslationSpec sourceSpec, TranslationSpec destSpec, + private void createTranslatorAndStart(TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> views) { - final Translator translator = createTranslatorIfNeeded(sourceSpec, destSpec); + // Create Translator + final Translator translator = createTranslatorIfNeeded(sourceSpec, targetSpec); if (translator == null) { - Log.w(TAG, "Can not create Translator for sourceSpec:" + sourceSpec + " destSpec:" - + destSpec); + Log.w(TAG, "Can not create Translator for sourceSpec:" + sourceSpec + " targetSpec:" + + targetSpec); return; } onUiTranslationStarted(translator, views); diff --git a/core/java/android/view/translation/UiTranslationManager.java b/core/java/android/view/translation/UiTranslationManager.java index 62868acac756..f66fac562895 100644 --- a/core/java/android/view/translation/UiTranslationManager.java +++ b/core/java/android/view/translation/UiTranslationManager.java @@ -120,48 +120,12 @@ public final class UiTranslationManager { /** * Request ui translation for a given Views. * - * NOTE: Please use {@code startTranslation(TranslationSpec, TranslationSpec, List<AutofillId>, - * ActivityId)} instead. - * * @param sourceSpec {@link TranslationSpec} for the data to be translated. - * @param destSpec {@link TranslationSpec} for the translated data. - * @param viewIds A list of the {@link View}'s {@link AutofillId} which needs to be translated - * @param taskId the Activity Task id which needs ui translation - * @deprecated Use {@code startTranslation(TranslationSpec, TranslationSpec, List<AutofillId>, - * ActivityId)} instead. - * - * @hide - * @removed - */ - @Deprecated - @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION) - @SystemApi - public void startTranslation(@NonNull TranslationSpec sourceSpec, - @NonNull TranslationSpec destSpec, @NonNull List<AutofillId> viewIds, - int taskId) { - Objects.requireNonNull(sourceSpec); - Objects.requireNonNull(destSpec); - Objects.requireNonNull(viewIds); - if (viewIds.size() == 0) { - throw new IllegalArgumentException("Invalid empty views: " + viewIds); - } - try { - mService.updateUiTranslationStateByTaskId(STATE_UI_TRANSLATION_STARTED, sourceSpec, - destSpec, viewIds, taskId, mContext.getUserId()); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } - - /** - * Request ui translation for a given Views. - * - * @param sourceSpec {@link TranslationSpec} for the data to be translated. - * @param destSpec {@link TranslationSpec} for the translated data. + * @param targetSpec {@link TranslationSpec} for the translated data. * @param viewIds A list of the {@link View}'s {@link AutofillId} which needs to be translated * @param activityId the identifier for the Activity which needs ui translation * @throws IllegalArgumentException if the no {@link View}'s {@link AutofillId} in the list - * @throws NullPointerException the sourceSpec, destSpec, viewIds, activityId or + * @throws NullPointerException the sourceSpec, targetSpec, viewIds, activityId or * {@link android.app.assist.ActivityId#getToken()} is {@code null} * * @hide @@ -169,11 +133,11 @@ public final class UiTranslationManager { @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION) @SystemApi public void startTranslation(@NonNull TranslationSpec sourceSpec, - @NonNull TranslationSpec destSpec, @NonNull List<AutofillId> viewIds, + @NonNull TranslationSpec targetSpec, @NonNull List<AutofillId> viewIds, @NonNull ActivityId activityId) { // TODO(b/177789967): Return result code or find a way to notify the status. Objects.requireNonNull(sourceSpec); - Objects.requireNonNull(destSpec); + Objects.requireNonNull(targetSpec); Objects.requireNonNull(viewIds); Objects.requireNonNull(activityId); Objects.requireNonNull(activityId.getToken()); @@ -182,33 +146,7 @@ public final class UiTranslationManager { } try { mService.updateUiTranslationState(STATE_UI_TRANSLATION_STARTED, sourceSpec, - destSpec, viewIds, activityId.getToken(), activityId.getTaskId(), - mContext.getUserId()); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } - - /** - * Request to disable the ui translation. It will destroy all the {@link Translator}s and no - * longer to show to show the translated text. - * - * NOTE: Please use {@code finishTranslation(ActivityId)} instead. - * - * @param taskId the Activity Task id which needs ui translation - * @deprecated Use {@code finishTranslation(ActivityId)} instead. - * - * @hide - * @removed - * - */ - @Deprecated - @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION) - @SystemApi - public void finishTranslation(int taskId) { - try { - mService.updateUiTranslationStateByTaskId(STATE_UI_TRANSLATION_FINISHED, - null /* sourceSpec */, null /* destSpec*/, null /* viewIds */, taskId, + targetSpec, viewIds, activityId.getToken(), activityId.getTaskId(), mContext.getUserId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); @@ -232,7 +170,7 @@ public final class UiTranslationManager { Objects.requireNonNull(activityId); Objects.requireNonNull(activityId.getToken()); mService.updateUiTranslationState(STATE_UI_TRANSLATION_FINISHED, - null /* sourceSpec */, null /* destSpec*/, null /* viewIds */, + null /* sourceSpec */, null /* targetSpec */, null /* viewIds */, activityId.getToken(), activityId.getTaskId(), mContext.getUserId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); @@ -243,31 +181,6 @@ public final class UiTranslationManager { * Request to pause the current ui translation's {@link Translator} which will switch back to * the original language. * - * NOTE: Please use {@code pauseTranslation(ActivityId)} instead. - * - * @param taskId the Activity Task id which needs ui translation - * @deprecated Use {@code pauseTranslation(ActivityId)} instead. - * - * @hide - * @removed - */ - @Deprecated - @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION) - @SystemApi - public void pauseTranslation(int taskId) { - try { - mService.updateUiTranslationStateByTaskId(STATE_UI_TRANSLATION_PAUSED, - null /* sourceSpec */, null /* destSpec*/, null /* viewIds */, taskId, - mContext.getUserId()); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } - - /** - * Request to pause the current ui translation's {@link Translator} which will switch back to - * the original language. - * * @param activityId the identifier for the Activity which needs ui translation * @throws NullPointerException the activityId or * {@link android.app.assist.ActivityId#getToken()} is {@code null} @@ -281,7 +194,7 @@ public final class UiTranslationManager { Objects.requireNonNull(activityId); Objects.requireNonNull(activityId.getToken()); mService.updateUiTranslationState(STATE_UI_TRANSLATION_PAUSED, - null /* sourceSpec */, null /* destSpec*/, null /* viewIds */, + null /* sourceSpec */, null /* targetSpec */, null /* viewIds */, activityId.getToken(), activityId.getTaskId(), mContext.getUserId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); @@ -292,31 +205,6 @@ public final class UiTranslationManager { * Request to resume the paused ui translation's {@link Translator} which will switch to the * translated language if the text had been translated. * - * NOTE: Please use {@code resumeTranslation(ActivityId)} instead. - * - * @param taskId the Activity Task id which needs ui translation - * @deprecated Use {@code resumeTranslation(ActivityId)} instead. - * - * @hide - * @removed - */ - @Deprecated - @RequiresPermission(android.Manifest.permission.MANAGE_UI_TRANSLATION) - @SystemApi - public void resumeTranslation(int taskId) { - try { - mService.updateUiTranslationStateByTaskId(STATE_UI_TRANSLATION_RESUMED, - null /* sourceSpec */, null /* destSpec*/, null /* viewIds */, - taskId, mContext.getUserId()); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - } - - /** - * Request to resume the paused ui translation's {@link Translator} which will switch to the - * translated language if the text had been translated. - * * @param activityId the identifier for the Activity which needs ui translation * @throws NullPointerException the activityId or * {@link android.app.assist.ActivityId#getToken()} is {@code null} @@ -330,7 +218,7 @@ public final class UiTranslationManager { Objects.requireNonNull(activityId); Objects.requireNonNull(activityId.getToken()); mService.updateUiTranslationState(STATE_UI_TRANSLATION_RESUMED, - null /* sourceSpec */, null /* destSpec*/, null /* viewIds */, + null /* sourceSpec */, null /* targetSpec */, null /* viewIds */, activityId.getToken(), activityId.getTaskId(), mContext.getUserId()); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); diff --git a/core/java/android/view/translation/ViewTranslationCallback.java b/core/java/android/view/translation/ViewTranslationCallback.java index 78b4855bc7cf..1f0723b0bd05 100644 --- a/core/java/android/view/translation/ViewTranslationCallback.java +++ b/core/java/android/view/translation/ViewTranslationCallback.java @@ -21,23 +21,27 @@ import android.annotation.UiThread; import android.view.View; /** - * Callback for handling the translated information show or hide in the {@link View}. See {@link - * View#onTranslationResponse} for how to get the translated information. + * Callback for handling the translated information show or hide in the {@link View}. */ @UiThread public interface ViewTranslationCallback { /** * Called when the translated text is ready to show or if the user has requested to reshow the - * translated content after hiding it. This may be called before the translation results are - * returned through the {@link View#onTranslationResponse}. + * translated content after hiding it. + * <p> + * The translated content can be obtained from {@link View#getViewTranslationResponse}. This + * method will not be called before {@link View#onViewTranslationResponse} or + * {@link View#onVirtualViewTranslationResponses}. + * + * See {@link View#onViewTranslationResponse} for how to get the translated information. * * @return {@code true} if the View handles showing the translation. */ boolean onShowTranslation(@NonNull View view); /** * Called when the user wants to show the original text instead of the translated text. This - * may be called before the translation results are returned through the - * {@link View#onTranslationResponse}. + * method will not be called before {@link View#onViewTranslationResponse} or + * {@link View#onViewTranslationResponse}. * * @return {@code true} if the View handles hiding the translation. */ diff --git a/core/java/android/view/translation/ViewTranslationRequest.java b/core/java/android/view/translation/ViewTranslationRequest.java index 4d8fb99023c9..2913dfaeadb9 100644 --- a/core/java/android/view/translation/ViewTranslationRequest.java +++ b/core/java/android/view/translation/ViewTranslationRequest.java @@ -118,7 +118,8 @@ public final class ViewTranslationRequest implements Parcelable { * * @param autofillId the {@link AutofillId} of the non-virtual view hosting the virtual view * hierarchy associated with this request. - * @param virtualChildId the id of the virtual child, relative to the parent. + * @param virtualChildId the id of the virtual view in the host view. This id is the same + * virtual id provided through content capture. */ public Builder(@NonNull AutofillId autofillId, long virtualChildId) { mAutofillId = new AutofillId(autofillId, virtualChildId, AutofillId.NO_SESSION); diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java index 6d4fa658b3e9..a1d482264f4c 100644 --- a/core/java/android/webkit/WebView.java +++ b/core/java/android/webkit/WebView.java @@ -2861,16 +2861,17 @@ public class WebView extends AbsoluteLayout @Override @Nullable - public void onCreateTranslationRequests(@NonNull long[] virtualChildIds, + public void onCreateVirtualViewTranslationRequests(@NonNull long[] virtualIds, @NonNull @DataFormat int[] supportedFormats, @NonNull Consumer<ViewTranslationRequest> requestsCollector) { - mProvider.getViewDelegate().onCreateTranslationRequests(virtualChildIds, supportedFormats, - requestsCollector); + mProvider.getViewDelegate().onCreateVirtualViewTranslationRequests(virtualIds, + supportedFormats, requestsCollector); } @Override - public void onTranslationResponse(@NonNull LongSparseArray<ViewTranslationResponse> response) { - mProvider.getViewDelegate().onTranslationResponse(response); + public void onVirtualViewTranslationResponses( + @NonNull LongSparseArray<ViewTranslationResponse> response) { + mProvider.getViewDelegate().onVirtualViewTranslationResponses(response); } /** @hide */ diff --git a/core/java/android/webkit/WebViewProvider.java b/core/java/android/webkit/WebViewProvider.java index 770a1568241c..8d996ee9f50a 100644 --- a/core/java/android/webkit/WebViewProvider.java +++ b/core/java/android/webkit/WebViewProvider.java @@ -365,14 +365,14 @@ public interface WebViewProvider { } @SuppressLint("NullableCollection") - default void onCreateTranslationRequests( - @NonNull @SuppressWarnings("unused") long[] virtualChildIds, + default void onCreateVirtualViewTranslationRequests( + @NonNull @SuppressWarnings("unused") long[] virtualIds, @NonNull @SuppressWarnings("unused") @DataFormat int[] supportedFormats, @NonNull @SuppressWarnings("unused") Consumer<ViewTranslationRequest> requestsCollector) { } - default void onTranslationResponse( + default void onVirtualViewTranslationResponses( @NonNull @SuppressWarnings("unused") LongSparseArray<ViewTranslationResponse> response) { } diff --git a/core/java/android/widget/RemoteViews.java b/core/java/android/widget/RemoteViews.java index b13cfc02e986..e47129e1d349 100644 --- a/core/java/android/widget/RemoteViews.java +++ b/core/java/android/widget/RemoteViews.java @@ -943,6 +943,13 @@ public class RemoteViews implements Parcelable, Filter { View target = root.findViewById(viewId); if (target == null) return; + // Ensure that we are applying to an AppWidget root + if (!(rootParent instanceof AppWidgetHostView)) { + Log.e(LOG_TAG, "setRemoteAdapter can only be used for " + + "AppWidgets (root id: " + viewId + ")"); + return; + } + if (!(target instanceof AdapterView)) { Log.e(LOG_TAG, "Cannot call setRemoteAdapter on a view which is not " + "an AdapterView (id: " + viewId + ")"); @@ -1008,14 +1015,15 @@ public class RemoteViews implements Parcelable, Filter { // Ensure that we are applying to an AppWidget root if (!(rootParent instanceof AppWidgetHostView)) { - Log.e(LOG_TAG, "SetRemoteViewsAdapterIntent action can only be used for " + - "AppWidgets (root id: " + viewId + ")"); + Log.e(LOG_TAG, "setRemoteAdapter can only be used for " + + "AppWidgets (root id: " + viewId + ")"); return; } + // Ensure that we are calling setRemoteAdapter on an AdapterView that supports it if (!(target instanceof AbsListView) && !(target instanceof AdapterViewAnimator)) { - Log.e(LOG_TAG, "Cannot setRemoteViewsAdapter on a view which is not " + - "an AbsListView or AdapterViewAnimator (id: " + viewId + ")"); + Log.e(LOG_TAG, "Cannot setRemoteAdapter on a view which is not " + + "an AbsListView or AdapterViewAnimator (id: " + viewId + ")"); return; } @@ -1897,31 +1905,49 @@ public class RemoteViews implements Parcelable, Filter { } @Override - protected @NonNull Object getParameterValue(View view) throws ActionException { + protected Object getParameterValue(View view) throws ActionException { Resources resources = view.getContext().getResources(); try { switch (this.mResourceType) { case DIMEN_RESOURCE: - if (this.type == BaseReflectionAction.INT) { - return resources.getDimensionPixelSize(this.mResId); + switch (this.type) { + case BaseReflectionAction.INT: + return mResId == 0 ? 0 : resources.getDimensionPixelSize(mResId); + case BaseReflectionAction.FLOAT: + return mResId == 0 ? 0f : resources.getDimension(mResId); + default: + throw new ActionException( + "dimen resources must be used as INT or FLOAT, " + + "not " + this.type); } - return resources.getDimension(this.mResId); case COLOR_RESOURCE: - switch(this.type) { + switch (this.type) { case BaseReflectionAction.INT: - return view.getContext().getColor(this.mResId); + return mResId == 0 ? 0 : view.getContext().getColor(mResId); case BaseReflectionAction.COLOR_STATE_LIST: - return view.getContext().getColorStateList(this.mResId); + return mResId == 0 + ? null : view.getContext().getColorStateList(mResId); default: throw new ActionException( - "color resources must be used as int or ColorStateList, " - + "not " + this.type); + "color resources must be used as INT or COLOR_STATE_LIST," + + " not " + this.type); } case STRING_RESOURCE: - return resources.getText(this.mResId); + switch (this.type) { + case BaseReflectionAction.CHAR_SEQUENCE: + return mResId == 0 ? null : resources.getText(mResId); + case BaseReflectionAction.STRING: + return mResId == 0 ? null : resources.getString(mResId); + default: + throw new ActionException( + "string resources must be used as STRING or CHAR_SEQUENCE," + + " not " + this.type); + } default: throw new ActionException("unknown resource type: " + this.mResourceType); } + } catch (ActionException ex) { + throw ex; } catch (Throwable t) { throw new ActionException(t); } @@ -1963,50 +1989,62 @@ public class RemoteViews implements Parcelable, Filter { } @Override - protected @NonNull Object getParameterValue(View view) throws ActionException { + protected Object getParameterValue(View view) throws ActionException { + TypedArray typedArray = view.getContext().obtainStyledAttributes(new int[]{mAttrId}); try { - TypedArray typedArray = view.getContext().obtainStyledAttributes( - new int[]{this.mAttrId}); - try { - if (typedArray.getType(0) == TypedValue.TYPE_NULL) { - throw new ActionException("Attribute 0x" + Integer.toHexString(this.mAttrId) - + " is not defined"); - } - switch (this.mResourceType) { - case DIMEN_RESOURCE: - if (this.type == BaseReflectionAction.INT) { + // When mAttrId == 0, we will depend on the default values below + if (mAttrId != 0 && typedArray.getType(0) == TypedValue.TYPE_NULL) { + throw new ActionException("Attribute 0x" + Integer.toHexString(this.mAttrId) + + " is not defined"); + } + switch (this.mResourceType) { + case DIMEN_RESOURCE: + switch (this.type) { + case BaseReflectionAction.INT: return typedArray.getDimensionPixelSize(0, 0); - } - return typedArray.getDimension(0, 0); - case COLOR_RESOURCE: - switch (this.type) { - case BaseReflectionAction.INT: - return typedArray.getColor(0, 0); - case BaseReflectionAction.COLOR_STATE_LIST: - return typedArray.getColorStateList(0); - default: - throw new ActionException( - "Color attribute 0x" + Integer.toHexString(this.mAttrId) - + " must be used as int or ColorStateList"); - } - case STRING_RESOURCE: - String value = typedArray.getString(0); - if (value == null) { - throw new ActionException("Attribute 0x" - + Integer.toHexString(this.mAttrId) - + " is not a defined or is not a string"); - } - return value; - default: - // Note: This can only be an implementation error. - throw new ActionException( - "Unknown resource type: " + this.mResourceType); - } - } finally { - typedArray.recycle(); + case BaseReflectionAction.FLOAT: + return typedArray.getDimension(0, 0); + default: + throw new ActionException( + "dimen attribute 0x" + Integer.toHexString(this.mAttrId) + + " must be used as INT or FLOAT," + + " not " + this.type); + } + case COLOR_RESOURCE: + switch (this.type) { + case BaseReflectionAction.INT: + return typedArray.getColor(0, 0); + case BaseReflectionAction.COLOR_STATE_LIST: + return typedArray.getColorStateList(0); + default: + throw new ActionException( + "color attribute 0x" + Integer.toHexString(this.mAttrId) + + " must be used as INT or COLOR_STATE_LIST," + + " not " + this.type); + } + case STRING_RESOURCE: + switch (this.type) { + case BaseReflectionAction.CHAR_SEQUENCE: + return typedArray.getText(0); + case BaseReflectionAction.STRING: + return typedArray.getString(0); + default: + throw new ActionException( + "string attribute 0x" + Integer.toHexString(this.mAttrId) + + " must be used as STRING or CHAR_SEQUENCE," + + " not " + this.type); + } + default: + // Note: This can only be an implementation error. + throw new ActionException( + "Unknown resource type: " + this.mResourceType); } + } catch (ActionException ex) { + throw ex; } catch (Throwable t) { throw new ActionException(t); + } finally { + typedArray.recycle(); } } @@ -4511,7 +4549,7 @@ public class RemoteViews implements Parcelable, Filter { * * @param viewId The id of the view to change * @param type The margin being set e.g. {@link #MARGIN_END} - * @param attr a dimension attribute to apply to the margin. + * @param attr a dimension attribute to apply to the margin, or 0 to clear the margin. */ public void setViewLayoutMarginAttr(@IdRes int viewId, @MarginType int type, @AttrRes int attr) { @@ -4694,6 +4732,8 @@ public class RemoteViews implements Parcelable, Filter { * The dimension will be resolved from the resources at the time the {@link RemoteViews} is * (re-)applied. * + * Undefined resources will result in an exception, except 0 which will resolve to 0. + * * @param viewId The id of the view on which to call the method. * @param methodName The name of the method to call. * @param dimenResource The resource to resolve and pass as argument to the method. @@ -4728,6 +4768,8 @@ public class RemoteViews implements Parcelable, Filter { * The dimension will be resolved from the theme attribute at the time the * {@link RemoteViews} is (re-)applied. * + * Unresolvable attributes will result in an exception, except 0 which will resolve to 0. + * * @param viewId The id of the view on which to call the method. * @param methodName The name of the method to call. * @param dimenAttr The attribute to resolve and pass as argument to the method. @@ -4744,6 +4786,8 @@ public class RemoteViews implements Parcelable, Filter { * The Color will be resolved from the resources at the time the {@link RemoteViews} is (re-) * applied. * + * Undefined resources will result in an exception, except 0 which will resolve to 0. + * * @param viewId The id of the view on which to call the method. * @param methodName The name of the method to call. * @param colorResource The resource to resolve and pass as argument to the method. @@ -4760,6 +4804,8 @@ public class RemoteViews implements Parcelable, Filter { * The Color will be resolved from the theme attribute at the time the {@link RemoteViews} is * (re-)applied. * + * Unresolvable attributes will result in an exception, except 0 which will resolve to 0. + * * @param viewId The id of the view on which to call the method. * @param methodName The name of the method to call. * @param colorAttribute The theme attribute to resolve and pass as argument to the method. @@ -4838,6 +4884,8 @@ public class RemoteViews implements Parcelable, Filter { * The ColorStateList will be resolved from the resources at the time the {@link RemoteViews} is * (re-)applied. * + * Undefined resources will result in an exception, except 0 which will resolve to null. + * * @param viewId The id of the view on which to call the method. * @param methodName The name of the method to call. * @param colorResource The resource to resolve and pass as argument to the method. @@ -4855,6 +4903,8 @@ public class RemoteViews implements Parcelable, Filter { * The ColorStateList will be resolved from the theme attribute at the time the * {@link RemoteViews} is (re-)applied. * + * Unresolvable attributes will result in an exception, except 0 which will resolve to null. + * * @param viewId The id of the view on which to call the method. * @param methodName The name of the method to call. * @param colorAttr The theme attribute to resolve and pass as argument to the method. @@ -4895,6 +4945,8 @@ public class RemoteViews implements Parcelable, Filter { * The dimension will be resolved from the resources at the time the {@link RemoteViews} is * (re-)applied. * + * Undefined resources will result in an exception, except 0 which will resolve to 0f. + * * @param viewId The id of the view on which to call the method. * @param methodName The name of the method to call. * @param dimenResource The resource to resolve and pass as argument to the method. @@ -4931,6 +4983,8 @@ public class RemoteViews implements Parcelable, Filter { * The dimension will be resolved from the theme attribute at the time the {@link RemoteViews} * is (re-)applied. * + * Unresolvable attributes will result in an exception, except 0 which will resolve to 0f. + * * @param viewId The id of the view on which to call the method. * @param methodName The name of the method to call. * @param dimenAttr The attribute to resolve and pass as argument to the method. @@ -4992,6 +5046,8 @@ public class RemoteViews implements Parcelable, Filter { * The CharSequence will be resolved from the resources at the time the {@link RemoteViews} is * (re-)applied. * + * Undefined resources will result in an exception, except 0 which will resolve to null. + * * @param viewId The id of the view on which to call the method. * @param methodName The name of the method to call. * @param stringResource The resource to resolve and pass as argument to the method. @@ -5009,6 +5065,8 @@ public class RemoteViews implements Parcelable, Filter { * The CharSequence will be resolved from the theme attribute at the time the * {@link RemoteViews} is (re-)applied. * + * Unresolvable attributes will result in an exception, except 0 which will resolve to null. + * * @param viewId The id of the view on which to call the method. * @param methodName The name of the method to call. * @param stringAttribute The attribute to resolve and pass as argument to the method. diff --git a/core/java/android/widget/SpellChecker.java b/core/java/android/widget/SpellChecker.java index 287c18275a96..a16c1519e4d0 100644 --- a/core/java/android/widget/SpellChecker.java +++ b/core/java/android/widget/SpellChecker.java @@ -28,6 +28,7 @@ import android.util.Range; import android.view.textservice.SentenceSuggestionsInfo; import android.view.textservice.SpellCheckerSession; import android.view.textservice.SpellCheckerSession.SpellCheckerSessionListener; +import android.view.textservice.SpellCheckerSession.SpellCheckerSessionParams; import android.view.textservice.SuggestionsInfo; import android.view.textservice.TextInfo; import android.view.textservice.TextServicesManager; @@ -124,10 +125,12 @@ public class SpellChecker implements SpellCheckerSessionListener { | SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_TYPO | SuggestionsInfo.RESULT_ATTR_LOOKS_LIKE_GRAMMAR_ERROR | SuggestionsInfo.RESULT_ATTR_DONT_SHOW_UI_FOR_SUGGESTIONS; + SpellCheckerSessionParams params = new SpellCheckerSessionParams.Builder() + .setLocale(mCurrentLocale) + .setSupportedAttributes(supportedAttributes) + .build(); mSpellCheckerSession = mTextServicesManager.newSpellCheckerSession( - mCurrentLocale, false, supportedAttributes, - null /* Bundle not currently used by the textServicesManager */, - mTextView.getContext().getMainExecutor(), this); + params, mTextView.getContext().getMainExecutor(), this); } // Restore SpellCheckSpans in pool diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java index 1953a7687cb9..07a9a5fad6e2 100644 --- a/core/java/android/widget/TextView.java +++ b/core/java/android/widget/TextView.java @@ -13870,7 +13870,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener } /** - * Returns a {@link ViewTranslationRequest} which represents the content to be translated. + * Collects a {@link ViewTranslationRequest} which represents the content to be translated in + * the view. * * <p>NOTE: When overriding the method, it should not translate the password. If the subclass * uses {@link TransformationMethod} to display the translated result, it's also not recommend @@ -13880,15 +13881,15 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * android.view.translation.TranslationSpec#DATA_FORMAT_TEXT}. * @return the {@link ViewTranslationRequest} which contains the information to be translated. */ - @Nullable @Override - public ViewTranslationRequest onCreateTranslationRequest(@NonNull int[] supportedFormats) { + public void onCreateViewTranslationRequest(@NonNull int[] supportedFormats, + @NonNull Consumer<ViewTranslationRequest> requestsCollector) { if (supportedFormats == null || supportedFormats.length == 0) { // TODO(b/182433547): remove before S release if (UiTranslationController.DEBUG) { Log.w(LOG_TAG, "Do not provide the support translation formats."); } - return null; + return; } ViewTranslationRequest.Builder requestBuilder = new ViewTranslationRequest.Builder(getAutofillId()); @@ -13899,7 +13900,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener if (UiTranslationController.DEBUG) { Log.w(LOG_TAG, "Cannot create translation request for the empty text."); } - return null; + return; } boolean isPassword = isAnyPasswordInputType() || hasPasswordTransformationMethod(); // TODO(b/177214256): support selectable text translation. @@ -13914,14 +13915,14 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener Log.w(LOG_TAG, "Cannot create translation request. editable = " + isTextEditable() + ", isPassword = " + isPassword + ", selectable = " + isTextSelectable()); + return; } - return null; } // TODO(b/176488462): apply the view's important for translation requestBuilder.setValue(ViewTranslationRequest.ID_TEXT, TranslationRequestValue.forText(mText)); } - return requestBuilder.build(); + requestsCollector.accept(requestBuilder.build()); } /** @@ -13932,6 +13933,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener * * @return a {@link ViewTranslationCallback} that is used to control how to display the * translated information or {@code null} if this View doesn't support translation. + * + * @hide */ @Nullable @Override @@ -13948,15 +13951,17 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener /** * - * Called when the content from {@link #onCreateTranslationRequest} had been translated by the - * TranslationService. The default implementation will replace the current + * Called when the content from {@link #onCreateViewTranslationRequest} had been translated by + * the TranslationService. The default implementation will replace the current * {@link TransformationMethod} to transform the original text to the translated text display. * * @param response a {@link ViewTranslationResponse} that contains the translated information * which can be shown in the view. */ @Override - public void onTranslationResponse(@NonNull ViewTranslationResponse response) { + public void onViewTranslationResponse(@NonNull ViewTranslationResponse response) { + // set ViewTranslationResponse + super.onViewTranslationResponse(response); // TODO(b/183467275): Use the overridden ViewTranslationCallback instead of our default // implementation if the view has overridden getViewTranslationCallback. TextViewTranslationCallback callback = diff --git a/core/java/android/widget/TextViewTranslationCallback.java b/core/java/android/widget/TextViewTranslationCallback.java index 73f19a7a48c0..037606115521 100644 --- a/core/java/android/widget/TextViewTranslationCallback.java +++ b/core/java/android/widget/TextViewTranslationCallback.java @@ -79,6 +79,11 @@ public class TextViewTranslationCallback implements ViewTranslationCallback { @Override public boolean onShowTranslation(@NonNull View view) { mIsShowingTranslation = true; + if (view.getViewTranslationResponse() == null) { + Log.wtf(TAG, "onShowTranslation() shouldn't be called before " + + "onViewTranslationResponse()."); + return false; + } if (mTranslationTransformation != null) { ((TextView) view).setTransformationMethod(mTranslationTransformation); } else { @@ -86,6 +91,7 @@ public class TextViewTranslationCallback implements ViewTranslationCallback { // TODO(b/182433547): remove before S release Log.w(TAG, "onShowTranslation(): no translated text."); } + return false; } return true; } @@ -96,6 +102,11 @@ public class TextViewTranslationCallback implements ViewTranslationCallback { @Override public boolean onHideTranslation(@NonNull View view) { mIsShowingTranslation = false; + if (view.getViewTranslationResponse() == null) { + Log.wtf(TAG, "onHideTranslation() shouldn't be called before " + + "onViewTranslationResponse()."); + return false; + } // Restore to original text content. if (mTranslationTransformation != null) { ((TextView) view).setTransformationMethod( @@ -105,6 +116,7 @@ public class TextViewTranslationCallback implements ViewTranslationCallback { // TODO(b/182433547): remove before S release Log.w(TAG, "onHideTranslation(): no translated text."); } + return false; } return true; } @@ -124,6 +136,7 @@ public class TextViewTranslationCallback implements ViewTranslationCallback { // TODO(b/182433547): remove before S release Log.w(TAG, "onClearTranslation(): no translated text."); } + return false; } return true; } diff --git a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java index 0854955a92d5..9d06bb92b205 100644 --- a/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java +++ b/core/java/com/android/internal/accessibility/dialog/AccessibilityTargetHelper.java @@ -230,6 +230,7 @@ public final class AccessibilityTargetHelper { context.getDrawable(R.drawable.ic_accessibility_color_inversion), Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED); + // TODO: Update with shortcut icon final ToggleAllowListingFeatureTarget reduceBrightColors = new ToggleAllowListingFeatureTarget(context, shortcutType, @@ -237,7 +238,7 @@ public final class AccessibilityTargetHelper { REDUCE_BRIGHT_COLORS_COMPONENT_NAME.flattenToString()), REDUCE_BRIGHT_COLORS_COMPONENT_NAME.flattenToString(), context.getString(R.string.reduce_bright_colors_feature_name), - context.getDrawable(R.drawable.ic_accessibility_reduce_bright_colors), + null, Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED); targets.add(magnification); diff --git a/core/java/com/android/internal/app/IAppOpsCallback.aidl b/core/java/com/android/internal/app/IAppOpsCallback.aidl index 15221b1f0fa7..024ff66a67f6 100644 --- a/core/java/com/android/internal/app/IAppOpsCallback.aidl +++ b/core/java/com/android/internal/app/IAppOpsCallback.aidl @@ -17,7 +17,7 @@ package com.android.internal.app; // This interface is also used by native code, so must -// be kept in sync with frameworks/native/libs/binder/include/binder/IAppOpsCallback.h +// be kept in sync with frameworks/native/libs/permission/include/binder/IAppOpsCallback.h oneway interface IAppOpsCallback { void opChanged(int op, int uid, String packageName); } diff --git a/core/java/com/android/internal/app/IAppOpsService.aidl b/core/java/com/android/internal/app/IAppOpsService.aidl index 8a6856e3b51b..281702eebc2b 100644 --- a/core/java/com/android/internal/app/IAppOpsService.aidl +++ b/core/java/com/android/internal/app/IAppOpsService.aidl @@ -33,7 +33,7 @@ import com.android.internal.app.MessageSamplingConfig; interface IAppOpsService { // These methods are also called by native code, so must - // be kept in sync with frameworks/native/libs/binder/include/binder/IAppOpsService.h + // be kept in sync with frameworks/native/libs/permission/include/binder/IAppOpsService.h // and not be reordered int checkOperation(int code, int uid, String packageName); SyncNotedAppOp noteOperation(int code, int uid, String packageName, @nullable String attributionTag, diff --git a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl index 5a5e745c2426..dddc08a88062 100644 --- a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl +++ b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl @@ -261,4 +261,11 @@ interface IVoiceInteractionManagerService { in AudioFormat audioFormat, in PersistableBundle options, in IMicrophoneHotwordDetectionVoiceInteractionCallback callback); + + /** + * Test API to simulate to trigger hardware recognition event for test. + */ + void triggerHardwareRecognitionEventForTest( + in SoundTrigger.KeyphraseRecognitionEvent event, + in IHotwordRecognitionStatusCallback callback); } diff --git a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java index c7a36eeaa5f1..efce0a8487c7 100644 --- a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java +++ b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java @@ -483,6 +483,12 @@ public final class SystemUiDeviceConfigFlags { public static final String HOME_BUTTON_LONG_PRESS_DURATION_MS = "home_button_long_press_duration_ms"; + /** + * (boolean) Whether shortcut integration over app search service is enabled. + */ + public static final String SHORTCUT_APPSEARCH_INTEGRATION = + "shortcut_appsearch_integration"; + private SystemUiDeviceConfigFlags() { } } diff --git a/core/java/com/android/internal/content/PackageMonitor.java b/core/java/com/android/internal/content/PackageMonitor.java index 9a44c0594b76..7c975e1292d2 100644 --- a/core/java/com/android/internal/content/PackageMonitor.java +++ b/core/java/com/android/internal/content/PackageMonitor.java @@ -50,9 +50,6 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver { sPackageFilt.addAction(Intent.ACTION_QUERY_PACKAGE_RESTART); sPackageFilt.addAction(Intent.ACTION_PACKAGE_RESTARTED); sPackageFilt.addAction(Intent.ACTION_PACKAGE_DATA_CLEARED); - sPackageFilt.addAction(Intent.ACTION_PACKAGE_STARTABLE); - sPackageFilt.addAction(Intent.ACTION_PACKAGE_UNSTARTABLE); - sPackageFilt.addAction(Intent.ACTION_PACKAGE_FULLY_LOADED); sPackageFilt.addDataScheme("package"); sNonDataFilt.addAction(Intent.ACTION_UID_REMOVED); sNonDataFilt.addAction(Intent.ACTION_USER_STOPPED); @@ -464,15 +461,6 @@ public abstract class PackageMonitor extends android.content.BroadcastReceiver { String[] pkgList = intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST); mSomePackagesChanged = true; onPackagesUnsuspended(pkgList); - } else if (Intent.ACTION_PACKAGE_STARTABLE.equals(action) - || Intent.ACTION_PACKAGE_UNSTARTABLE.equals(action) - || Intent.ACTION_PACKAGE_FULLY_LOADED.equals(action)) { - String pkg = intent.getStringExtra(Intent.EXTRA_PACKAGE_NAME); - int uid = intent.getIntExtra(Intent.EXTRA_UID, 0); - mSomePackagesChanged = false; - if (pkg != null) { - onPackageStateChanged(pkg, uid); - } } if (mSomePackagesChanged) { diff --git a/core/java/com/android/internal/infra/AbstractRemoteService.java b/core/java/com/android/internal/infra/AbstractRemoteService.java index f63ac2e14e20..8b24f6451ccf 100644 --- a/core/java/com/android/internal/infra/AbstractRemoteService.java +++ b/core/java/com/android/internal/infra/AbstractRemoteService.java @@ -88,7 +88,7 @@ public abstract class AbstractRemoteService<S extends AbstractRemoteService<S, I private final int mBindingFlags; protected I mService; - private boolean mBinding; + private boolean mConnecting; private boolean mDestroyed; private boolean mServiceDied; private boolean mCompleted; @@ -228,7 +228,7 @@ public abstract class AbstractRemoteService<S extends AbstractRemoteService<S, I if (mService != null) { mService.asBinder().unlinkToDeath(this, 0); } - mBinding = false; + mConnecting = true; mService = null; mServiceDied = true; cancelScheduledUnbind(); @@ -435,10 +435,10 @@ public abstract class AbstractRemoteService<S extends AbstractRemoteService<S, I } private void handleEnsureBound() { - if (handleIsBound() || mBinding) return; + if (handleIsBound() || mConnecting) return; if (mVerbose) Slog.v(mTag, "ensureBound()"); - mBinding = true; + mConnecting = true; final int flags = Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE | Context.BIND_INCLUDE_CAPABILITIES | mBindingFlags; @@ -448,7 +448,7 @@ public abstract class AbstractRemoteService<S extends AbstractRemoteService<S, I if (!willBind) { Slog.w(mTag, "could not bind to " + mIntent + " using flags " + flags); - mBinding = false; + mConnecting = false; if (!mServiceDied) { handleBinderDied(); @@ -457,10 +457,10 @@ public abstract class AbstractRemoteService<S extends AbstractRemoteService<S, I } private void handleEnsureUnbound() { - if (!handleIsBound() && !mBinding) return; + if (!handleIsBound() && !mConnecting) return; if (mVerbose) Slog.v(mTag, "ensureUnbound()"); - mBinding = false; + mConnecting = false; if (handleIsBound()) { handleOnConnectedStateChangedInternal(false); if (mService != null) { @@ -476,12 +476,12 @@ public abstract class AbstractRemoteService<S extends AbstractRemoteService<S, I @Override public void onServiceConnected(ComponentName name, IBinder service) { if (mVerbose) Slog.v(mTag, "onServiceConnected()"); - if (mDestroyed || !mBinding) { + if (mDestroyed || !mConnecting) { // This is abnormal. Unbinding the connection has been requested already. Slog.wtf(mTag, "onServiceConnected() was dispatched after unbindService."); return; } - mBinding = false; + mConnecting = false; try { service.linkToDeath(AbstractRemoteService.this, 0); } catch (RemoteException re) { @@ -496,7 +496,7 @@ public abstract class AbstractRemoteService<S extends AbstractRemoteService<S, I @Override public void onServiceDisconnected(ComponentName name) { if (mVerbose) Slog.v(mTag, "onServiceDisconnected()"); - mBinding = true; + mConnecting = true; mService = null; } diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java index cb1900f300c0..82ec737de267 100644 --- a/core/java/com/android/internal/os/BatteryStatsImpl.java +++ b/core/java/com/android/internal/os/BatteryStatsImpl.java @@ -6951,7 +6951,8 @@ public class BatteryStatsImpl extends BatteryStats { /** * Returns the names of custom power components. */ - public @NonNull String[] getCustomPowerComponentNames() { + @Override + public @NonNull String[] getCustomEnergyConsumerNames() { if (mGlobalMeasuredEnergyStats == null) { return new String[0]; } @@ -12087,7 +12088,7 @@ public class BatteryStatsImpl extends BatteryStats { /** * Distribute Bluetooth energy info and network traffic to apps. * - * @param info The energy information from the bluetooth controller. + * @param info The accumulated energy information from the bluetooth controller. */ public void updateBluetoothStateLocked(@Nullable final BluetoothActivityEnergyInfo info, final long consumedChargeUC, long elapsedRealtimeMs, long uptimeMs) { @@ -12099,9 +12100,6 @@ public class BatteryStatsImpl extends BatteryStats { return; } if (!mOnBatteryInternal || mIgnoreNextExternalStats) { - // TODO(174818545): mLastBluetoothActivityInfo is actually extremely suspicious. - // Firstly, the following line was originally missing. But even more so, BESW says that - // info is a delta, not a total, so this entire algorithm requires review. mLastBluetoothActivityInfo.set(info); return; } diff --git a/core/java/com/android/internal/os/BatteryUsageStatsProvider.java b/core/java/com/android/internal/os/BatteryUsageStatsProvider.java index c3986c27e4ba..9ad7c15b9a9c 100644 --- a/core/java/com/android/internal/os/BatteryUsageStatsProvider.java +++ b/core/java/com/android/internal/os/BatteryUsageStatsProvider.java @@ -21,6 +21,7 @@ import android.hardware.SensorManager; import android.os.BatteryStats; import android.os.BatteryUsageStats; import android.os.BatteryUsageStatsQuery; +import android.os.SystemClock; import android.os.UidBatteryConsumer; import android.util.SparseArray; @@ -36,12 +37,12 @@ import java.util.Map; */ public class BatteryUsageStatsProvider { private final Context mContext; - private final BatteryStatsImpl mStats; + private final BatteryStats mStats; private final PowerProfile mPowerProfile; private final Object mLock = new Object(); private List<PowerCalculator> mPowerCalculators; - public BatteryUsageStatsProvider(Context context, BatteryStatsImpl stats) { + public BatteryUsageStatsProvider(Context context, BatteryStats stats) { mContext = context; mStats = stats; mPowerProfile = new PowerProfile(mContext); @@ -97,7 +98,7 @@ public class BatteryUsageStatsProvider { allowableStatsAge = Math.min(allowableStatsAge, query.getMaxStatsAge()); } - return mStats.mClocks.elapsedRealtime() - lastUpdateTimeStampMs > allowableStatsAge; + return elapsedRealtime() - lastUpdateTimeStampMs > allowableStatsAge; } /** @@ -120,10 +121,10 @@ public class BatteryUsageStatsProvider { */ @VisibleForTesting public BatteryUsageStats getBatteryUsageStats(BatteryUsageStatsQuery query) { - final long realtimeUs = mStats.mClocks.elapsedRealtime() * 1000; - final long uptimeUs = mStats.mClocks.uptimeMillis() * 1000; + final long realtimeUs = elapsedRealtime() * 1000; + final long uptimeUs = uptimeMillis() * 1000; - final String[] customPowerComponentNames = mStats.getCustomPowerComponentNames(); + final String[] customPowerComponentNames = mStats.getCustomEnergyConsumerNames(); // TODO(b/174186358): read extra time component number from configuration final int customTimeComponentCount = 0; @@ -154,16 +155,22 @@ public class BatteryUsageStatsProvider { if ((query.getFlags() & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_HISTORY) != 0) { + if (!(mStats instanceof BatteryStatsImpl)) { + throw new UnsupportedOperationException( + "History cannot be included for " + getClass().getName()); + } + + BatteryStatsImpl batteryStatsImpl = (BatteryStatsImpl) mStats; ArrayList<BatteryStats.HistoryTag> tags = new ArrayList<>( - mStats.mHistoryTagPool.size()); + batteryStatsImpl.mHistoryTagPool.size()); for (Map.Entry<BatteryStats.HistoryTag, Integer> entry : - mStats.mHistoryTagPool.entrySet()) { + batteryStatsImpl.mHistoryTagPool.entrySet()) { final BatteryStats.HistoryTag tag = entry.getKey(); tag.poolIdx = entry.getValue(); tags.add(tag); } - batteryUsageStatsBuilder.setBatteryHistory(mStats.mHistoryBuffer, tags); + batteryUsageStatsBuilder.setBatteryHistory(batteryStatsImpl.mHistoryBuffer, tags); } return batteryUsageStatsBuilder.build(); @@ -199,4 +206,20 @@ public class BatteryUsageStatsProvider { return uid.getProcessStateTime(BatteryStats.Uid.PROCESS_STATE_BACKGROUND, realtimeUs, BatteryStats.STATS_SINCE_CHARGED) / 1000; } + + private long elapsedRealtime() { + if (mStats instanceof BatteryStatsImpl) { + return ((BatteryStatsImpl) mStats).mClocks.elapsedRealtime(); + } else { + return SystemClock.elapsedRealtime(); + } + } + + private long uptimeMillis() { + if (mStats instanceof BatteryStatsImpl) { + return ((BatteryStatsImpl) mStats).mClocks.uptimeMillis(); + } else { + return SystemClock.uptimeMillis(); + } + } } diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java index 1673362028f9..993e4e7b4b3d 100644 --- a/core/java/com/android/internal/os/ZygoteConnection.java +++ b/core/java/com/android/internal/os/ZygoteConnection.java @@ -149,8 +149,11 @@ class ZygoteConnection { return null; } - if (parsedArgs.mUsapPoolStatusSpecified) { - // Handle this once we've released the argBuffer, to avoid opening a second one. + if (parsedArgs.mUsapPoolStatusSpecified + || parsedArgs.mApiDenylistExemptions != null + || parsedArgs.mHiddenApiAccessLogSampleRate != -1 + || parsedArgs.mHiddenApiAccessStatslogSampleRate != -1) { + // Handle these once we've released argBuffer, to avoid opening a second one. break; } @@ -183,18 +186,6 @@ class ZygoteConnection { return null; } - if (parsedArgs.mApiDenylistExemptions != null) { - return handleApiDenylistExemptions(zygoteServer, - parsedArgs.mApiDenylistExemptions); - } - - if (parsedArgs.mHiddenApiAccessLogSampleRate != -1 - || parsedArgs.mHiddenApiAccessStatslogSampleRate != -1) { - return handleHiddenApiAccessLogSampleRate(zygoteServer, - parsedArgs.mHiddenApiAccessLogSampleRate, - parsedArgs.mHiddenApiAccessStatslogSampleRate); - } - if (parsedArgs.mPermittedCapabilities != 0 || parsedArgs.mEffectiveCapabilities != 0) { throw new ZygoteSecurityException("Client may not specify capabilities: " @@ -311,10 +302,20 @@ class ZygoteConnection { } } } + // Handle anything that may need a ZygoteCommandBuffer after we've released ours. if (parsedArgs.mUsapPoolStatusSpecified) { - // Now that we've released argBuffer: return handleUsapPoolStatusChange(zygoteServer, parsedArgs.mUsapPoolEnabled); } + if (parsedArgs.mApiDenylistExemptions != null) { + return handleApiDenylistExemptions(zygoteServer, + parsedArgs.mApiDenylistExemptions); + } + if (parsedArgs.mHiddenApiAccessLogSampleRate != -1 + || parsedArgs.mHiddenApiAccessStatslogSampleRate != -1) { + return handleHiddenApiAccessLogSampleRate(zygoteServer, + parsedArgs.mHiddenApiAccessLogSampleRate, + parsedArgs.mHiddenApiAccessStatslogSampleRate); + } throw new AssertionError("Shouldn't get here"); } diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp index 4194acbfe015..27f82f1b52dd 100644 --- a/core/jni/android_view_SurfaceControl.cpp +++ b/core/jni/android_view_SurfaceControl.cpp @@ -394,6 +394,14 @@ static void nativeDisconnect(JNIEnv* env, jclass clazz, jlong nativeObject) { } } +static void nativeSetDefaultBufferSize(JNIEnv* env, jclass clazz, jlong nativeObject, + jint width, jint height) { + SurfaceControl* const ctrl = reinterpret_cast<SurfaceControl *>(nativeObject); + if (ctrl != NULL) { + ctrl->updateDefaultBufferSize(width, height); + } +} + static Rect rectFromObj(JNIEnv* env, jobject rectObj) { int left = env->GetIntField(rectObj, gRectClassInfo.left); int top = env->GetIntField(rectObj, gRectClassInfo.top); @@ -1771,6 +1779,8 @@ static const JNINativeMethod sSurfaceControlMethods[] = { (void*)nativeRelease }, {"nativeDisconnect", "(J)V", (void*)nativeDisconnect }, + {"nativeUpdateDefaultBufferSize", "(JII)V", + (void*)nativeSetDefaultBufferSize}, {"nativeCreateTransaction", "()J", (void*)nativeCreateTransaction }, {"nativeApplyTransaction", "(JZ)V", diff --git a/core/proto/android/server/biometrics.proto b/core/proto/android/server/biometrics.proto index 4f3ae28bec7d..c918dbbede26 100644 --- a/core/proto/android/server/biometrics.proto +++ b/core/proto/android/server/biometrics.proto @@ -120,18 +120,23 @@ message SensorStateProto { optional Modality modality = 2; + // The current strength (see {@link BiometricManager.Authenticators}) of this sensor, taking any + // downgraded strengths into effect. It may be different from the sensor's original strength but + // can never be stronger than that. + optional int32 current_strength = 3; + // State of the sensor's scheduler. - optional BiometricSchedulerProto scheduler = 3; + optional BiometricSchedulerProto scheduler = 4; // User states for this sensor. - repeated UserStateProto user_states = 4; + repeated UserStateProto user_states = 5; // True if resetLockout requires a HAT to be verified in the TEE or equivalent. - optional bool reset_lockout_requires_hardware_auth_token = 5; + optional bool reset_lockout_requires_hardware_auth_token = 6; // True if a HAT is required (field above) AND a challenge needs to be generated by the // biometric TEE (or equivalent), and wrapped within the HAT. - optional bool reset_lockout_requires_challenge = 6; + optional bool reset_lockout_requires_challenge = 7; } // State of a specific user for a specific sensor. diff --git a/core/proto/android/service/package.proto b/core/proto/android/service/package.proto index 55671091687c..48feb4dd958f 100644 --- a/core/proto/android/service/package.proto +++ b/core/proto/android/service/package.proto @@ -125,7 +125,7 @@ message PackageProto { } message StatesProto { - optional bool is_startable = 1; + reserved 1; optional bool is_loading = 2; } @@ -160,7 +160,7 @@ message PackageProto { repeated UserInfoProto users = 9; // Where the request to install this package came from, optional InstallSourceProto install_source = 10; - // Whether the package is startable or is still loading + // Whether the package is still loading optional StatesProto states = 11; // Granted runtime permissions for users. repeated UserPermissionsProto user_permissions = 12; diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml index d6a9a1fe9d1f..b1cc2ec5b745 100644 --- a/core/res/AndroidManifest.xml +++ b/core/res/AndroidManifest.xml @@ -42,8 +42,6 @@ <protected-broadcast android:name="android.intent.action.PACKAGE_REMOVED" /> <protected-broadcast android:name="android.intent.action.PACKAGE_FULLY_REMOVED" /> <protected-broadcast android:name="android.intent.action.PACKAGE_CHANGED" /> - <protected-broadcast android:name="android.intent.action.PACKAGE_STARTABLE" /> - <protected-broadcast android:name="android.intent.action.PACKAGE_UNSTARTABLE" /> <protected-broadcast android:name="android.intent.action.PACKAGE_FULLY_LOADED" /> <protected-broadcast android:name="android.intent.action.PACKAGE_ENABLE_ROLLBACK" /> <protected-broadcast android:name="android.intent.action.CANCEL_ENABLE_ROLLBACK" /> @@ -4108,6 +4106,13 @@ <permission android:name="com.android.permission.USE_INSTALLER_V2" android:protectionLevel="signature|installer" /> + <!-- @TestApi Allows a testOnly application to get installed. + <p>Not for use by third-party applications. + @hide + --> + <permission android:name="android.permission.INSTALL_TEST_ONLY_PACKAGE" + android:protectionLevel="signature" /> + <!-- Allows an application to use System Data Loaders. <p>Not for use by third-party applications. @hide @@ -5578,12 +5583,12 @@ <!-- @SystemApi Allows sensor privacy to be modified. @hide --> <permission android:name="android.permission.MANAGE_SENSOR_PRIVACY" - android:protectionLevel="signature" /> + android:protectionLevel="internal|role" /> <!-- @SystemApi Allows sensor privacy changes to be observed. @hide --> <permission android:name="android.permission.OBSERVE_SENSOR_PRIVACY" - android:protectionLevel="signature|installer" /> + android:protectionLevel="internal|role|installer" /> <!-- @SystemApi Permission that protects the {@link Intent#ACTION_REVIEW_ACCESSIBILITY_SERVICES} intent. @@ -5682,12 +5687,12 @@ <permission android:name="android.permission.CONTROL_DEVICE_STATE" android:protectionLevel="signature" /> - <!-- Must be required by a - {@link android.service.displayhash.DisplayHasherService} + <!-- @hide @SystemApi Must be required by a + {@link android.service.displayhash.DisplayHashingService} to ensure that only the system can bind to it. - @hide This is not a third-party API (intended for OEMs and system apps). + This is not a third-party API (intended for OEMs and system apps). --> - <permission android:name="android.permission.BIND_DISPLAY_HASHER_SERVICE" + <permission android:name="android.permission.BIND_DISPLAY_HASHING_SERVICE" android:protectionLevel="signature" /> <!-- @hide @TestApi Allows an application to enable/disable toast rate limiting. @@ -5734,6 +5739,12 @@ <permission android:name="android.permission.SET_CLIP_SOURCE" android:protectionLevel="signature|recents" /> + <!-- @SystemApi Allows an application to access TV tuned info + <p>Not for use by third-party applications. + @hide --> + <permission android:name="android.permission.ACCESS_TUNED_INFO" + android:protectionLevel="signature|privileged|vendorPrivileged" /> + <!-- Allows an application to indicate via {@link android.content.pm.PackageInstaller.SessionParams#setRequireUserAction(boolean)} that user action should not be required for an app update. diff --git a/core/res/res/drawable/btn_borderless_material.xml b/core/res/res/drawable/btn_borderless_material.xml index 1a0912ee47dc..08e1060ebad3 100644 --- a/core/res/res/drawable/btn_borderless_material.xml +++ b/core/res/res/drawable/btn_borderless_material.xml @@ -15,8 +15,7 @@ --> <ripple xmlns:android="http://schemas.android.com/apk/res/android" - android:color="?attr/colorControlHighlight" - android:rippleStyle="?attr/rippleStyle"> + android:color="?attr/colorControlHighlight"> <item android:id="@id/mask" android:drawable="@drawable/btn_default_mtrl_shape" /> </ripple> diff --git a/core/res/res/drawable/btn_colored_material.xml b/core/res/res/drawable/btn_colored_material.xml index 5274ef2f6dce..7ba21e840a59 100644 --- a/core/res/res/drawable/btn_colored_material.xml +++ b/core/res/res/drawable/btn_colored_material.xml @@ -19,8 +19,7 @@ android:insetTop="@dimen/button_inset_vertical_material" android:insetRight="@dimen/button_inset_horizontal_material" android:insetBottom="@dimen/button_inset_vertical_material"> - <ripple android:color="?attr/colorControlHighlight" - android:rippleStyle="?attr/rippleStyle"> + <ripple android:color="?attr/colorControlHighlight"> <item> <shape android:shape="rectangle" android:tint="@color/btn_colored_background_material"> diff --git a/core/res/res/drawable/btn_default_material.xml b/core/res/res/drawable/btn_default_material.xml index 6a9e62110ba4..ed2b5aacb236 100644 --- a/core/res/res/drawable/btn_default_material.xml +++ b/core/res/res/drawable/btn_default_material.xml @@ -15,7 +15,6 @@ --> <ripple xmlns:android="http://schemas.android.com/apk/res/android" - android:color="?attr/colorControlHighlight" - android:rippleStyle="?attr/rippleStyle"> + android:color="?attr/colorControlHighlight"> <item android:drawable="@drawable/btn_default_mtrl_shape" /> </ripple> diff --git a/core/res/res/drawable/btn_toggle_material.xml b/core/res/res/drawable/btn_toggle_material.xml index 7cee3820172b..8b19e4ae3561 100644 --- a/core/res/res/drawable/btn_toggle_material.xml +++ b/core/res/res/drawable/btn_toggle_material.xml @@ -21,8 +21,7 @@ android:insetBottom="@dimen/button_inset_vertical_material"> <layer-list android:paddingMode="stack"> <item> - <ripple android:color="?attr/colorControlHighlight" - android:rippleStyle="?attr/rippleStyle"> + <ripple android:color="?attr/colorControlHighlight"> <item> <shape android:shape="rectangle" android:tint="?attr/colorButtonNormal"> diff --git a/core/res/res/drawable/ic_accessibility_reduce_bright_colors.xml b/core/res/res/drawable/ic_accessibility_reduce_bright_colors.xml deleted file mode 100644 index 1e840d26ca13..000000000000 --- a/core/res/res/drawable/ic_accessibility_reduce_bright_colors.xml +++ /dev/null @@ -1,63 +0,0 @@ -<!-- - Copyright (C) 2021 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. ---> - -<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> - <item> - <shape android:shape="oval"> - <solid - android:color="@color/GM2_grey_700"/> - <size - android:height="@dimen/accessibility_icon_size" - android:width="@dimen/accessibility_icon_size"/> - </shape> - </item> - <item - android:gravity="center"> - <vector - android:width="@dimen/accessibility_icon_foreground_size" - android:height="@dimen/accessibility_icon_foreground_size" - android:viewportWidth="24" - android:viewportHeight="24"> - <path - android:pathData="M17,12.1L15.59,10.69L13.05,13.22V7.05H11.05V13.22L8.51,10.69L7.1,12.1L12.05,17.05L17,12.1Z" - android:fillColor="#ffffff"/> - <path - android:pathData="M2.05,13.05H4.05C4.6,13.05 5.05,12.6 5.05,12.05C5.05,11.5 4.6,11.05 4.05,11.05H2.05C1.5,11.05 1.05,11.5 1.05,12.05C1.05,12.6 1.5,13.05 2.05,13.05Z" - android:fillColor="#ffffff"/> - <path - android:pathData="M20.05,13.05H22.05C22.6,13.05 23.05,12.6 23.05,12.05C23.05,11.5 22.6,11.05 22.05,11.05H20.05C19.5,11.05 19.05,11.5 19.05,12.05C19.05,12.6 19.5,13.05 20.05,13.05Z" - android:fillColor="#ffffff"/> - <path - android:pathData="M11.05,2.05V4.05C11.05,4.6 11.5,5.05 12.05,5.05C12.6,5.05 13.05,4.6 13.05,4.05V2.05C13.05,1.5 12.6,1.05 12.05,1.05C11.5,1.05 11.05,1.5 11.05,2.05Z" - android:fillColor="#ffffff"/> - <path - android:pathData="M11.05,20.05V22.05C11.05,22.6 11.5,23.05 12.05,23.05C12.6,23.05 13.05,22.6 13.05,22.05V20.05C13.05,19.5 12.6,19.05 12.05,19.05C11.5,19.05 11.05,19.5 11.05,20.05Z" - android:fillColor="#ffffff"/> - <path - android:pathData="M6.04,4.63C5.65,4.24 5.01,4.24 4.63,4.63C4.24,5.02 4.24,5.66 4.63,6.04L5.69,7.1C6.08,7.49 6.72,7.49 7.1,7.1C7.49,6.71 7.49,6.07 7.1,5.69L6.04,4.63Z" - android:fillColor="#ffffff"/> - <path - android:pathData="M18.41,17C18.02,16.61 17.38,16.61 17,17C16.61,17.39 16.61,18.03 17,18.41L18.06,19.47C18.45,19.86 19.09,19.86 19.47,19.47C19.86,19.08 19.86,18.44 19.47,18.06L18.41,17Z" - android:fillColor="#ffffff"/> - <path - android:pathData="M19.47,6.04C19.86,5.65 19.86,5.01 19.47,4.63C19.08,4.24 18.44,4.24 18.06,4.63L17,5.69C16.61,6.08 16.61,6.72 17,7.1C17.39,7.49 18.03,7.49 18.41,7.1L19.47,6.04Z" - android:fillColor="#ffffff"/> - <path - android:pathData="M7.1,18.41C7.49,18.02 7.49,17.38 7.1,17C6.71,16.61 6.07,16.61 5.69,17L4.63,18.06C4.24,18.45 4.24,19.09 4.63,19.47C5.02,19.86 5.66,19.86 6.04,19.47L7.1,18.41Z" - android:fillColor="#ffffff"/> - </vector> - </item> -</layer-list> diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index 5d260d54b30c..445bac5dffa8 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Maak toe"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Antwoord"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Wys af"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Lui af"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Inkomende oproep"</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index 52f054056618..ee286bdd9d71 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"ዝጋ"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>፦ <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"መልስ"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ቪዲዮ"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"አትቀበል"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ስልኩን ዝጋ"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"ገቢ ጥሪ"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index a78c0e351690..ad295cbb98eb 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -2053,8 +2053,7 @@ <string name="close_button_text" msgid="10603510034455258">"إغلاق"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"ردّ"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"فيديو"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"رفض"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"قطع الاتصال"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"مكالمة واردة"</string> diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index ed86bf456179..0a1c880be165 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -733,11 +733,11 @@ <string name="policylab_resetPassword" msgid="214556238645096520">"Ekran kilidini dəyişmək"</string> <string name="policydesc_resetPassword" msgid="4626419138439341851">"Ekran kilidini dəyişmək"</string> <string name="policylab_forceLock" msgid="7360335502968476434">"Ekranı kilidləmək"</string> - <string name="policydesc_forceLock" msgid="1008844760853899693">"Ekranın nə vaxt və necə kilidlənməsinə nəzarət edir."</string> + <string name="policydesc_forceLock" msgid="1008844760853899693">"Ekranın kilidlənmə vaxtına və üsuluna nəzarət."</string> <string name="policylab_wipeData" msgid="1359485247727537311">"Bütün məlumatları silmək"</string> <string name="policydesc_wipeData" product="tablet" msgid="7245372676261947507">"Planşetin datasını xəbərdarlıq olmadan, zavod data sıfırlaması ilə silin."</string> <string name="policydesc_wipeData" product="tv" msgid="513862488950801261">"Android TV cihazının datasını fabrik sıfırlaması haqqında xəbərdarlıq olmadan silin."</string> - <string name="policydesc_wipeData" product="default" msgid="8036084184768379022">"Telefonun datasını xəbərdarlıq olmadan, zavod data sıfırlaması ilə silin"</string> + <string name="policydesc_wipeData" product="default" msgid="8036084184768379022">"Telefondakı bütün məlumatları xəbərdarlıqsız sıfırlayaraq məhv etmək"</string> <string name="policylab_wipeData_secondaryUser" msgid="413813645323433166">"İstifadəçi verilənlərini sil"</string> <string name="policydesc_wipeData_secondaryUser" product="tablet" msgid="2336676480090926470">"Xəbərdarlıq etmədən bu istifadəçinin verilənlərini bu planşetdə silin."</string> <string name="policydesc_wipeData_secondaryUser" product="tv" msgid="2293713284515865200">"Bu istifadəçinin datasını xəbərdarlıq olmadan Android TV cihazında silin."</string> @@ -751,7 +751,7 @@ <string name="policylab_disableCamera" msgid="5749486347810162018">"Kameraları dekativ edin"</string> <string name="policydesc_disableCamera" msgid="3204405908799676104">"Bütün cihaz kameralarının istifadəsini əngəllə."</string> <string name="policylab_disableKeyguardFeatures" msgid="5071855750149949741">"Ekran kilidini deaktiv etmək"</string> - <string name="policydesc_disableKeyguardFeatures" msgid="6641673177041195957">"Bəzi ekran funksiyaları istifadəsinin qarşısını alın."</string> + <string name="policydesc_disableKeyguardFeatures" msgid="6641673177041195957">"Bəzi ekran funksiyaları istifadəsinin qarşısını almaq."</string> <string-array name="phoneTypes"> <item msgid="8996339953292723951">"Ev"</item> <item msgid="7740243458912727194">"Mobil"</item> @@ -1846,7 +1846,7 @@ <string name="managed_profile_label_badge_2" msgid="5673187309555352550">"2-ci İş <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="managed_profile_label_badge_3" msgid="6882151970556391957">"3-cü İş <xliff:g id="LABEL">%1$s</xliff:g>"</string> <string name="lock_to_app_unlock_pin" msgid="3890940811866290782">"Ayırmadan öncə PIN istənilsin"</string> - <string name="lock_to_app_unlock_pattern" msgid="2694204070499712503">"Ayırmadan öncə kilid modeli istənilsin"</string> + <string name="lock_to_app_unlock_pattern" msgid="2694204070499712503">"Qrafik açar istənilsin"</string> <string name="lock_to_app_unlock_password" msgid="9126722403506560473">"Ayırmadan öncə parol istənilsin"</string> <string name="package_installed_device_owner" msgid="7035926868974878525">"Admin tərəfindən quraşdırıldı"</string> <string name="package_updated_device_owner" msgid="7560272363805506941">"Admin tərəfindən yeniləndi"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Qapadın"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Cavab verin"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"İmtina edin"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Dəstəyi asın"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Gələn zəng"</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index df8aa33eeb06..5a7e890bfce1 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -1960,8 +1960,7 @@ <string name="close_button_text" msgid="10603510034455258">"Zatvori"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Odgovori"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Odbij"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Prekini vezu"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Dolazni poziv"</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index bdfab407b6a9..c0915d2c12f6 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -1991,8 +1991,7 @@ <string name="close_button_text" msgid="10603510034455258">"Закрыць"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Адказаць"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Відэа"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Адхіліць"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Завяршыць"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Уваходны выклік"</string> diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml index 57f215712dd9..9c37c3b2f3b0 100644 --- a/core/res/res/values-bn/strings.xml +++ b/core/res/res/values-bn/strings.xml @@ -307,7 +307,7 @@ <string name="permgroupdesc_contacts" msgid="9163927941244182567">"আপনার পরিচিতিগুলিতে অ্যাক্সেস"</string> <string name="permgrouplab_location" msgid="1858277002233964394">"লোকেশন"</string> <string name="permgroupdesc_location" msgid="1995955142118450685">"এই ডিভাইসের লোকেশন অ্যাক্সেস"</string> - <string name="permgrouplab_calendar" msgid="6426860926123033230">"Calendar"</string> + <string name="permgrouplab_calendar" msgid="6426860926123033230">"ক্যালেন্ডার"</string> <string name="permgroupdesc_calendar" msgid="6762751063361489379">"আপনার ক্যালেন্ডারে অ্যাক্সেস"</string> <string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string> <string name="permgroupdesc_sms" msgid="5726462398070064542">"এসএমএসগুলি পাঠাতে এবং দেখতে"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"বন্ধ করুন"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"উত্তর"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ভিডিও"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"বাতিল করুন"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"কল কেটে দেওয়া"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"ইনকামিং কল"</string> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index 315efea85af9..b0a9726666cc 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -1960,8 +1960,7 @@ <string name="close_button_text" msgid="10603510034455258">"Zatvori"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Odgovori"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Odbaci"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Prekini vezu"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Dolazni poziv"</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 7fd2ede8ce0f..9db0869b5ba5 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -1695,7 +1695,7 @@ <string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total és adequat per a les aplicacions que t\'ajuden amb l\'accessibilitat, però no per a la majoria de les aplicacions."</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Veure i controlar la pantalla"</string> <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Pot llegir tot el contingut de la pantalla i mostrar contingut sobre altres aplicacions."</string> - <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Mostra i duu a terme accions"</string> + <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Mostrar i dur a terme accions"</string> <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pot fer un seguiment de les teves interaccions amb una aplicació o un sensor de maquinari, i interaccionar amb aplicacions en nom teu."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permet"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Denega"</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index e0c537611c55..de6debb5d1c9 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -1734,13 +1734,13 @@ <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Nezapínat"</string> <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"ZAP"</string> <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"VYP"</string> - <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Chcete službě <xliff:g id="SERVICE">%1$s</xliff:g> povolit, aby nad vaším zařízením měla plnou kontrolu?"</string> + <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Chcete službě <xliff:g id="SERVICE">%1$s</xliff:g> povolit plnou kontrolu nad vaším zařízením?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Pokud zapnete službu <xliff:g id="SERVICE">%1$s</xliff:g>, zařízení nebude používat zámek obrazovky k vylepšení šifrování dat."</string> - <string name="accessibility_service_warning_description" msgid="291674995220940133">"Plná kontrola je vhodná u aplikací, které vám pomáhají s usnadněním přístupu, nikoli u většiny aplikací."</string> + <string name="accessibility_service_warning_description" msgid="291674995220940133">"Plná kontrola je vhodná u aplikací, které vám pomáhají s usnadněním přístupu. U většiny aplikací však vhodná není."</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Zobrazení a ovládání obrazovky"</string> - <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Může číst veškerý obsah obrazovky a zobrazovat obsah přes ostatní aplikace."</string> + <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Služba může číst veškerý obsah obrazovky a zobrazovat ho přes ostatní aplikace."</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Zobrazení a provádění akcí"</string> - <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Může sledovat vaše interakce s aplikací nebo hardwarovým senzorem a komunikovat s aplikacemi namísto vás."</string> + <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Služba může sledovat vaše interakce s aplikací nebo hardwarovým senzorem a komunikovat s aplikacemi namísto vás."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Povolit"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Zakázat"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Chcete-li některou funkci začít používat, klepněte na ni:"</string> @@ -1991,8 +1991,7 @@ <string name="close_button_text" msgid="10603510034455258">"Zavřít"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Přijmout"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Odmítnout"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Zavěsit"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Příchozí hovor"</string> @@ -2343,5 +2342,5 @@ <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ikona aplikace"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Image značky aplikace"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"Zkontrolujte nastavení přístupu"</string> - <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> může zobrazit a ovládat tuto obrazovku. Klepnutím to zkontrolujete."</string> + <string name="view_and_control_notification_content" msgid="8003766498562604034">"Tuto obrazovku může zobrazit a ovládat služba <xliff:g id="SERVICE_NAME">%s</xliff:g>. Klepnutím to zkontrolujete."</string> </resources> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 55fcea35ae98..557484d20f0c 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -321,8 +321,8 @@ <string name="permgroupdesc_camera" msgid="7585150538459320326">"tage billeder og optage video"</string> <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"Enheder i nærheden"</string> <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"finde og oprette forbindelse til enheder i nærheder"</string> - <string name="permgrouplab_calllog" msgid="7926834372073550288">"Opkaldslister"</string> - <string name="permgroupdesc_calllog" msgid="2026996642917801803">"læse og redigere opkaldslisten"</string> + <string name="permgrouplab_calllog" msgid="7926834372073550288">"Opkaldshistorik"</string> + <string name="permgroupdesc_calllog" msgid="2026996642917801803">"læse og redigere opkaldshistorik"</string> <string name="permgrouplab_phone" msgid="570318944091926620">"Telefon"</string> <string name="permgroupdesc_phone" msgid="270048070781478204">"foretage og administrere telefonopkald"</string> <string name="permgrouplab_sensors" msgid="9134046949784064495">"Kropssensorer"</string> @@ -363,10 +363,8 @@ <string name="permdesc_receiveMms" msgid="958102423732219710">"Tillader, at appen kan modtage og behandle mms-beskeder. Det betyder, at appen kan overvåge eller slette de beskeder, der sendes til din enhed, uden at vise dem til dig."</string> <string name="permlab_bindCellBroadcastService" msgid="586746677002040651">"Videresend Cell Broadcast-meddelelser"</string> <string name="permdesc_bindCellBroadcastService" msgid="6540910200973641606">"Tillader, at appen bindes til Cell Broadcast-modulet, så Cell Broadcast-meddelelser kan videresendes, når de modtages. I nogle områder sendes der Cell Broadcast-underretninger for at advare dig om nødsituationer. Ondsindede apps kan forstyrre effektiviteten eller driften af din enhed, når den modtager en Cell Broadcast-meddelelse om en nødsituation."</string> - <!-- no translation found for permlab_manageOngoingCalls (281244770664231782) --> - <skip /> - <!-- no translation found for permdesc_manageOngoingCalls (7003138133829915265) --> - <skip /> + <string name="permlab_manageOngoingCalls" msgid="281244770664231782">"Administrere igangværende opkald"</string> + <string name="permdesc_manageOngoingCalls" msgid="7003138133829915265">"Giver appen tilladelse til at se oplysninger om igangværende opkald på din enhed og styre disse opkald."</string> <string name="permlab_readCellBroadcasts" msgid="5869884450872137693">"læse Cell Broadcast-meddelelser"</string> <string name="permdesc_readCellBroadcasts" msgid="672513437331980168">"Tillader, at appen læser Cell Broadcast-underretninger, der modtages af din enhed. I nogle områder sendes der Cell Broadcast-underretninger for at advare om nødsituationer. Ondsindede apps kan forstyrre ydelsen eller driften af din enhed, når der modtages en Cell Broadcast-meddelelse om en nødsituation."</string> <string name="permlab_subscribedFeedsRead" msgid="217624769238425461">"læse feeds, jeg abonnerer på"</string> @@ -421,12 +419,12 @@ <string name="permdesc_writeContacts" product="tablet" msgid="6422419281427826181">"Tillader, at appen kan ændre data om de kontakter, der er gemt på din tablet. Denne tilladelse giver apps mulighed for at slette kontaktdata."</string> <string name="permdesc_writeContacts" product="tv" msgid="6488872735379978935">"Tillader, at appen kan ændre data om de kontakter, der er gemt på din Android TV-enhed. Denne tilladelse giver apps mulighed for at slette kontaktdata."</string> <string name="permdesc_writeContacts" product="default" msgid="8304795696237065281">"Tillader, at appen kan ændre data om de kontakter, der er gemt på din telefon. Denne tilladelse giver apps mulighed for at slette kontaktdata."</string> - <string name="permlab_readCallLog" msgid="1739990210293505948">"læse opkaldsliste"</string> + <string name="permlab_readCallLog" msgid="1739990210293505948">"læse opkaldshistorik"</string> <string name="permdesc_readCallLog" msgid="8964770895425873433">"Denne app kan læse din opkaldshistorik."</string> - <string name="permlab_writeCallLog" msgid="670292975137658895">"skriv opkaldsliste"</string> - <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Tillader, at appen ændrer din tablets opkaldsliste, f.eks. data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldsliste."</string> - <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Tillader, at appen ændrer din Android TV-enheds opkaldsliste, bl.a. data om indgående og udgående opkald. Skadelige apps kan bruge dette til at rydde eller ændre din opkaldsliste."</string> - <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Tillader, at appen ændrer telefonens opkaldsliste, f.eks. data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldsliste."</string> + <string name="permlab_writeCallLog" msgid="670292975137658895">"skriv opkaldshistorik"</string> + <string name="permdesc_writeCallLog" product="tablet" msgid="2657525794731690397">"Tillader, at appen ændrer din tablets opkaldshistorik, f.eks. data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldshistorik."</string> + <string name="permdesc_writeCallLog" product="tv" msgid="3934939195095317432">"Tillader, at appen ændrer din Android TV-enheds opkaldshistorik, bl.a. data om indgående og udgående opkald. Skadelige apps kan bruge dette til at rydde eller ændre din opkaldshistorik."</string> + <string name="permdesc_writeCallLog" product="default" msgid="5903033505665134802">"Tillader, at appen ændrer telefonens opkaldshistorik, f.eks. data om indgående og udgående opkald. Ondsindede apps kan bruge dette til at slette eller ændre din opkaldshistorik."</string> <string name="permlab_bodySensors" msgid="3411035315357380862">"få adgang til kropssensorer (f.eks. pulsmålere)"</string> <string name="permdesc_bodySensors" product="default" msgid="2365357960407973997">"Giver appen adgang til data fra sensorer, der overvåger din fysiske tilstand, f.eks. din puls."</string> <string name="permlab_readCalendar" msgid="6408654259475396200">"Læs kalenderbegivenheder og -info"</string> @@ -1697,7 +1695,7 @@ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Fuld kontrol er velegnet til apps, der hjælper dig med hjælpefunktioner, men ikke de fleste apps."</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Se og styre skærm"</string> <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Den kan læse alt indhold på skærmen og vise indhold oven på andre apps."</string> - <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Se og udfør handlinger"</string> + <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Se og udføre handlinger"</string> <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Den kan spore dine interaktioner med en app eller en hardwaresensor og interagere med apps på dine vegne."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Tillad"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Afvis"</string> @@ -1931,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Luk"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Besvar"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Afvis"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Læg på"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Indgående opkald"</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 7d42e1b7f3d5..04b5747de562 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -1692,7 +1692,7 @@ <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"AUS"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> die vollständige Kontrolle über dein Gerät geben?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Wenn du <xliff:g id="SERVICE">%1$s</xliff:g> aktivierst, verwendet dein Gerät nicht die Displaysperre, um die Datenverschlüsselung zu verbessern."</string> - <string name="accessibility_service_warning_description" msgid="291674995220940133">"Die vollständige Kontrolle sollte nur für die Apps aktiviert werden, die dir den Zugang zu den App-Funktionen erleichtern. Das ist in der Regel nur ein kleiner Teil der Apps."</string> + <string name="accessibility_service_warning_description" msgid="291674995220940133">"Die vollständige Kontrolle sollte nur für Apps aktiviert werden, die dir Zugang zu App-Funktionen erleichtern. Das ist in der Regel nur ein kleiner Teil der Apps."</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Bildschirm aufrufen und steuern"</string> <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Die Funktion kann alle Inhalte auf dem Bildschirm lesen und diese Inhalte über andere Apps anzeigen."</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Aktionen aufrufen und durchführen"</string> @@ -1852,10 +1852,8 @@ <string name="package_updated_device_owner" msgid="7560272363805506941">"Von deinem Administrator aktualisiert"</string> <string name="package_deleted_device_owner" msgid="2292335928930293023">"Von deinem Administrator gelöscht"</string> <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> - <!-- no translation found for battery_saver_description_with_learn_more (7963058670863485450) --> - <skip /> - <!-- no translation found for battery_saver_description (7695751399533397741) --> - <skip /> + <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Der Energiesparmodus aktiviert das dunkle Design und schränkt Hintergrundaktivitäten, einige optische Effekte und Funktionen wie „Hey Google“ ein oder schaltet diese ab\n\n"<annotation id="url">"Weitere Informationen"</annotation></string> + <string name="battery_saver_description" msgid="7695751399533397741">"Der Energiesparmodus aktiviert das dunkle Design und schränkt Hintergrundaktivitäten, einige optische Effekte und Funktionen wie „Hey Google“ ein oder schaltet diese ab."</string> <string name="data_saver_description" msgid="4995164271550590517">"Der Datensparmodus verhindert zum einen, dass manche Apps im Hintergrund Daten senden oder empfangen, sodass weniger Daten verbraucht werden. Zum anderen werden die Datenzugriffe der gerade aktiven App eingeschränkt, was z. B. dazu führen kann, dass Bilder erst angetippt werden müssen, bevor sie sichtbar werden."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Datensparmodus aktivieren?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivieren"</string> @@ -1931,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Schließen"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Annehmen"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Ablehnen"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Auflegen"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Eingehender Anruf"</string> @@ -2076,18 +2073,12 @@ <string name="notification_feedback_indicator_silenced" msgid="3799442124723177262">"Diese Benachrichtigung wurde auf „Lautlos“ herabgestuft. Tippe, um Feedback zu geben."</string> <string name="notification_feedback_indicator_promoted" msgid="9030204303764698640">"Diese Benachrichtigung wurde hochgestuft. Tippe, um Feedback zu geben."</string> <string name="notification_feedback_indicator_demoted" msgid="8880309924296450875">"Diese Benachrichtigung wurde herabgestuft. Tippe, um Feedback zu geben."</string> - <!-- no translation found for nas_upgrade_notification_title (4224351129445073051) --> - <skip /> - <!-- no translation found for nas_upgrade_notification_content (7036860187157134706) --> - <skip /> - <!-- no translation found for nas_upgrade_notification_enable_action (4823652531622744798) --> - <skip /> - <!-- no translation found for nas_upgrade_notification_disable_action (7561210256700811433) --> - <skip /> - <!-- no translation found for nas_upgrade_notification_learn_more_action (7011130656195423947) --> - <skip /> - <!-- no translation found for nas_upgrade_notification_learn_more_content (6276343083934111208) --> - <skip /> + <string name="nas_upgrade_notification_title" msgid="4224351129445073051">"„Erweiterte Benachrichtigungen“ ausprobieren"</string> + <string name="nas_upgrade_notification_content" msgid="7036860187157134706">"Wenn du weiterhin beispielsweise Vorschläge für Aktionen und Antworten erhalten möchtest, aktiviere die Funktion „Erweiterte Benachrichtigungen“. Adaptive Benachrichtigungen für Android werden nicht mehr unterstützt."</string> + <string name="nas_upgrade_notification_enable_action" msgid="4823652531622744798">"Aktivieren"</string> + <string name="nas_upgrade_notification_disable_action" msgid="7561210256700811433">"Nicht jetzt"</string> + <string name="nas_upgrade_notification_learn_more_action" msgid="7011130656195423947">"Weitere Informationen"</string> + <string name="nas_upgrade_notification_learn_more_content" msgid="6276343083934111208">"Die Funktion „Erweiterte Benachrichtigungen“ kann alle Benachrichtigungen lesen, darunter auch personenbezogene Daten wie Kontaktnamen und Nachrichten. Außerdem kann sie Benachrichtigungen schließen oder Schaltflächen in Benachrichtigungen verwenden und so beispielsweise Anrufe entgegennehmen.\n\nDiese Funktion kann auch den Prioritätsmodus aktivieren bzw. deaktivieren und zugehörige Einstellungen ändern."</string> <string name="dynamic_mode_notification_channel_name" msgid="2986926422100223328">"Infomitteilung zum Ablaufmodus"</string> <string name="dynamic_mode_notification_title" msgid="9205715501274608016">"Dein Akku könnte vor der gewöhnlichen Ladezeit leer sein"</string> <string name="dynamic_mode_notification_summary" msgid="4141614604437372157">"Energiesparmodus aktiviert, um die Akkulaufzeit zu verlängern"</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 1612a7bebf7e..417b8f2b2d0d 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Κλείσιμο"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Απάντηση"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Βίντεο"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Απόρριψη"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Τερματισμός"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Εισερχόμενη κλήση"</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index 969278192753..f8ca0b1890d9 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -2264,7 +2264,7 @@ <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string> <string name="window_magnification_prompt_title" msgid="2876703640772778215">"New magnification settings"</string> <string name="window_magnification_prompt_content" msgid="8159173903032344891">"You can now magnify part of your screen"</string> - <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in settings"</string> + <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in Settings"</string> <string name="dismiss_action" msgid="1728820550388704784">"Dismiss"</string> <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Unblock device microphone"</string> <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Unblock device camera"</string> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index f41ab423bdd6..dc993feb24f2 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -2264,7 +2264,7 @@ <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string> <string name="window_magnification_prompt_title" msgid="2876703640772778215">"New magnification settings"</string> <string name="window_magnification_prompt_content" msgid="8159173903032344891">"You can now magnify part of your screen"</string> - <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in settings"</string> + <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in Settings"</string> <string name="dismiss_action" msgid="1728820550388704784">"Dismiss"</string> <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Unblock device microphone"</string> <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Unblock device camera"</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 098a93680704..5b80a905c6a9 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -2264,7 +2264,7 @@ <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string> <string name="window_magnification_prompt_title" msgid="2876703640772778215">"New magnification settings"</string> <string name="window_magnification_prompt_content" msgid="8159173903032344891">"You can now magnify part of your screen"</string> - <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in settings"</string> + <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in Settings"</string> <string name="dismiss_action" msgid="1728820550388704784">"Dismiss"</string> <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Unblock device microphone"</string> <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Unblock device camera"</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index a7e1f5f10d2c..dad96b466ce9 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -2264,7 +2264,7 @@ <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string> <string name="window_magnification_prompt_title" msgid="2876703640772778215">"New magnification settings"</string> <string name="window_magnification_prompt_content" msgid="8159173903032344891">"You can now magnify part of your screen"</string> - <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in settings"</string> + <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Turn on in Settings"</string> <string name="dismiss_action" msgid="1728820550388704784">"Dismiss"</string> <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Unblock device microphone"</string> <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Unblock device camera"</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 62ecf653a546..7519b5a9a591 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -1694,7 +1694,7 @@ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si activas <xliff:g id="SERVICE">%1$s</xliff:g>, el dispositivo no utilizará el bloqueo de pantalla para mejorar el cifrado de datos."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total es adecuado para las aplicaciones de accesibilidad, pero no para la mayoría de las aplicaciones."</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ver y controlar la pantalla"</string> - <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Puede leer todo el contenido de la pantalla y mostrar contenido sobre otras aplicaciones."</string> + <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Puede leer todo el contenido de la pantalla y mostrar contenido encima de otras aplicaciones."</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Ver y realizar acciones"</string> <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Puede registrar tus interacciones con una aplicación o un sensor de hardware, así como interactuar con las aplicaciones en tu nombre."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string> @@ -1854,7 +1854,7 @@ <string name="confirm_battery_saver" msgid="5247976246208245754">"Aceptar"</string> <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"Ahorro de batería activa el tema oscuro y limita o desactiva la actividad en segundo plano, algunos efectos visuales y funciones como \"Hey Google\"\n\n"<annotation id="url">"Más información"</annotation></string> <string name="battery_saver_description" msgid="7695751399533397741">"Ahorro de batería activa el tema oscuro y limita o desactiva la actividad en segundo plano, algunos efectos visuales y funciones como \"Hey Google\"."</string> - <string name="data_saver_description" msgid="4995164271550590517">"El modo Ahorro de datos evita que algunas aplicaciones envíen o reciban datos en segundo plano, lo que puede reducir el uso de datos. Una aplicación activa puede acceder a los datos, aunque con menos frecuencia. Esto significa que es posible que, por ejemplo, algunas imágenes no se muestren hasta que las toques."</string> + <string name="data_saver_description" msgid="4995164271550590517">"Ahorro de datos evita que algunas aplicaciones envíen o reciban datos en segundo plano, lo que puede reducir el uso de datos. Una aplicación que estés usando de forma activa puede acceder a los datos, aunque con menos frecuencia. Esto significa que es posible que, por ejemplo, algunas imágenes no se muestren hasta que las toques."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"¿Activar Ahorro de datos?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activar"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273"> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Cerrar"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Responder"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vídeo"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Rechazar"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Colgar"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Llamada entrante"</string> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index 0379bac07827..1e58aedc5c45 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Sule"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Vasta"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Keeldu"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Lõpeta kõne"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Sissetulev kõne"</string> diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index 3d2eda9197d0..ce1058478fbc 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -1723,7 +1723,7 @@ <string name="user_switched" msgid="7249833311585228097">"Erabiltzailea: <xliff:g id="NAME">%1$s</xliff:g>."</string> <string name="user_switching_message" msgid="1912993630661332336">"\"<xliff:g id="NAME">%1$s</xliff:g>\" erabiltzailera aldatzen…"</string> <string name="user_logging_out_message" msgid="7216437629179710359">"<xliff:g id="NAME">%1$s</xliff:g> erabiltzailearen saioa amaitzen…"</string> - <string name="owner_name" msgid="8713560351570795743">"Jabea"</string> + <string name="owner_name" msgid="8713560351570795743">"Jabe"</string> <string name="error_message_title" msgid="4082495589294631966">"Errorea"</string> <string name="error_message_change_not_allowed" msgid="843159705042381454">"Administratzaileak ez du eman aldaketa egiteko baimena"</string> <string name="app_not_found" msgid="3429506115332341800">"Ez da ekintza gauza dezakeen aplikaziorik aurkitu"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Itxi"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Erantzun"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Bideoa"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Baztertu"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Amaitu deia"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Jasotako deia"</string> @@ -2274,6 +2273,6 @@ <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Sentsoreen pribatutasuna"</string> <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Aplikazioaren ikonoa"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Aplikazioaren marka-irudia"</string> - <string name="view_and_control_notification_title" msgid="4300765399209912240">"Begiratu sarbide-ezarpenak"</string> + <string name="view_and_control_notification_title" msgid="4300765399209912240">"Egiaztatu sarbide-ezarpenak"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> zerbitzuak pantaila ikusi eta kontrola dezake. Sakatu berrikusteko."</string> </resources> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index ae3f79af7ba1..280c71f9bbf4 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"بستن"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"پاسخ"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ویدیو"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"رد کردن"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"قطع تماس"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"تماس ورودی"</string> @@ -2263,7 +2262,7 @@ <string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string> <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string> <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string> - <string name="window_magnification_prompt_title" msgid="2876703640772778215">"تنظیمات درشتنمایی جدید"</string> + <string name="window_magnification_prompt_title" msgid="2876703640772778215">"تنظیمات جدید درشتنمایی"</string> <string name="window_magnification_prompt_content" msgid="8159173903032344891">"اکنون میتوانید بخشی از صفحه را درشتنمایی کنید"</string> <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"روشن کردن در «تنظیمات»"</string> <string name="dismiss_action" msgid="1728820550388704784">"رد شدن"</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 7e6cb5613bcf..2538e86fd222 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Sulje"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Vastaa"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Hylkää"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Lopeta puhelu"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Saapuva puhelu"</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index f5f19b6844c1..a5b12508a223 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Fermer"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g> : <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Répondre"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vidéo"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Refuser"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Raccrocher"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Appel entrant"</string> @@ -2264,7 +2263,7 @@ <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string> <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string> <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Nouveaux paramètres d\'agrandissement"</string> - <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Vous pouvez agrandir une partie votre écran."</string> + <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Vous pouvez désormais agrandir une partie de votre écran."</string> <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Activer dans les paramètres"</string> <string name="dismiss_action" msgid="1728820550388704784">"Fermer"</string> <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Débloquer le microphone de l\'appareil"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 5f762ffd653e..86cc13a6d91a 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -1842,7 +1842,7 @@ <string name="select_day" msgid="2060371240117403147">"Sélectionner un mois et un jour"</string> <string name="select_year" msgid="1868350712095595393">"Sélectionner une année"</string> <string name="deleted_key" msgid="9130083334943364001">"\"<xliff:g id="KEY">%1$s</xliff:g>\" supprimé"</string> - <string name="managed_profile_label_badge" msgid="6762559569999499495">"<xliff:g id="LABEL">%1$s</xliff:g> (travail)"</string> + <string name="managed_profile_label_badge" msgid="6762559569999499495">"<xliff:g id="LABEL">%1$s</xliff:g> (pro)"</string> <string name="managed_profile_label_badge_2" msgid="5673187309555352550">"2e <xliff:g id="LABEL">%1$s</xliff:g> professionnelle"</string> <string name="managed_profile_label_badge_3" msgid="6882151970556391957">"3e <xliff:g id="LABEL">%1$s</xliff:g> professionnelle"</string> <string name="lock_to_app_unlock_pin" msgid="3890940811866290782">"Demander le code avant d\'annuler l\'épinglage"</string> @@ -1854,7 +1854,7 @@ <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"L\'économiseur de batterie active le thème sombre et limite ou désactive les activités en arrière-plan, certains effets visuels et d\'autres fonctionnalités comme \"Hey Google\"\n\n"<annotation id="url">"En savoir plus"</annotation></string> <string name="battery_saver_description" msgid="7695751399533397741">"L\'économiseur de batterie active le thème sombre et limite ou désactive les activités en arrière-plan, certains effets visuels et d\'autres fonctionnalités comme \"Hey Google\"."</string> - <string name="data_saver_description" msgid="4995164271550590517">"Pour réduire la consommation de données, l\'économiseur de données empêche certaines applications d\'envoyer ou de recevoir des données en arrière-plan. Ainsi, les applications que vous utilisez peuvent toujours accéder aux données, mais pas en permanence. Par exemple, il se peut que les images ne s\'affichent pas tant que vous n\'appuyez pas dessus."</string> + <string name="data_saver_description" msgid="4995164271550590517">"Pour réduire la consommation des données, l\'Économiseur de données empêche certaines applis d\'envoyer ou de recevoir des données en arrière-plan. Les applis que vous utiliserez pourront toujours accéder aux données, mais le feront moins fréquemment. Par exemple, les images pourront ne pas s\'afficher tant que vous n\'aurez pas appuyé pas dessus."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Activer l\'économiseur de données ?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Activer"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273"> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Fermer"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g> : <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Répondre"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vidéo"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Refuser"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Raccrocher"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Appel entrant"</string> diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index 12bb42d88f2a..cae9637d4ab2 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -307,7 +307,7 @@ <string name="permgroupdesc_contacts" msgid="9163927941244182567">"acceder aos teus contactos"</string> <string name="permgrouplab_location" msgid="1858277002233964394">"Localización"</string> <string name="permgroupdesc_location" msgid="1995955142118450685">"acceder á localización deste dispositivo"</string> - <string name="permgrouplab_calendar" msgid="6426860926123033230">"Calendar"</string> + <string name="permgrouplab_calendar" msgid="6426860926123033230">"Calendario"</string> <string name="permgroupdesc_calendar" msgid="6762751063361489379">"acceder ao teu calendario"</string> <string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string> <string name="permgroupdesc_sms" msgid="5726462398070064542">"enviar e consultar mensaxes de SMS"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Pechar"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Resposta"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vídeo"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Rexeitar"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Colgar"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Chamada entrante"</string> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index 2f2df475d18d..f8de931f84ef 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"બંધ કરો"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"જવાબ"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"વીડિયો"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"નકારો"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"સમાપ્ત કરો"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"ઇનકમિંગ કૉલ"</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index f5abb4c59117..4ab4a7a9bafb 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -220,7 +220,7 @@ <string name="turn_on_radio" msgid="2961717788170634233">"वायरलेस चालू करें"</string> <string name="turn_off_radio" msgid="7222573978109933360">"वायरलेस बंद करें"</string> <string name="screen_lock" msgid="2072642720826409809">"स्क्रीन लॉक"</string> - <string name="power_off" msgid="4111692782492232778">"पावर बंद"</string> + <string name="power_off" msgid="4111692782492232778">"पावर बंद करें"</string> <string name="silent_mode_silent" msgid="5079789070221150912">"रिंगर बंद"</string> <string name="silent_mode_vibrate" msgid="8821830448369552678">"रिंगर कंपन (वाइब्रेशन)"</string> <string name="silent_mode_ring" msgid="6039011004781526678">"रिंगर चालू"</string> @@ -244,10 +244,10 @@ <string name="global_actions" product="tv" msgid="3871763739487450369">"Android TV डिवाइस में फ़ोन से जुड़े विकल्प"</string> <string name="global_actions" product="default" msgid="6410072189971495460">"फ़ोन विकल्प"</string> <string name="global_action_lock" msgid="6949357274257655383">"स्क्रीन लॉक"</string> - <string name="global_action_power_off" msgid="4404936470711393203">"पावर बंद"</string> + <string name="global_action_power_off" msgid="4404936470711393203">"पावर बंद करें"</string> <string name="global_action_power_options" msgid="1185286119330160073">"पावर"</string> <string name="global_action_restart" msgid="4678451019561687074">"रीस्टार्ट करें"</string> - <string name="global_action_emergency" msgid="1387617624177105088">"आपातकाल"</string> + <string name="global_action_emergency" msgid="1387617624177105088">"आपातकालीन"</string> <string name="global_action_bug_report" msgid="5127867163044170003">"गड़बड़ी की रिपोर्ट"</string> <string name="global_action_logout" msgid="6093581310002476511">"सत्र खत्म करें"</string> <string name="global_action_screenshot" msgid="2610053466156478564">"स्क्रीनशॉट"</string> @@ -1692,9 +1692,9 @@ <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"बंद है"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> को अपना डिवाइस पूरी तरह कंट्रोल करने की मंज़ूरी दें?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"अगर आप <xliff:g id="SERVICE">%1$s</xliff:g> को चालू करते हैं, तो डेटा को एन्क्रिप्ट (सुरक्षित) करने के तरीके को बेहतर बनाने के लिए आपका डिवाइस सेट किए गए स्क्रीन लॉक का इस्तेमाल नहीं करेगा."</string> - <string name="accessibility_service_warning_description" msgid="291674995220940133">"पूरी तरह नियंत्रित करने की अनुमति उन ऐप्लिकेशन के लिए ठीक है जो सुलभता से जुड़ी ज़रूरतों के लिए बने हैं, लेकिन ज़्यादातर ऐप्लिकेशन के लिए यह ठीक नहीं है."</string> - <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"स्क्रीन को देखें और नियंत्रित करें"</string> - <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"यह स्क्रीन पर दिखने वाली हर तरह की सामग्री को पढ़ सकता है और उसे दूसरे ऐप्लिकेशन पर दिखा सकता है."</string> + <string name="accessibility_service_warning_description" msgid="291674995220940133">"पूरी तरह कंट्रोल करने की अनुमति उन ऐप्लिकेशन के लिए ठीक है जो सुलभता से जुड़ी ज़रूरतों के लिए बने हैं, लेकिन ज़्यादातर ऐप्लिकेशन के लिए यह ठीक नहीं है."</string> + <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"स्क्रीन को देखें और कंट्रोल करें"</string> + <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"यह स्क्रीन पर दिखने वाली हर तरह के कॉन्टेंट को पढ़ सकता है और उसे दूसरे ऐप्लिकेशन पर दिखा सकता है."</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"देखें और कार्रवाई करें"</string> <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"यह आपके और किसी ऐप्लिकेशन या हार्डवेयर सेंसर के बीच होने वाले इंटरैक्शन को ट्रैक कर सकता है और आपकी तरफ़ से ऐप्लिकेशन के साथ इंटरैक्ट कर सकता है."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"अनुमति दें"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"बंद करें"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"जवाब दें"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"वीडियो"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"अस्वीकार करें"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"कॉल काटें"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"आने वाला (इनकमिंग) कॉल"</string> @@ -2263,7 +2262,7 @@ <string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string> <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string> <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string> - <string name="window_magnification_prompt_title" msgid="2876703640772778215">"ज़ूम करके देखने की नई सुविधा उपलब्ध है"</string> + <string name="window_magnification_prompt_title" msgid="2876703640772778215">"ज़ूम करने की सुविधा वाली नई सेटिंग"</string> <string name="window_magnification_prompt_content" msgid="8159173903032344891">"अब आप अपनी स्क्रीन के किसी हिस्से को ज़ूम करके देख सकते हैं"</string> <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"सेटिंग में जाकर, इस सुविधा को चालू करें"</string> <string name="dismiss_action" msgid="1728820550388704784">"खारिज करें"</string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index c2e3ab8eefed..28fb4003004e 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -1960,8 +1960,7 @@ <string name="close_button_text" msgid="10603510034455258">"Zatvori"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Odgovori"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Videozapis"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Odbij"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Prekini"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Dolazni poziv"</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index 4350d607bf8b..09e56d804ac8 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Bezárás"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Fogadás"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Videó"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Elutasítás"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Befejezés"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Bejövő hívás"</string> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index bbf50a7e2ef7..d4d18c0957f0 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -1694,7 +1694,7 @@ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Եթե միացնեք <xliff:g id="SERVICE">%1$s</xliff:g> ծառայությունը, ձեր սարքը չի օգտագործի էկրանի կողպումը՝ տվյալների գաղտնագրումը բարելավելու համար:"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Ամբողջական վերահսկումն անհրաժեշտ է միայն այն հավելվածներին, որոնք օգնում են ձեզ հատուկ գործառույթներից օգտվելիս։"</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Դիտել և կառավարել էկրանը"</string> - <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Կարող է կարդալ էկրանի բովանդակությունն ու ցուցադրել այլ հավելվածներում։"</string> + <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Կարող է կարդալ էկրանի ողջ բովանդակությունը և ցուցադրել բովանդակություն այլ հավելվածների վրայից։"</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Դիտել և համակարգել գործողությունները"</string> <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Կարող է հետագծել ձեր գործողությունները հավելվածներում և սարքակազմի սենսորների վրա, ինչպես նաև հավելվածներում կատարել գործողություններ ձեր անունից։"</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Թույլատրել"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Փակել"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>՝ <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Պատասխանել"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Տեսազանգ"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Մերժել"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Ավարտել"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Մուտքային զանգ"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 222bbe826eed..5491214a8446 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -1693,10 +1693,10 @@ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Izinkan <xliff:g id="SERVICE">%1$s</xliff:g> memiliki kontrol penuh atas perangkat Anda?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jika Anda mengaktifkan <xliff:g id="SERVICE">%1$s</xliff:g>, perangkat tidak akan menggunakan kunci layar untuk meningkatkan enkripsi data."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Kontrol penuh sesuai untuk aplikasi yang membantu Anda terkait kebutuhan aksesibilitas, tetapi tidak untuk sebagian besar aplikasi."</string> - <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Tampilan dan layar kontrol"</string> + <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Melihat dan mengontrol layar"</string> <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Aplikasi dapat membaca semua konten di layar dan menampilkan konten di atas aplikasi lain."</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Menampilkan dan melakukan tindakan"</string> - <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Aplikasi dapat melacak interaksi Anda dengan aplikasi atau sensor hardware, dan berinteraksi dengan aplikasi atas nama Anda."</string> + <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Aplikasi dapat melacak interaksi Anda dengan aplikasi atau sensor hardware, dan melakukan interaksi dengan aplikasi untuk Anda."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Izinkan"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Tolak"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Ketuk fitur untuk mulai menggunakannya:"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Tutup"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Jawab"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Tolak"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Tutup"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Panggilan masuk"</string> diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index 47503eddcdbb..4ed6fcc4d078 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Loka"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Svara"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Myndsímtal"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Hafna"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Leggja á"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Símtal berst"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 31096c75b43a..23acc8bc9ce1 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -1692,10 +1692,10 @@ <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"OFF"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vuoi consentire a <xliff:g id="SERVICE">%1$s</xliff:g> di avere il controllo totale del tuo dispositivo?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se attivi <xliff:g id="SERVICE">%1$s</xliff:g>, il dispositivo non utilizzerà il blocco schermo per migliorare la crittografia dei dati."</string> - <string name="accessibility_service_warning_description" msgid="291674995220940133">"Il pieno controllo è appropriato per le app che rispondono alle tue esigenze di accessibilità, ma non per gran parte delle app."</string> - <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Visualizza e controlla lo schermo"</string> + <string name="accessibility_service_warning_description" msgid="291674995220940133">"Il controllo totale è appropriato per le app che rispondono alle tue esigenze di accessibilità, ma non per gran parte delle app."</string> + <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Visualizzare e controllare lo schermo"</string> <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Può leggere i contenuti presenti sullo schermo e mostrare i contenuti su altre app."</string> - <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Visualizza ed esegui azioni"</string> + <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Visualizzare ed eseguire azioni"</string> <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Può tenere traccia delle tue interazioni con un\'app o un sensore hardware e interagire con app per tuo conto."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Consenti"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Rifiuta"</string> @@ -2274,5 +2274,5 @@ <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Icona dell\'applicazione"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Immagine del branding dell\'applicazione"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"Controlla le impostazioni di accesso"</string> - <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> può visualizzare e controllare il tuo schermo. Tocca per esaminare."</string> + <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> può visualizzare e controllare il tuo schermo. Tocca per verificare."</string> </resources> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 0bc815b71fc5..99c1c25d4189 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -1405,7 +1405,7 @@ <string name="usb_power_notification_message" msgid="7284765627437897702">"המכשיר המחובר בטעינה. יש להקיש לאפשרויות נוספות."</string> <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"המכשיר זיהה התקן אודיו אנלוגי"</string> <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"ההתקן שחיברת לא תואם לטלפון הזה. יש להקיש לקבלת מידע נוסף."</string> - <string name="adb_active_notification_title" msgid="408390247354560331">"ניפוי באגים של USB מחובר"</string> + <string name="adb_active_notification_title" msgid="408390247354560331">"ניפוי באגים ב-USB מחובר"</string> <string name="adb_active_notification_message" msgid="5617264033476778211">"יש להקיש כדי לכבות את ניפוי הבאגים ב-USB"</string> <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"יש ללחוץ על ההתראה כדי להשבית ניפוי באגים ב-USB."</string> <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ניפוי הבאגים האלחוטי מחובר"</string> @@ -1991,8 +1991,7 @@ <string name="close_button_text" msgid="10603510034455258">"סגירה"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"תשובה"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"וידאו"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"דחייה"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ניתוק"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"שיחה נכנסת"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index d571a6b3da5c..da0e492d40ae 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -1692,7 +1692,7 @@ <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"OFF"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> にデバイスのフル コントロールを許可しますか?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> をオンにすると、デバイスデータの暗号化の強化に画面ロックは使用されなくなります。"</string> - <string name="accessibility_service_warning_description" msgid="291674995220940133">"フル コントロールは、ユーザー補助機能を必要とするユーザーをサポートするアプリには適していますが、ほとんどのアプリには適していません。"</string> + <string name="accessibility_service_warning_description" msgid="291674995220940133">"フル コントロールは、ユーザー補助機能が必要な場合には適していますが、その他の多くのアプリには不要です。"</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"画面の表示と操作"</string> <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"画面上のすべてのコンテンツを読み取り、他のアプリでコンテンツを表示することができます。"</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"操作の表示と実行"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"閉じる"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"応答"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ビデオ"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"拒否"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"通話終了"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"着信"</string> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index 7a4585181a8a..6b73379b3650 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -1690,7 +1690,7 @@ <string name="accessibility_shortcut_off" msgid="3651336255403648739">"Қосылмасын"</string> <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"ҚОСУЛЫ"</string> <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"ӨШІРУЛІ"</string> - <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> қызметі құрылғыңызды толық басқаруына рұқсат етілсін бе?"</string> + <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> қызметіне құрылғыны толық басқаруға рұқсат етілсін бе?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> қоссаңыз, құрылғыңыз деректерді шифрлау үшін экранды бекітуді пайдаланбайды."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Арнайы мүмкіндіктер бойынша көмектесетін қолданбаларға ғана құрылғыны толық басқару рұқсатын берген дұрыс."</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Экранды көру және басқару"</string> @@ -1698,7 +1698,7 @@ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Әрекеттерді көру және орындау"</string> <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Ол қолданбамен немесе жабдық датчигімен істеген тапсырмаларыңызды бақылайды және қолданбаларды сіздің атыңыздан пайдаланады."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Рұқсат ету"</string> - <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Қабылдамау"</string> + <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Тыйым салу"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Функцияны пайдалана бастау үшін түртіңіз:"</string> <string name="accessibility_edit_shortcut_menu_button_title" msgid="239446795930436325">"\"Арнайы мүмкіндіктер\" түймесімен қолданылатын функцияларды таңдаңыз"</string> <string name="accessibility_edit_shortcut_menu_volume_title" msgid="1077294237378645981">"Дыбыс деңгейі пернелері тіркесімімен қолданылатын функцияларды таңдаңыз"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Жабу"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Жауап"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Бейне"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Қабылдамау"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Тұтқаны қою"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Кіріс қоңырау"</string> @@ -2275,5 +2274,5 @@ <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Қолданба белгішесі"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Қолданба брендін ілгері жылжыту кескіні"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"Пайдалану параметрлерін тексеріңіз"</string> - <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> қызметі экраныңызды көріп, бақылай алады. Көру үшін түртіңіз."</string> + <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> экраныңызды көріп, оны басқара алады. Өту үшін түртіңіз."</string> </resources> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index 110641dea26d..81dc8919f469 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -1365,8 +1365,8 @@ <string name="usb_power_notification_message" msgid="7284765627437897702">"កំពុងសាកថ្មឧបករណ៍ដែលបានភ្ជាប់។ សូមចុចសម្រាប់ជម្រើសបន្ថែម។"</string> <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"បានរកឃើញគ្រឿងបរិក្ខារសំឡេងអាណាឡូក"</string> <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"ឧបករណ៍ដែលភ្ជាប់មកជាមួយមិនត្រូវគ្នាជាមួយទូរសព្ទនេះទេ។ ចុចដើម្បីស្វែងយល់បន្ថែម។"</string> - <string name="adb_active_notification_title" msgid="408390247354560331">"បានភ្ជាប់ការកែកំហុសតាម USB"</string> - <string name="adb_active_notification_message" msgid="5617264033476778211">"ចុចដើម្បីបិទការកែកំហុសតាម USB"</string> + <string name="adb_active_notification_title" msgid="408390247354560331">"បានភ្ជាប់ការជួសជុលតាម USB"</string> + <string name="adb_active_notification_message" msgid="5617264033476778211">"ចុចដើម្បីបិទការជួសជុលតាម USB"</string> <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"ជ្រើសរើស ដើម្បីបិទការកែកំហុសតាម USB ។"</string> <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"បានភ្ជាប់ការជួសជុលដោយឥតខ្សែ"</string> <string name="adbwifi_active_notification_message" msgid="930987922852867972">"ចុច ដើម្បីបិទការជួសជុលដោយឥតខ្សែ"</string> @@ -1566,7 +1566,7 @@ <string name="action_menu_overflow_description" msgid="4579536843510088170">"ជម្រើសច្រើនទៀត"</string> <string name="action_bar_home_description_format" msgid="5087107531331621803">"%1$s, %2$s"</string> <string name="action_bar_home_subtitle_description_format" msgid="4346835454749569826">"%1$s, %2$s, %3$s"</string> - <string name="storage_internal" msgid="8490227947584914460">"ឧបករណ៍ផ្ទុកដែលចែករំលែកខាងក្នុង"</string> + <string name="storage_internal" msgid="8490227947584914460">"ទំហំផ្ទុករួមខាងក្នុង"</string> <string name="storage_sd_card" msgid="3404740277075331881">"កាតអេសឌី"</string> <string name="storage_sd_card_label" msgid="7526153141147470509">"កាត SD <xliff:g id="MANUFACTURER">%s</xliff:g>"</string> <string name="storage_usb_drive" msgid="448030813201444573">"ឧបករណ៍ផ្ទុក USB"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"បិទ"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>៖ <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"ឆ្លើយ"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"វីដេអូ"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"បដិសេធ"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ដាក់ចុះ"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"ការហៅចូល"</string> diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index e5183dc08ece..f484344473a9 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -1693,7 +1693,7 @@ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"ನಿಮ್ಮ ಸಾಧನದ ಪೂರ್ಣ ನಿಯಂತ್ರಣ ಹೊಂದಲು <xliff:g id="SERVICE">%1$s</xliff:g> ಗೆ ಅನುಮತಿಸಬೇಕೆ?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ನೀವು <xliff:g id="SERVICE">%1$s</xliff:g> ಅನ್ನು ಆನ್ ಮಾಡಿದರೆ, ನಿಮ್ಮ ಸಾಧನವು ಡೇಟಾ ಎನ್ಕ್ರಿಪ್ಶನ್ ಅನ್ನು ವರ್ಧಿಸಲು ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ಲಾಕ್ ಅನ್ನು ಬಳಸುವುದಿಲ್ಲ."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"ಪ್ರವೇಶಿಸುವಿಕೆಯ ಅವಶ್ಯಕತೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುವ ಆ್ಯಪ್ಗಳಿಗೆ ಪೂರ್ಣ ನಿಯಂತ್ರಣ ನೀಡುವುದು ಸೂಕ್ತವಾಗಿರುತ್ತದೆ, ಆದರೆ ಬಹುತೇಕ ಆ್ಯಪ್ಗಳಿಗೆ ಇದು ಸೂಕ್ತವಲ್ಲ."</string> - <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ಪರದೆಯನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ"</string> + <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ಸ್ಕ್ರೀನ್ ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ"</string> <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ಇದು ಪರದೆಯ ಮೇಲಿನ ಎಲ್ಲಾ ವಿಷಯವನ್ನು ಓದಬಹುದು ಮತ್ತು ಇತರ ಆ್ಯಪ್ಗಳ ಮೇಲೆ ವಿಷಯವನ್ನು ಪ್ರದರ್ಶಿಸಬಹುದು."</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"ಕ್ರಿಯೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿರ್ವಹಿಸಿ"</string> <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"ಇದು ಆ್ಯಪ್ ಅಥವಾ ಹಾರ್ಡ್ವೇರ್ ಸೆನ್ಸರ್ನ ಜೊತೆಗಿನ ನಿಮ್ಮ ಸಂವಹನಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಬಹುದು, ಮತ್ತು ನಿಮ್ಮ ಪರವಾಗಿ ಆ್ಯಪ್ಗಳ ಜೊತೆ ಸಂವಹನ ನಡೆಸಬಹುದು."</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"ಮುಚ್ಚು"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"ಉತ್ತರಿಸಿ"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ವೀಡಿಯೊ"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"ನಿರಾಕರಿಸಿ"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ಹ್ಯಾಂಗ್ ಅಪ್"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"ಒಳಬರುವ ಕರೆ"</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index cad3dff1ad1c..da8f4ab04921 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"닫기"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"답변"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"동영상"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"거절"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"전화 끊기"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"수신 전화"</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index 40d1bfea0f1e..8feb675e3675 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Жабуу"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Жооп берүү"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видео"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Четке кагуу"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Чалууну бүтүрүү"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Кирүүчү чалуу"</string> @@ -2131,8 +2130,8 @@ <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ЧЕКТЕЛГЕН чакага коюлган"</string> <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string> <string name="conversation_single_line_image_placeholder" msgid="6983271082911936900">"сүрөт жөнөттү"</string> - <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Жазышуу"</string> - <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Топтошуп жазышуу"</string> + <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Сүйлөшүү"</string> + <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Топтошуп сүйлөшүү"</string> <string name="unread_convo_overflow" msgid="920517615597353833">"<xliff:g id="MAX_UNREAD_COUNT">%1$d</xliff:g>+"</string> <string name="resolver_personal_tab" msgid="2051260504014442073">"Жеке"</string> <string name="resolver_work_tab" msgid="2690019516263167035">"Жумуш"</string> @@ -2263,7 +2262,7 @@ <string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string> <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string> <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string> - <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Жаңы чоңойтуу жөндөөлөрү"</string> + <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Чоңойтуу функциясынын жаңы жөндөөлөрү"</string> <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Эми экрандын бир бөлүгүн чоңойто аласыз"</string> <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Жөндөөлөрдөн күйгүзүү"</string> <string name="dismiss_action" msgid="1728820550388704784">"Жабуу"</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index d06bc1645b47..ed4f15ea85cb 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -1991,8 +1991,7 @@ <string name="close_button_text" msgid="10603510034455258">"Uždaryti"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Atsakyti"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Vaizdo įrašas"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Atmesti"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Baigti pok."</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Gaunamasis skambutis"</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index 7e54fb95d571..94a50ea3e50e 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -1960,8 +1960,7 @@ <string name="close_button_text" msgid="10603510034455258">"Aizvērt"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Atbildēt"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Noraidīt"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Pārtraukt"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Ienākošais zvans"</string> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index 1e4ede25f14b..5e90faa2555e 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -1694,9 +1694,9 @@ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ако вклучите <xliff:g id="SERVICE">%1$s</xliff:g>, уредот нема да го користи заклучувањето на екранот за да го подобри шифрирањето на податоците."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Целосната контрола е соодветна за апликации што ви помагаат со потребите за пристапност, но не и за повеќето апликации."</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Приказ и контрола на екранот"</string> - <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Може да ги чита сите содржини на екранот и да прикажува содржини на други апликации."</string> - <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Приказ и изведување дејства"</string> - <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Може да ги следи вашите интеракции со апликациите или хардверскиот сензор и да комуницира со апликациите во ваше име."</string> + <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Може да ги чита сите содржини на екранот и да прикажува содржини врз другите апликации."</string> + <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Преглед и вршење на дејствата"</string> + <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Може да ја следи вашата интеракција со апликациите или хардверскиот сензор и да врши интеракција со апликациите во ваше име."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Дозволи"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Одбиј"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Допрете на функција за да почнете да ја користите:"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Затвори"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Одговори"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видео"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Одбиј"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Спушти"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Дојдовен повик"</string> @@ -2265,7 +2264,7 @@ <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string> <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Нови поставки за зголемување"</string> <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Сега може да зголемувате дел од екранот"</string> - <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Вклучи во „Поставки“"</string> + <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Вклучете во „Поставки“"</string> <string name="dismiss_action" msgid="1728820550388704784">"Отфрли"</string> <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"Одблокирајте го пристапот до микрофонот на уредот"</string> <string name="sensor_privacy_start_use_camera_notification_content_title" msgid="7287720213963466672">"Одблокирајте го пристапот до камерата на уредот"</string> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index 1a27c20fca37..02557ee3b3c1 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"അവസാനിപ്പിക്കുക"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"മറുപടി നൽകുക"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"വീഡിയോ"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"നിരസിക്കുക"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"കോൾ നിർത്തുക"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"ഇൻകമിംഗ് കോൾ"</string> diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index a3a3cdb901dd..30ab6920fe28 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Хаах"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Хариулах"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видео"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Татгалзах"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Таслах"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Ирсэн дуудлага"</string> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index 1583abf5fe4d..9beb59f1c89f 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -277,7 +277,7 @@ <string name="notification_hidden_text" msgid="2835519769868187223">"नवीन सूचना"</string> <string name="notification_channel_virtual_keyboard" msgid="6465975799223304567">"व्हर्च्युअल कीबोर्ड"</string> <string name="notification_channel_physical_keyboard" msgid="5417306456125988096">"वास्तविक कीबोर्ड"</string> - <string name="notification_channel_security" msgid="8516754650348238057">"सुरक्षितता"</string> + <string name="notification_channel_security" msgid="8516754650348238057">"सुरक्षा"</string> <string name="notification_channel_car_mode" msgid="2123919247040988436">"कार मोड"</string> <string name="notification_channel_account" msgid="6436294521740148173">"खाते स्थिती"</string> <string name="notification_channel_developer" msgid="1691059964407549150">"डेव्हलपर मेसेज"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"बंद करा"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"उत्तर द्या"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"व्हिडिओ"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"नकार द्या"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"कॉल बंद करा"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"इनकमिंग कॉल"</string> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index 0afa2f94349e..932b01b93676 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Tutup"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Jawapan"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Tolak"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Tamatkan Panggilan"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Panggilan masuk"</string> @@ -2275,5 +2274,5 @@ <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ikon aplikasi"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Imej jenama aplikasi"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"Semak tetapan akses"</string> - <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> boleh melihat dan mengawal skrin anda. Ketik untuk menyemak."</string> + <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> boleh melihat dan mengawal skrin anda. Ketik untuk membuat semakan."</string> </resources> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index be4bf4fa72d4..9c6593ec51fe 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -142,7 +142,7 @@ <string name="wfcSpnFormat_wifi" msgid="1376356951297043426">"Wi-Fi"</string> <string name="wfcSpnFormat_wifi_calling_wo_hyphen" msgid="7178561009225028264">"WiFi ခေါ်ဆိုမှု"</string> <string name="wfcSpnFormat_vowifi" msgid="8371335230890725606">"VoWifi"</string> - <string name="wifi_calling_off_summary" msgid="5626710010766902560">"ပိတ်ထားသည်"</string> + <string name="wifi_calling_off_summary" msgid="5626710010766902560">"ပိတ်"</string> <string name="wfc_mode_wifi_preferred_summary" msgid="1035175836270943089">"Wi-Fi သုံး၍ ခေါ်ဆိုသည်"</string> <string name="wfc_mode_cellular_preferred_summary" msgid="4958965609212575619">"မိုဘိုင်းကွန်ရက်သုံး၍ ခေါ်ဆိုသည်"</string> <string name="wfc_mode_wifi_only_summary" msgid="104951993894678665">"ကြိုးမဲ့အင်တာနက် သာလျှင်"</string> @@ -317,7 +317,7 @@ <string name="permgroupdesc_microphone" msgid="1047786732792487722">"အသံဖမ်းခြင်း"</string> <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"ကိုယ်လက်လှုပ်ရှားမှု"</string> <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"သင့်ကိုယ်လက်လှုပ်ရှားမှုကို ဝင်ကြည့်ရန်"</string> - <string name="permgrouplab_camera" msgid="9090413408963547706">"ကင်မရာ"</string> + <string name="permgrouplab_camera" msgid="9090413408963547706">"Camera"</string> <string name="permgroupdesc_camera" msgid="7585150538459320326">"ဓာတ်ပုံ ရိုက်ပြီးနောက် ဗွီဒီယို မှတ်တမ်းတင်ရန်"</string> <string name="permgrouplab_nearby_devices" msgid="5529147543651181991">"အနီးတစ်ဝိုက်ရှိ စက်များ"</string> <string name="permgroupdesc_nearby_devices" msgid="3213561597116913508">"အနီးတစ်ဝိုက်ရှိ စက်များကို ရှာဖွေပြီးချိတ်ဆက်မည်"</string> @@ -1175,7 +1175,7 @@ <string name="no" msgid="5122037903299899715">"မလုပ်တော့"</string> <string name="dialog_alert_title" msgid="651856561974090712">"သတိပြုရန်"</string> <string name="loading" msgid="3138021523725055037">"တင်နေ…"</string> - <string name="capital_on" msgid="2770685323900821829">"ဖွင့်ရန်"</string> + <string name="capital_on" msgid="2770685323900821829">"ဖွင့်"</string> <string name="capital_off" msgid="7443704171014626777">"ပိတ်"</string> <string name="checked" msgid="9179896827054513119">"အမှန်ခြစ်ပြီး"</string> <string name="not_checked" msgid="7972320087569023342">"ခြစ် မထား"</string> @@ -1688,8 +1688,8 @@ <string name="accessibility_shortcut_single_service_warning" msgid="6363127705112844257">"အသံခလုတ်နှစ်ခုလုံးကို စက္ကန့်အနည်းငယ် ဖိထားခြင်းက အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုဖြစ်သော <xliff:g id="SERVICE">%1$s</xliff:g> ကို ဖွင့်ပေးသည်။ ဤလုပ်ဆောင်ချက်က သင့်စက်အလုပ်လုပ်ပုံကို ပြောင်းလဲနိုင်သည်။\n\nဤဖြတ်လမ်းလင့်ခ်ကို \'ဆက်တင်များ > အများသုံးစွဲနိုင်မှု\' တွင် နောက်ဝန်ဆောင်မှုတစ်ခုသို့ ပြောင်းနိုင်သည်။"</string> <string name="accessibility_shortcut_on" msgid="5463618449556111344">"ဖွင့်ရန်"</string> <string name="accessibility_shortcut_off" msgid="3651336255403648739">"မဖွင့်ပါနှင့်"</string> - <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"ဖွင့်ထားသည်"</string> - <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"ပိတ်ထားသည်"</string> + <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"ဖွင့်"</string> + <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"ပိတ်"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> ကို သင့်စက်အား အပြည့်အဝထိန်းချုပ်ခွင့် ပေးလိုပါသလား။"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> ဖွင့်လိုက်ပါက သင်၏စက်သည် ဒေတာအသွင်ဝှက်ခြင်း ပိုကောင်းမွန်စေရန် သင့်ဖန်သားပြင်လော့ခ်ကို သုံးမည်မဟုတ်ပါ။"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"အများသုံးစွဲနိုင်မှု လိုအပ်ချက်များအတွက် အထောက်အကူပြုသည့် အက်ပ်များအား အပြည့်အဝ ထိန်းချုပ်ခွင့်ပေးခြင်းသည် သင့်လျော်သော်လည်း အက်ပ်အများစုအတွက် မသင့်လျော်ပါ။"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"ပိတ်ရန်"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>− <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"ဖုန်းကိုင်ရန်"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ဗီဒီယို"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"ငြင်းပယ်ရန်"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ဖုန်းချရန်"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"အဝင်ခေါ်ဆိုမှု"</string> @@ -2066,7 +2065,7 @@ <string name="zen_upgrade_notification_content" msgid="5228458567180124005">"ပိတ်ထားသည့်အရာများကို ကြည့်ရန် တို့ပါ။"</string> <string name="notification_app_name_system" msgid="3045196791746735601">"စနစ်"</string> <string name="notification_app_name_settings" msgid="9088548800899952531">"ဆက်တင်များ"</string> - <string name="notification_appops_camera_active" msgid="8177643089272352083">"ကင်မရာ"</string> + <string name="notification_appops_camera_active" msgid="8177643089272352083">"Camera"</string> <string name="notification_appops_microphone_active" msgid="581333393214739332">"မိုက်ခရိုဖုန်း"</string> <string name="notification_appops_overlay_active" msgid="5571732753262836481">"သင့်မျက်နှာပြင်ပေါ်ရှိ အခြားအက်ပ်များပေါ်တွင် ပြသခြင်း"</string> <string name="notification_feedback_indicator" msgid="663476517711323016">"အကြံပြုချက် ပေးရန်"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index 9c70fdf4231d..4720e295cd7f 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -1709,7 +1709,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Bruk snarveien"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Fargeinvertering"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Fargekorrigering"</string> - <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dempet belysning"</string> + <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Ekstra dimmet"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått på."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Volumtastene holdes inne. <xliff:g id="SERVICE_NAME">%1$s</xliff:g> er slått av."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Trykk og hold inne begge volumtastene i tre sekunder for å bruke <xliff:g id="SERVICE_NAME">%1$s</xliff:g>"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Lukk"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g><xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Svar"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Avvis"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Legg på"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Innkommende anrop"</string> diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index e7c8e4bb9296..ece2a53a9504 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -1692,7 +1692,7 @@ <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"निष्क्रिय"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> लाई तपाईंको यन्त्र पूर्ण रूपमा नियन्त्रण गर्न दिने हो?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"तपाईंले <xliff:g id="SERVICE">%1$s</xliff:g> सक्रिय गर्नुभयो भने तपाईंको यन्त्रले डेटा इन्क्रिप्ट गर्ने सुविधाको स्तरोन्नति गर्न तपाईंको स्क्रिन लक सुविधाको प्रयोग गर्ने छैन।"</string> - <string name="accessibility_service_warning_description" msgid="291674995220940133">"तपाईंलाई पहुँच राख्न आवश्यक पर्ने कुरामा सहयोग गर्ने एपमाथि पूर्ण नियन्त्रण गर्नु उपयुक्त हुन्छ तर अधिकांश अनुप्रयोगहरूका हकमा यस्तो नियन्त्रण उपयुक्त हुँदैन।"</string> + <string name="accessibility_service_warning_description" msgid="291674995220940133">"एक्सेसिबिलिटीसम्बन्धी आवश्यकतामा सहयोग गर्ने एपको पूर्ण नियन्त्रण गर्नु उपयुक्त हुन्छ तर अधिकांश एपका हकमा यस्तो नियन्त्रण उपयुक्त हुँदैन।"</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"स्क्रिन हेर्नुहोस् र नियन्त्रण गर्नुहोस्"</string> <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"यसले स्क्रिनमा देखिने सबै सामग्री पढ्न सक्छ र अन्य एपहरूमा उक्त सामग्री देखाउन सक्छ।"</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"कारबाहीहरू हेर्नुहोस् र तिनमा कार्य गर्नुहोस्"</string> @@ -2272,7 +2272,7 @@ <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string> <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string> <string name="window_magnification_prompt_title" msgid="2876703640772778215">"जुम इन गर्ने सुविधासम्बन्धी नयाँ सेटिङ"</string> - <string name="window_magnification_prompt_content" msgid="8159173903032344891">"तपाईं अब स्क्रिनको जुनसुकै भाग जुम इन गर्न सक्नुहुन्छ"</string> + <string name="window_magnification_prompt_content" msgid="8159173903032344891">"तपाईं अब स्क्रिनको जुनसुकै भागमा जुम इन गर्न सक्नुहुन्छ"</string> <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"सेटिङमा गई यो सुविधा अन गर्नुहोस्"</string> <string name="dismiss_action" msgid="1728820550388704784">"हटाउनुहोस्"</string> <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"डिभाइसको माइक्रोफोन अनब्लक गर्नुहोस्"</string> @@ -2282,6 +2282,6 @@ <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"सेन्सरसम्बन्धी गोपनीयता"</string> <string name="splash_screen_view_icon_description" msgid="180638751260598187">"एप जनाउने आइकन"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"एपको ब्रान्डिङ फोटो"</string> - <string name="view_and_control_notification_title" msgid="4300765399209912240">"हेर्ने तथा नियन्त्रण गर्ने अनुमतिसम्बन्धी सेटिङ जाँच्नु…"</string> - <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ले तपाईंको स्क्रिन हेर्न र नियन्त्रण गर्न सक्छ। समीक्षा गर्न ट्याप गर्नुहोस्।"</string> + <string name="view_and_control_notification_title" msgid="4300765399209912240">"हेराइ र नियन्त्रणसम्बन्धी सेटिङ जाँच्नुहोस्"</string> + <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> तपाईंको स्क्रिन हेर्न र नियन्त्रण गर्न सक्छ। सेटिङ मिलाउन ट्याप गर्नुहोस्।"</string> </resources> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index d326f85d104b..fcc526497b2b 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Sluiten"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Beantwoorden"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Weigeren"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Ophangen"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Inkomend gesprek"</string> @@ -2275,5 +2274,5 @@ <string name="splash_screen_view_icon_description" msgid="180638751260598187">"App-icoon"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Merkafbeelding voor app"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"Toegangsinstellingen checken"</string> - <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kan je scherm bekijken en beheren. Tik om te bekijken."</string> + <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kan je scherm bekijken en bedienen. Tik om te checken."</string> </resources> diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index 7948f642a38d..55bb3151a138 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"ବନ୍ଦ କରନ୍ତୁ"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"ଉତ୍ତର ଦିଅନ୍ତୁ"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ଭିଡିଓ"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"ଅଗ୍ରାହ୍ୟ କର"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ସମାପ୍ତ କରନ୍ତୁ"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"ଇନକମିଂ କଲ୍"</string> diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index 72c662f124e7..bfa576033543 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -307,7 +307,7 @@ <string name="permgroupdesc_contacts" msgid="9163927941244182567">"ਆਪਣੇ ਸੰਪਰਕਾਂ ਤੱਕ ਪਹੁੰਚ ਕਰਨ"</string> <string name="permgrouplab_location" msgid="1858277002233964394">"ਟਿਕਾਣਾ"</string> <string name="permgroupdesc_location" msgid="1995955142118450685">"ਇਸ ਡੀਵਾਈਸ ਦੇ ਨਿਰਧਾਰਤ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚੋ"</string> - <string name="permgrouplab_calendar" msgid="6426860926123033230">"Calendar"</string> + <string name="permgrouplab_calendar" msgid="6426860926123033230">"ਕੈਲੰਡਰ"</string> <string name="permgroupdesc_calendar" msgid="6762751063361489379">"ਤੁਹਾਡੇ ਕੈਲੰਡਰ ਤੱਕ ਪਹੁੰਚ ਕਰਨ"</string> <string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string> <string name="permgroupdesc_sms" msgid="5726462398070064542">"SMS ਸੁਨੇਹੇ ਭੇਜੋ ਅਤੇ ਦੇਖੋ"</string> @@ -1694,7 +1694,7 @@ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ਜੇਕਰ ਤੁਸੀਂ <xliff:g id="SERVICE">%1$s</xliff:g> ਚਾਲੂ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਇਨਕ੍ਰਿਪਸ਼ਨ ਦਾ ਵਿਸਤਾਰ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਸਕ੍ਰੀਨ ਲਾਕ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰੇਗਾ।"</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"ਪੂਰਾ ਕੰਟਰੋਲ ਉਹਨਾਂ ਐਪਾਂ ਲਈ ਢੁਕਵਾਂ ਹੈ ਜੋ ਪਹੁੰਚਯੋਗਤਾ ਸੰਬੰਧੀ ਲੋੜਾਂ ਵਿੱਚ ਤੁਹਾਡੀ ਮਦਦ ਕਰਦੀਆਂ ਹਨ, ਪਰ ਜ਼ਿਆਦਾਤਰ ਐਪਾਂ ਲਈ ਢੁਕਵਾਂ ਨਹੀਂ ਹੁੰਦਾ।"</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ਸਕ੍ਰੀਨ ਨੂੰ ਦੇਖੋ ਅਤੇ ਕੰਟਰੋਲ ਕਰੋ"</string> - <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ਇਹ ਸਕ੍ਰੀਨ \'ਤੇ ਸਾਰੀ ਸਮੱਗਰੀ ਪੜ੍ਹ ਸਕਦੀ ਹੈ ਅਤੇ ਸਮੱਗਰੀ ਨੂੰ ਦੂਜੀਆਂ ਐਪਾਂ ਦੇ ਉੱਪਰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰ ਸਕਦੀ ਹੈ।"</string> + <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ਇਹ ਸਕ੍ਰੀਨ \'ਤੇ ਸਾਰੀ ਸਮੱਗਰੀ ਪੜ੍ਹ ਸਕਦੀ ਹੈ ਅਤੇ ਸਮੱਗਰੀ ਨੂੰ ਦੂਜੀਆਂ ਐਪਾਂ ਦੇ ਉੱਪਰ ਦਿਖਾ ਸਕਦੀ ਹੈ।"</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"ਕਾਰਵਾਈਆਂ ਦੇਖੋ ਅਤੇ ਕਰੋ"</string> <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"ਇਹ ਕਿਸੇ ਐਪ ਜਾਂ ਹਾਰਡਵੇਅਰ ਸੈਂਸਰ ਦੇ ਨਾਲ ਤੁਹਾਡੀਆਂ ਅੰਤਰਕਿਰਿਆਵਾਂ ਨੂੰ ਟਰੈਕ ਕਰ ਸਕਦੀ ਹੈ, ਅਤੇ ਤੁਹਾਡੀ ਤਰਫ਼ੋਂ ਐਪਾਂ ਦੇ ਨਾਲ ਅੰਤਰਕਿਰਿਆ ਕਰ ਸਕਦੀ ਹੈ।"</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ਕਰਨ ਦਿਓ"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"ਬੰਦ ਕਰੋ"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"ਜਵਾਬ ਦਿਓ"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"ਵੀਡੀਓ"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"ਅਸਵੀਕਾਰ ਕਰੋ"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"ਸਮਾਪਤ ਕਰੋ"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"ਇਨਕਮਿੰਗ ਕਾਲ"</string> @@ -2264,7 +2263,7 @@ <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string> <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string> <string name="window_magnification_prompt_title" msgid="2876703640772778215">"ਨਵੀਆਂ ਵੱਡਦਰਸ਼ੀਕਰਨ ਸੈਟਿੰਗਾਂ"</string> - <string name="window_magnification_prompt_content" msgid="8159173903032344891">"ਹੁਣ ਤੁਸੀਂ ਆਪਣੀ ਸਕ੍ਰੀਨ ਦਾ ਕੁਝ ਹਿੱਸਾ ਵੱਡਦਰਸ਼ੀ ਕਰ ਸਕਦੇ ਹੋ"</string> + <string name="window_magnification_prompt_content" msgid="8159173903032344891">"ਹੁਣ ਤੁਸੀਂ ਆਪਣੀ ਸਕ੍ਰੀਨ ਦਾ ਕੁਝ ਹਿੱਸਾ ਵੱਡਾ ਕਰ ਸਕਦੇ ਹੋ"</string> <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਚਾਲੂ ਕਰੋ"</string> <string name="dismiss_action" msgid="1728820550388704784">"ਖਾਰਜ ਕਰੋ"</string> <string name="sensor_privacy_start_use_mic_notification_content_title" msgid="2420858361276370367">"ਡੀਵਾਈਸ ਦੇ ਮਾਈਕ੍ਰੋਫ਼ੋਨ ਨੂੰ ਅਣਬਲਾਕ ਕਰੋ"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index 89279d4f0f0b..57037ad5bbd9 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -1737,7 +1737,7 @@ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Pozwolić usłudze <xliff:g id="SERVICE">%1$s</xliff:g> na pełną kontrolę nad urządzeniem?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jeśli włączysz usługę <xliff:g id="SERVICE">%1$s</xliff:g>, Twoje urządzenie nie będzie korzystać z blokady ekranu, by usprawnić szyfrowanie danych."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Pełna kontrola jest odpowiednia dla aplikacji, które pomagają Ci radzić sobie z niepełnosprawnością, ale nie należy jej przyznawać wszystkim aplikacjom."</string> - <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Wyświetlaj i steruj ekranem"</string> + <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Wyświetlaj i kontroluj ekran"</string> <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Może odczytywać całą zawartość ekranu i wyświetlać treść nad innymi aplikacjami."</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Wyświetlaj i wykonuj działania"</string> <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Może śledzić Twoje interakcje z aplikacjami lub czujnikiem sprzętowym, a także obsługiwać aplikacje za Ciebie."</string> @@ -1991,8 +1991,7 @@ <string name="close_button_text" msgid="10603510034455258">"Zamknij"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Odbierz"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Film"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Odrzuć"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Rozłącz"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Połączenie przychodzące"</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 019107a019c1..d0c2beb61c79 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -1621,7 +1621,7 @@ <string name="wireless_display_route_description" msgid="8297563323032966831">"Visualização sem fios"</string> <string name="media_route_button_content_description" msgid="2299223698196869956">"Transmitir"</string> <string name="media_route_chooser_title" msgid="6646594924991269208">"Ligar ao dispositivo"</string> - <string name="media_route_chooser_title_for_remote_display" msgid="3105906508794326446">"Transmitir ecrã para o dispositivo"</string> + <string name="media_route_chooser_title_for_remote_display" msgid="3105906508794326446">"Transmitir ecrã para dispositivo"</string> <string name="media_route_chooser_searching" msgid="6119673534251329535">"A pesquisar dispositivos…"</string> <string name="media_route_chooser_extended_settings" msgid="2506352159381327741">"Definições"</string> <string name="media_route_controller_disconnect" msgid="7362617572732576959">"Desligar"</string> @@ -1692,11 +1692,11 @@ <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"DESATIVADO"</string> <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permitir que o serviço <xliff:g id="SERVICE">%1$s</xliff:g> tenha controlo total sobre o seu dispositivo?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se ativar o serviço <xliff:g id="SERVICE">%1$s</xliff:g>, o dispositivo não utilizará o bloqueio de ecrã para otimizar a encriptação de dados."</string> - <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controlo total é adequado para aplicações que ajudam nas necessidades de acessibilidade, mas não para a maioria das aplicações."</string> + <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controlo total é adequado para aplicações que ajudam nas necessidades de acessibilidade, mas não para a maioria das apps."</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ver e controlar o ecrã"</string> <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Pode ler todo o conteúdo do ecrã e sobrepor conteúdo a outras aplicações."</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Veja e execute ações"</string> - <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pode monitorizar as suas interações com uma app ou um sensor de hardware e interagir com aplicações em seu nome."</string> + <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pode monitorizar as suas interações com uma app ou um sensor de hardware e interagir com apps em seu nome."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Recusar"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toque numa funcionalidade para começar a utilizá-la:"</string> @@ -1709,7 +1709,7 @@ <string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar atalho"</string> <string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string> <string name="color_correction_feature_name" msgid="3655077237805422597">"Correção da cor"</string> - <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Escurecimento extra"</string> + <string name="reduce_bright_colors_feature_name" msgid="3222994553174604132">"Mais escuro"</string> <string name="accessibility_shortcut_enabling_service" msgid="5473495203759847687">"Teclas do volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> ativado."</string> <string name="accessibility_shortcut_disabling_service" msgid="8675244165062700619">"Teclas de volume premidas. Serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g> desativado."</string> <string name="accessibility_shortcut_spoken_feedback" msgid="4228997042855695090">"Prima sem soltar as teclas de volume durante três segundos para utilizar o serviço <xliff:g id="SERVICE_NAME">%1$s</xliff:g>."</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index d54829a240f8..e6b7ff668057 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -1960,8 +1960,7 @@ <string name="close_button_text" msgid="10603510034455258">"Închideți"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Răspundeți"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Respingeți"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Încheiați"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Apel primit"</string> @@ -2309,5 +2308,5 @@ <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Pictograma aplicației"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Imaginea de branding a aplicației"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"Verificați setările pentru acces"</string> - <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> poată să vadă și să vă controleze ecranul. Atingeți pentru a examina."</string> + <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> poate să vadă și să vă controleze ecranul. Atingeți pentru a examina."</string> </resources> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index 78324f64b3b0..09f839d2d19e 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -1738,9 +1738,9 @@ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Если включить сервис \"<xliff:g id="SERVICE">%1$s</xliff:g>\", устройство не будет использовать блокировку экрана для защиты данных."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Полный контроль нужен приложениям для реализации специальных возможностей и не нужен большинству остальных."</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Просмотр и контроль экрана"</string> - <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Сервис может читать весь контент на экране и отображать контент поверх других приложений."</string> + <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Сервис может просматривать весь контент на экране и отображать контент поверх других приложений"</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Просмотр и выполнение действий"</string> - <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Сервис может отслеживать ваше взаимодействие с приложением или датчиками устройства и давать приложениям команды от вашего имени."</string> + <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Сервис может отслеживать ваше взаимодействие с приложениями и датчиками устройства и давать приложениям команды от вашего имени"</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Разрешить"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Отклонить"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Выберите, какую функцию использовать:"</string> @@ -1991,8 +1991,7 @@ <string name="close_button_text" msgid="10603510034455258">"Закрыть"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Ответить"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видео"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Отклонить"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Завершить"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Входящий вызов"</string> @@ -2343,5 +2342,5 @@ <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Значок приложения"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Образ бренда приложения"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"Проверьте настройки доступа"</string> - <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> может просматривать информацию на вашем экране и управлять им. Нажмите, чтобы узнать подробности."</string> + <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> просматривать и контролировать то, что отображается на вашем экране. Нажмите здесь, чтобы узнать больше."</string> </resources> diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index 35f125c9a81a..c0577d68ab97 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"වසන්න"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"පිළිතුරු දෙ."</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"වීඩියෝ"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"ප්රතික්ෂේප ක"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"විසන්ධි කරන්න"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"එන ඇමතුම"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 806e5a01516c..5c9ddf7bf7a7 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -2341,6 +2341,6 @@ <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Ochrana súkromia senzorov"</string> <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ikona aplikácie"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Imidž značky aplikácie"</string> - <string name="view_and_control_notification_title" msgid="4300765399209912240">"Skontrolujte nastavenia prístupu"</string> + <string name="view_and_control_notification_title" msgid="4300765399209912240">"Kontrola nastavení prístupu"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> môže zobraziť a ovládať vašu obrazovku. Skontrolujte to klepnutím."</string> </resources> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index b5a73ee6ecf4..e98d0ae2ce6a 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -1991,8 +1991,7 @@ <string name="close_button_text" msgid="10603510034455258">"Zapri"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Sprejmi"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Zavrni"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Prekini klic"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Dohodni klic"</string> diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index 30bcbaff7dd6..30e13a4ebfe3 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Mbyll"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Përgjigju"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Refuzo"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Mbyll"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Telefonatë hyrëse"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index 18d2b991525c..96fa82de9a4b 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -1960,8 +1960,7 @@ <string name="close_button_text" msgid="10603510034455258">"Затвори"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Одговори"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Видео"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Одбиј"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Прекини везу"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Долазни позив"</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index b9efba09ac7d..0ddf34d86bca 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -1854,7 +1854,7 @@ <string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string> <string name="battery_saver_description_with_learn_more" msgid="7963058670863485450">"I batterisparläget aktiveras mörkt tema och bakgrundsaktivitet som vissa visuella effekter och funktioner som ”Hey Google” begränsas eller inaktiveras\n\n"<annotation id="url">"Läs mer"</annotation></string> <string name="battery_saver_description" msgid="7695751399533397741">"I batterisparläget aktiveras mörkt tema och bakgrundsaktivitet som vissa visuella effekter och funktioner som ”Hey Google” begränsas eller inaktiveras."</string> - <string name="data_saver_description" msgid="4995164271550590517">"Med databesparing kan du minska dataanvändningen genom att hindra en del appar från att skicka eller ta emot data i bakgrunden. Appar som du använder kan komma åt data, men det sker kanske inte lika ofta. Detta innebär t.ex. att bilder inte visas förrän du trycker på dem."</string> + <string name="data_saver_description" msgid="4995164271550590517">"Med Databesparing kan du minska dataanvändningen genom att hindra en del appar från att skicka eller ta emot data i bakgrunden. Appar som du använder kan komma åt data, men det sker kanske inte lika ofta. Detta innebär t.ex. att bilder inte visas förrän du trycker på dem."</string> <string name="data_saver_enable_title" msgid="7080620065745260137">"Vill du aktivera Databesparing?"</string> <string name="data_saver_enable_button" msgid="4399405762586419726">"Aktivera"</string> <plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273"> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Stäng"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Svara"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Avvisa"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Lägg på"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Inkommande samtal"</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 46944ab8156b..ea069e191f75 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Funga"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Jibu"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Kataa"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Kata simu"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Simu uliyopigiwa"</string> diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index 0b989c503cae..962b9a3727bd 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -307,7 +307,7 @@ <string name="permgroupdesc_contacts" msgid="9163927941244182567">"தொடர்புகளை அணுக வேண்டும்"</string> <string name="permgrouplab_location" msgid="1858277002233964394">"இருப்பிடம்"</string> <string name="permgroupdesc_location" msgid="1995955142118450685">"இந்தச் சாதனத்தின் இருப்பிடத்தை அறிந்து கொள்ள"</string> - <string name="permgrouplab_calendar" msgid="6426860926123033230">"Calendar"</string> + <string name="permgrouplab_calendar" msgid="6426860926123033230">"கேலெண்டர்"</string> <string name="permgroupdesc_calendar" msgid="6762751063361489379">"கேலெண்டரை அணுகலாம்"</string> <string name="permgrouplab_sms" msgid="795737735126084874">"SMS"</string> <string name="permgroupdesc_sms" msgid="5726462398070064542">"SMS அனுப்பலாம், வந்த SMSகளைப் பார்க்கலாம்"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"மூடு"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"பதிலளி"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"வீடியோ"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"நிராகரி"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"துண்டி"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"உள்வரும் அழைப்பு"</string> diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index 1d53e3c262e9..f6d7133b7a6c 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -1366,7 +1366,7 @@ <string name="usb_unsupported_audio_accessory_title" msgid="2335775548086533065">"అనలాగ్ ఆడియో ఉపకరణం కనుగొనబడింది"</string> <string name="usb_unsupported_audio_accessory_message" msgid="1300168007129796621">"జోడించిన పరికరం ఈ ఫోన్కు అనుకూలంగా లేదు. మరింత తెలుసుకోవడానికి నొక్కండి."</string> <string name="adb_active_notification_title" msgid="408390247354560331">"USB డీబగ్గింగ్ కనెక్ట్ చేయబడింది"</string> - <string name="adb_active_notification_message" msgid="5617264033476778211">"USB డీబగ్గింగ్ను ఆఫ్ చేయడానికి నొక్కండి"</string> + <string name="adb_active_notification_message" msgid="5617264033476778211">"USB డీబగ్గింగ్ను ఆఫ్ చేయడానికి ట్యాప్ చేయండి"</string> <string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"డీబగ్గింగ్ని నిలిపివేయడానికి ఎంచుకోండి."</string> <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"వైర్లెస్ డీబగ్గింగ్ కనెక్ట్ చేయబడింది"</string> <string name="adbwifi_active_notification_message" msgid="930987922852867972">"వైర్లెస్ డీబగ్గింగ్ని ఆఫ్ చేయడానికి ట్యాప్ చేయండి"</string> @@ -1690,13 +1690,13 @@ <string name="accessibility_shortcut_off" msgid="3651336255403648739">"ఆన్ చేయకండి"</string> <string name="accessibility_shortcut_menu_item_status_on" msgid="6608392117189732543">"ఆన్"</string> <string name="accessibility_shortcut_menu_item_status_off" msgid="5531598275559472393">"ఆఫ్"</string> - <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>కి మీ పరికరంపై పూర్తి నియంత్రణను ఇవ్వాలనుకుంటున్నారా?"</string> + <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>కి మీ పరికరంపై పూర్తి కంట్రోల్ను ఇవ్వాలనుకుంటున్నారా?"</string> <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"మీరు <xliff:g id="SERVICE">%1$s</xliff:g>ని ఆన్ చేస్తే, డేటా ఎన్క్రిప్షన్ను మెరుగుపరచడానికి మీ పరికరం మీ స్క్రీన్ లాక్ను ఉపయోగించదు."</string> - <string name="accessibility_service_warning_description" msgid="291674995220940133">"అవసరమైన యాక్సెస్ సామర్ధ్యం కోసం యాప్లకు పూర్తి నియంత్రణ ఇవ్వడం తగిన పనే అయినా, అన్ని యాప్లకు అలా ఇవ్వడం సరికాదు."</string> - <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"స్క్రీన్ను చూసి, నియంత్రించండి"</string> + <string name="accessibility_service_warning_description" msgid="291674995220940133">"అవసరమైన యాక్సెసిబిలిటీ కోసం యాప్లకు పూర్తి కంట్రోల్ ఇవ్వడం తగిన పనే అయినా, అన్ని యాప్లకు అలా ఇవ్వడం సరికాదు."</string> + <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"స్క్రీన్ను చూసి, కంట్రోల్ చేయడం"</string> <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"స్క్రీన్పై ఉండే కంటెంట్ మొత్తాన్ని చదవగలుగుతుంది మరియు ఇతర యాప్లలో కూడా ఈ కంటెంట్ను ప్రదర్శిస్తుంది."</string> <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"చర్యలను చూసి, అమలు చేయండి"</string> - <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"మీరు యాప్తో చేసే పరస్పర చర్యలను లేదా హార్డ్వేర్ సెన్సార్ను ట్రాక్ చేస్తూ మీ తరఫున యాప్లతో పరస్పరం సమన్వయం చేస్తుంది."</string> + <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"మీరు ఒక యాప్తో చేసే ఇంటరాక్షన్లను లేదా హార్డ్వేర్ సెన్సార్ను ట్రాక్ చేస్తూ మీ తరఫున యాప్లతో ఇంటరాక్ట్ చేయగలదు."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"అనుమతించు"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"నిరాకరించు"</string> <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ఫీచర్ని ఉపయోగించడం ప్రారంభించడానికి, దాన్ని ట్యాప్ చేయండి:"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"మూసివేయి"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"సమాధానం ఇవ్వు"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"వీడియో కాల్"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"తిరస్కరించండి"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"కాల్ ముగించు"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"ఇన్కమింగ్ కాల్"</string> @@ -2275,5 +2274,5 @@ <string name="splash_screen_view_icon_description" msgid="180638751260598187">"యాప్ చిహ్నం"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"యాప్ బ్రాండింగ్ ఇమేజ్"</string> <string name="view_and_control_notification_title" msgid="4300765399209912240">"యాక్సెస్ సెట్టింగ్లను చెక్ చేయండి"</string> - <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> మీ స్క్రీన్ను చూడవచ్చు, నియంత్రించవచ్చు. రివ్యూ చేయడానికి ట్యాప్ చేయండి."</string> + <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> మీ స్క్రీన్ను చూడవచ్చు, కంట్రోల్ చేయవచ్చు. రివ్యూ చేయడానికి ట్యాప్ చేయండి."</string> </resources> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index e0001c2c7229..db3876548c96 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"ปิด"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"รับสาย"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"วิดีโอ"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"ปฏิเสธ"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"วางสาย"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"สายเรียกเข้า"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index 0860d6ff989f..adaa774d8786 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Isara"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Sagutin"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Tanggihan"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Ibaba"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Papasok na tawag"</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 9d12acca668e..bd8532207d88 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -1694,8 +1694,8 @@ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> hizmetini açarsanız cihazınız veri şifrelemeyi geliştirmek için ekran kilidinizi kullanmaz."</string> <string name="accessibility_service_warning_description" msgid="291674995220940133">"Erişebilirlik ihtiyaçlarınıza yardımcı olan uygulamalara tam kontrol verilmesi uygundur ancak diğer pek çok uygulama için uygun değildir."</string> <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ekranı görüntüleme ve kontrol etme"</string> - <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Ekrandaki tüm içeriği okuyabilir ve içeriği diğer uygulamaların üzerinde gösterebilir"</string> - <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"İşlemleri görüntüleyin ve gerçekleştirin"</string> + <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Ekrandaki tüm içeriği okuyabilir ve içeriği diğer uygulamaların üzerinde gösterebilir."</string> + <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"İşlemleri görüntüleme ve gerçekleştirme"</string> <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Bir uygulama veya donanım sensörüyle etkileşimlerinizi takip edebilir ve sizin adınıza uygulamalarla etkileşimde bulunabilir."</string> <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"İzin ver"</string> <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Reddet"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Kapat"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Yanıtla"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Reddet"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Kapat"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Gelen çağrı"</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index 9401d500c2f5..b95aa88ba674 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -1991,8 +1991,7 @@ <string name="close_button_text" msgid="10603510034455258">"Закрити"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Відповісти"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Відео"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Відхилити"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Завершити"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Вхідний виклик"</string> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index 3b135ec1e209..012f31eba20c 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Yopish"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Javob berish"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Rad etish"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Tugatish"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Kiruvchi chaqiruv"</string> @@ -2274,6 +2273,6 @@ <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Sensorlar maxfiyligi"</string> <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Ilova belgisi"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Ilova brendining rasmi"</string> - <string name="view_and_control_notification_title" msgid="4300765399209912240">"Kirish sozlamalarini tekshiring"</string> + <string name="view_and_control_notification_title" msgid="4300765399209912240">"Ruxsat sozlamalarini tekshiring"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ekraningizni koʻrishi va boshqarishi mumkin. Tekshirish uchun bosing."</string> </resources> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index c0349c0c99b1..7a949b755354 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Đóng"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Trả lời"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Video"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Từ chối"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Kết thúc"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Cuộc gọi đến"</string> @@ -2263,7 +2262,7 @@ <string name="config_pdp_reject_user_authentication_failed" msgid="4531693033885744689"></string> <string name="config_pdp_reject_service_not_subscribed" msgid="8190338397128671588"></string> <string name="config_pdp_reject_multi_conn_to_same_pdn_not_allowed" msgid="6024904218067254186"></string> - <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Chế độ cài đặt phóng to mới"</string> + <string name="window_magnification_prompt_title" msgid="2876703640772778215">"Chế độ phóng to mới"</string> <string name="window_magnification_prompt_content" msgid="8159173903032344891">"Giờ đây, bạn có thể phóng to một phần màn hình"</string> <string name="turn_on_magnification_settings_action" msgid="8521433346684847700">"Bật trong phần Cài đặt"</string> <string name="dismiss_action" msgid="1728820550388704784">"Đóng"</string> @@ -2274,6 +2273,6 @@ <string name="sensor_privacy_notification_channel_label" msgid="936036783155261349">"Quyền riêng tư khi sử dụng cảm biến"</string> <string name="splash_screen_view_icon_description" msgid="180638751260598187">"Biểu tượng ứng dụng"</string> <string name="splash_screen_view_branding_description" msgid="7911129347402728216">"Hình ảnh thương hiệu của ứng dụng"</string> - <string name="view_and_control_notification_title" msgid="4300765399209912240">"Kiểm tra chế độ cài đặt quyền truy cập"</string> + <string name="view_and_control_notification_title" msgid="4300765399209912240">"Hãy kiểm tra chế độ cài đặt quyền truy cập"</string> <string name="view_and_control_notification_content" msgid="8003766498562604034">"<xliff:g id="SERVICE_NAME">%s</xliff:g> có thể xem và điều khiển màn hình của bạn. Nhấn để xem lại."</string> </resources> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 1d4ee440c9e0..d7f316577e5f 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"关闭"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>:<xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"接听"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"视频通话"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"拒接"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"挂断"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"来电"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index 2b16bdaaf2c6..858c179ceb25 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -311,7 +311,7 @@ <string name="permgroupdesc_calendar" msgid="6762751063361489379">"存取您的日曆"</string> <string name="permgrouplab_sms" msgid="795737735126084874">"短訊"</string> <string name="permgroupdesc_sms" msgid="5726462398070064542">"傳送和查看短訊"</string> - <string name="permgrouplab_storage" msgid="1938416135375282333">"檔案及媒體"</string> + <string name="permgrouplab_storage" msgid="1938416135375282333">"檔案和媒體"</string> <string name="permgroupdesc_storage" msgid="6351503740613026600">"存取裝置上的相片、媒體和檔案"</string> <string name="permgrouplab_microphone" msgid="2480597427667420076">"麥克風"</string> <string name="permgroupdesc_microphone" msgid="1047786732792487722">"錄音"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"關閉"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>:<xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"接聽"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"視像"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"拒接"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"掛斷"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"來電"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index 60cfa7e2484a..8770db7b02c6 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -315,7 +315,7 @@ <string name="permgroupdesc_storage" msgid="6351503740613026600">"存取裝置中的相片、媒體和檔案"</string> <string name="permgrouplab_microphone" msgid="2480597427667420076">"麥克風"</string> <string name="permgroupdesc_microphone" msgid="1047786732792487722">"錄音"</string> - <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"體能活動記錄"</string> + <string name="permgrouplab_activityRecognition" msgid="3324466667921775766">"體能活動"</string> <string name="permgroupdesc_activityRecognition" msgid="4725624819457670704">"存取你的體能活動記錄"</string> <string name="permgrouplab_camera" msgid="9090413408963547706">"相機"</string> <string name="permgroupdesc_camera" msgid="7585150538459320326">"拍照及錄製影片"</string> @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"關閉"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>:<xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"接聽"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"視訊"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"拒接"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"掛斷"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"來電"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index bf476f179d0f..e2a52f170fd7 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -1929,8 +1929,7 @@ <string name="close_button_text" msgid="10603510034455258">"Vala"</string> <string name="notification_messaging_title_template" msgid="772857526770251989">"<xliff:g id="CONVERSATION_TITLE">%1$s</xliff:g>: <xliff:g id="SENDER_NAME">%2$s</xliff:g>"</string> <string name="call_notification_answer_action" msgid="5999246836247132937">"Phendula"</string> - <!-- no translation found for call_notification_answer_video_action (2086030940195382249) --> - <skip /> + <string name="call_notification_answer_video_action" msgid="2086030940195382249">"Ividiyo"</string> <string name="call_notification_decline_action" msgid="3700345945214000726">"Yenqaba"</string> <string name="call_notification_hang_up_action" msgid="9130720590159188131">"Vala Ucingo"</string> <string name="call_notification_incoming_text" msgid="6143109825406638201">"Ikholi engenayo"</string> diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml index bd1d84811d4f..f097009f9a6e 100644 --- a/core/res/res/values/attrs.xml +++ b/core/res/res/values/attrs.xml @@ -1176,6 +1176,9 @@ <!-- Alternative color applied to surfaces on top of colorBackground. @hide --> <attr name="colorSurfaceHeader" format="color" /> + <!-- Color applied to effects. --> + <attr name="effectColor" format="color" /> + <!-- The type of the edge effect. The default is glow. --> <attr name="edgeEffectType"> <!-- Use a colored glow at the edge. --> @@ -6540,13 +6543,8 @@ <!-- The radius of the ripple when fully expanded. By default, the radius is computed based on the size of the ripple's container. --> <attr name="radius" /> - <!-- The style of the ripple drawable is solid by default --> - <attr name="rippleStyle"> - <!-- Solid is the default style --> - <enum name="solid" value="0" /> - <!-- Patterned style--> - <enum name="patterned" value="1" /> - </attr> + <!-- Secondary color of the ripple effect. --> + <attr name="effectColor" /> </declare-styleable> <declare-styleable name="ScaleDrawable"> @@ -9577,7 +9575,7 @@ <!-- Perceptual luminance of a color, in accessibility friendly color space. From 0 to 100. --> <attr name="lStar" format="float"/> - <declare-styleable name="DisplayHasherService"> + <declare-styleable name="DisplayHashingService"> <!-- The throttle duration for display hash requests @hide @SystemApi --> <attr name="throttleDurationMillis" format="integer" /> diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml index 588ae79cda1d..3b155dec5693 100644 --- a/core/res/res/values/attrs_manifest.xml +++ b/core/res/res/values/attrs_manifest.xml @@ -1880,6 +1880,9 @@ apps due to inconsistencies in MediaStore collection and lower file system. When the flag is set, app should scan the file after file path operations to ensure consistency of MediaStore collection. + <p> The flag can be set to false if the app doesn't do many bulk file path operations or if + app prefers the system to ensure the consistency of the MediaStore collection for file path + operations without scanning the file. <p> The default value is {@code true} if <ul> diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml index 3ad20c603115..0213c60e9f60 100644 --- a/core/res/res/values/colors.xml +++ b/core/res/res/values/colors.xml @@ -231,8 +231,7 @@ <color name="chooser_gradient_background">@color/loading_gradient_background_color_light</color> <color name="chooser_gradient_highlight">@color/loading_gradient_highlight_color_light</color> - <color name="GM2_grey_700">#5F6368</color> - <color name="GM2_grey_800">#3C4043</color> + <color name="GM2_grey_800">#ff3C4043</color> <!-- Resolver/Chooser --> <color name="resolver_text_color_secondary_dark">#ffC4C6C6</color> diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml index f24d663ced16..c2a7e079b1f9 100644 --- a/core/res/res/values/config.xml +++ b/core/res/res/values/config.xml @@ -59,6 +59,7 @@ <item><xliff:g id="id">@string/status_bar_mobile</xliff:g></item> <item><xliff:g id="id">@string/status_bar_airplane</xliff:g></item> <item><xliff:g id="id">@string/status_bar_no_calling</xliff:g></item> + <item><xliff:g id="id">@string/status_bar_call_strength</xliff:g></item> <item><xliff:g id="id">@string/status_bar_battery</xliff:g></item> <item><xliff:g id="id">@string/status_bar_sensors_off</xliff:g></item> </string-array> @@ -96,6 +97,7 @@ <string translatable="false" name="status_bar_camera">camera</string> <string translatable="false" name="status_bar_airplane">airplane</string> <string translatable="false" name="status_bar_no_calling">no_calling</string> + <string translatable="false" name="status_bar_call_strength">call_strength</string> <string translatable="false" name="status_bar_sensors_off">sensors_off</string> <string translatable="false" name="status_bar_screen_record">screen_record</string> @@ -1949,6 +1951,8 @@ <string name="config_systemTelevisionNotificationHandler" translatable="false"></string> <!-- The name of the package that will hold the system activity recognizer role. --> <string name="config_systemActivityRecognizer" translatable="false"></string> + <!-- The name of the package that will hold the system ui role --> + <string name="config_systemUi" translatable="false">com.android.systemui</string> <!-- The name of the package that will be allowed to change its components' label/icon. --> <string name="config_overrideComponentUiPackage" translatable="false">com.android.stk</string> diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml index 062b0809c247..43c0ec979281 100644 --- a/core/res/res/values/dimens.xml +++ b/core/res/res/values/dimens.xml @@ -242,6 +242,9 @@ this = conversation_content_start (80dp) - button inset (4dp) - action padding (12dp) --> <dimen name="call_notification_collapsible_indent">64dp</dimen> + <!-- The minimum width of the system actions added to the CallStyle notifications. --> + <dimen name="call_notification_system_action_min_width">100dp</dimen> + <!-- The size of icons for visual actions in the notification_material_action_list --> <dimen name="notification_actions_icon_size">56dp</dimen> @@ -570,12 +573,6 @@ <!-- Width of the outline stroke used by the accessibility focus rectangle --> <dimen name="accessibility_focus_highlight_stroke_width">4dp</dimen> - <!-- The size of the Accessibility icon --> - <dimen name="accessibility_icon_size">32dp</dimen> - - <!-- The size of the Accessibility icon foreground part --> - <dimen name="accessibility_icon_foreground_size">18dp</dimen> - <!-- Margin around the various security views --> <dimen name="keyguard_muliuser_selector_margin">8dp</dimen> diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml index f6a67d2ae710..c71600074217 100644 --- a/core/res/res/values/public.xml +++ b/core/res/res/values/public.xml @@ -3099,6 +3099,7 @@ <!-- @hide @SystemApi --> <public name="throttleDurationMillis" /> <public name="showInInputMethodPicker" /> + <public name="effectColor" /> </staging-public-group> <staging-public-group type="drawable" first-id="0x010800b5"> @@ -3227,6 +3228,8 @@ <public name="config_systemActivityRecognizer" /> <!-- @hide @SystemApi --> <public name="config_systemCompanionDeviceProvider"/> + <!-- @hide @SystemApi --> + <public name="config_systemUi" /> </staging-public-group> <staging-public-group type="id" first-id="0x01020055"> diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 60383be30dbd..cfde7a1750c2 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -2979,6 +2979,7 @@ <java-symbol type="string" name="status_bar_clock" /> <java-symbol type="string" name="status_bar_airplane" /> <java-symbol type="string" name="status_bar_no_calling" /> + <java-symbol type="string" name="status_bar_call_strength" /> <java-symbol type="string" name="status_bar_mobile" /> <java-symbol type="string" name="status_bar_ethernet" /> <java-symbol type="string" name="status_bar_vpn" /> @@ -3126,6 +3127,7 @@ <java-symbol type="color" name="call_notification_decline_color"/> <java-symbol type="color" name="call_notification_answer_color"/> <java-symbol type="dimen" name="call_notification_collapsible_indent"/> + <java-symbol type="dimen" name="call_notification_system_action_min_width"/> <java-symbol type="drawable" name="ic_call_answer" /> <java-symbol type="drawable" name="ic_call_answer_video" /> <java-symbol type="drawable" name="ic_call_decline" /> @@ -3389,7 +3391,6 @@ <java-symbol type="drawable" name="ic_accessibility_color_inversion" /> <java-symbol type="drawable" name="ic_accessibility_color_correction" /> <java-symbol type="drawable" name="ic_accessibility_magnification" /> - <java-symbol type="drawable" name="ic_accessibility_reduce_bright_colors" /> <java-symbol type="string" name="reduce_bright_colors_feature_name" /> diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml index 1d4beae8cc58..41bedb2ed43c 100644 --- a/core/res/res/values/themes_device_defaults.xml +++ b/core/res/res/values/themes_device_defaults.xml @@ -234,9 +234,6 @@ easier. <item name="textColorTertiary">@color/text_color_tertiary_device_default_dark</item> <item name="colorForeground">@color/foreground_device_default_dark</item> <item name="colorForegroundInverse">@color/foreground_device_default_light</item> - - <!-- Ripple style--> - <item name="rippleStyle">solid</item> </style> <style name="Theme.DeviceDefault" parent="Theme.DeviceDefaultBase" /> diff --git a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java index 4dbdc606497e..281ce2bd3ab6 100644 --- a/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java +++ b/core/tests/coretests/src/android/app/servertransaction/TransactionParcelTests.java @@ -693,7 +693,7 @@ public class TransactionParcelTests { @Override public void updateUiTranslationState(IBinder activityToken, int state, - TranslationSpec sourceSpec, TranslationSpec destSpec, List<AutofillId> viewIds) { + TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds) { } } diff --git a/core/tests/coretests/src/android/view/ViewGroupScrollCaptureTest.java b/core/tests/coretests/src/android/view/ViewGroupScrollCaptureTest.java index 2833ea3f9ac0..25608c328f95 100644 --- a/core/tests/coretests/src/android/view/ViewGroupScrollCaptureTest.java +++ b/core/tests/coretests/src/android/view/ViewGroupScrollCaptureTest.java @@ -33,7 +33,6 @@ import android.os.CancellationSignal; import android.platform.test.annotations.Presubmit; import androidx.annotation.NonNull; -import androidx.test.filters.FlakyTest; import androidx.test.filters.MediumTest; import androidx.test.filters.SmallTest; @@ -92,6 +91,18 @@ public class ViewGroupScrollCaptureTest { viewGroup.getScrollCaptureHint()); } + /** Make sure the hint flags are saved and loaded correctly. */ + @Test + public void testSetScrollCaptureHint_mutuallyExclusiveFlags() throws Exception { + final Context context = getInstrumentation().getContext(); + final MockViewGroup viewGroup = new MockViewGroup(context); + + viewGroup.setScrollCaptureHint( + View.SCROLL_CAPTURE_HINT_INCLUDE | View.SCROLL_CAPTURE_HINT_EXCLUDE); + assertEquals("Mutually exclusive flags were not resolved correctly", + ViewGroup.SCROLL_CAPTURE_HINT_EXCLUDE, viewGroup.getScrollCaptureHint()); + } + /** * Ensure a ViewGroup with 'scrollCaptureHint=auto', but no ScrollCaptureCallback set dispatches * correctly. Verifies that the framework helper is called. Verifies a that non-null callback @@ -343,6 +354,54 @@ public class ViewGroupScrollCaptureTest { target.getContainingView().getScrollCaptureHint()); } + /** + * Tests the effect of padding on scroll capture search dispatch. + * <p> + * Verifies computation of child visible bounds with padding. + */ + @MediumTest + @Test + public void testOnScrollCaptureSearch_withPadding() { + final Context context = getInstrumentation().getContext(); + + Rect windowBounds = new Rect(0, 0, 200, 200); + Point windowOffset = new Point(0, 0); + + final MockViewGroup parent = new MockViewGroup(context, 0, 0, 200, 200); + parent.setPadding(25, 50, 25, 50); + parent.setClipToPadding(true); // (default) + + final MockView view1 = new MockView(context, 0, -100, 200, 100); + parent.addView(view1); + + final MockView view2 = new MockView(context, 0, 0, 200, 200); + parent.addView(view2); + + final MockViewGroup view3 = new MockViewGroup(context, 0, 100, 200, 300); + parent.addView(view3); + view3.setPadding(25, 25, 25, 25); + view3.setClipToPadding(true); + + // Where targets are added + final ScrollCaptureSearchResults results = new ScrollCaptureSearchResults(DIRECT_EXECUTOR); + + // Dispatch to the ViewGroup + parent.dispatchScrollCaptureSearch(windowBounds, windowOffset, results::addTarget); + + // Verify padding (with clipToPadding) is subtracted from visibleBounds + parent.assertOnScrollCaptureSearchLastArgs(new Rect(25, 50, 175, 150), new Point(0, 0)); + + view1.assertOnScrollCaptureSearchLastArgs( + new Rect(25, 150, 175, 200), new Point(0, -100)); + + view2.assertOnScrollCaptureSearchLastArgs( + new Rect(25, 50, 175, 150), new Point(0, 0)); + + // Account for padding on view3 as well (top == 25px) + view3.assertOnScrollCaptureSearchLastArgs( + new Rect(25, 25, 175, 50), new Point(0, 100)); + } + public static final class MockView extends View { private ScrollCaptureCallback mInternalCallback; @@ -350,6 +409,8 @@ public class ViewGroupScrollCaptureTest { private Rect mDispatchScrollCaptureSearchLastLocalVisibleRect; private Point mDispatchScrollCaptureSearchLastWindowOffset; private int mCreateScrollCaptureCallbackInternalCount; + private Rect mOnScrollCaptureSearchLastLocalVisibleRect; + private Point mOnScrollCaptureSearchLastWindowOffset; MockView(Context context) { this(context, /* left */ 0, /* top */0, /* right */ 0, /* bottom */0); @@ -395,6 +456,21 @@ public class ViewGroupScrollCaptureTest { } @Override + public void onScrollCaptureSearch(Rect localVisibleRect, Point windowOffset, + Consumer<ScrollCaptureTarget> targets) { + super.onScrollCaptureSearch(localVisibleRect, windowOffset, targets); + mOnScrollCaptureSearchLastLocalVisibleRect = new Rect(localVisibleRect); + mOnScrollCaptureSearchLastWindowOffset = new Point(windowOffset); + } + + void assertOnScrollCaptureSearchLastArgs(Rect localVisibleRect, Point windowOffset) { + assertEquals("arg localVisibleRect was incorrect.", + localVisibleRect, mOnScrollCaptureSearchLastLocalVisibleRect); + assertEquals("arg windowOffset was incorrect.", + windowOffset, mOnScrollCaptureSearchLastWindowOffset); + } + + @Override public void dispatchScrollCaptureSearch(Rect localVisibleRect, Point windowOffset, Consumer<ScrollCaptureTarget> results) { mDispatchScrollCaptureSearchNumCalls++; @@ -437,6 +513,8 @@ public class ViewGroupScrollCaptureTest { public static final class MockViewGroup extends ViewGroup { private ScrollCaptureCallback mInternalCallback; + private Rect mOnScrollCaptureSearchLastLocalVisibleRect; + private Point mOnScrollCaptureSearchLastWindowOffset; MockViewGroup(Context context) { this(context, /* left */ 0, /* top */0, /* right */ 0, /* bottom */0); @@ -465,6 +543,21 @@ public class ViewGroupScrollCaptureTest { } @Override + public void onScrollCaptureSearch(Rect localVisibleRect, Point windowOffset, + Consumer<ScrollCaptureTarget> targets) { + super.onScrollCaptureSearch(localVisibleRect, windowOffset, targets); + mOnScrollCaptureSearchLastLocalVisibleRect = new Rect(localVisibleRect); + mOnScrollCaptureSearchLastWindowOffset = new Point(windowOffset); + } + + void assertOnScrollCaptureSearchLastArgs(Rect localVisibleRect, Point windowOffset) { + assertEquals("arg localVisibleRect was incorrect.", + localVisibleRect, mOnScrollCaptureSearchLastLocalVisibleRect); + assertEquals("arg windowOffset was incorrect.", + windowOffset, mOnScrollCaptureSearchLastWindowOffset); + } + + @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { // We don't layout this view. } diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java index 3a6f7b8a1618..e0739be1b295 100644 --- a/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java +++ b/core/tests/coretests/src/com/android/internal/os/BatteryUsageStatsRule.java @@ -167,7 +167,7 @@ public class BatteryUsageStatsRule implements TestRule { } BatteryUsageStats apply(BatteryUsageStatsQuery query, PowerCalculator... calculators) { - final String[] customPowerComponentNames = mBatteryStats.getCustomPowerComponentNames(); + final String[] customPowerComponentNames = mBatteryStats.getCustomEnergyConsumerNames(); final boolean includePowerModels = (query.getFlags() & BatteryUsageStatsQuery.FLAG_BATTERY_USAGE_STATS_INCLUDE_POWER_MODELS) != 0; BatteryUsageStats.Builder builder = new BatteryUsageStats.Builder( diff --git a/core/tests/uwbtests/src/android/uwb/RangingManagerTest.java b/core/tests/uwbtests/src/android/uwb/RangingManagerTest.java index 5de6d4208baf..24267e46e9e2 100644 --- a/core/tests/uwbtests/src/android/uwb/RangingManagerTest.java +++ b/core/tests/uwbtests/src/android/uwb/RangingManagerTest.java @@ -57,7 +57,8 @@ public class RangingManagerTest { RangingManager rangingManager = new RangingManager(adapter); RangingSession.Callback callback = mock(RangingSession.Callback.class); rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback); - verify(adapter, times(1)).openRanging(any(), eq(rangingManager), eq(PARAMS)); + verify(adapter, times(1)).openRanging( + eq(ATTRIBUTION_SOURCE), any(), any(), any()); } @Test @@ -80,11 +81,13 @@ public class RangingManagerTest { RangingManager rangingManager = new RangingManager(adapter); rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback1); - verify(adapter, times(1)).openRanging(sessionHandleCaptor.capture(), any(), any()); + verify(adapter, times(1)).openRanging( + eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any()); SessionHandle sessionHandle1 = sessionHandleCaptor.getValue(); rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback2); - verify(adapter, times(2)).openRanging(sessionHandleCaptor.capture(), any(), any()); + verify(adapter, times(2)).openRanging( + eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any()); SessionHandle sessionHandle2 = sessionHandleCaptor.getValue(); rangingManager.onRangingOpened(sessionHandle1); @@ -106,7 +109,8 @@ public class RangingManagerTest { ArgumentCaptor.forClass(SessionHandle.class); rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback); - verify(adapter, times(1)).openRanging(sessionHandleCaptor.capture(), any(), any()); + verify(adapter, times(1)).openRanging( + eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any()); SessionHandle handle = sessionHandleCaptor.getValue(); rangingManager.onRangingOpened(handle); @@ -151,11 +155,13 @@ public class RangingManagerTest { ArgumentCaptor.forClass(SessionHandle.class); rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback1); - verify(adapter, times(1)).openRanging(sessionHandleCaptor.capture(), any(), any()); + verify(adapter, times(1)).openRanging( + eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any()); SessionHandle sessionHandle1 = sessionHandleCaptor.getValue(); rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback2); - verify(adapter, times(2)).openRanging(sessionHandleCaptor.capture(), any(), any()); + verify(adapter, times(2)).openRanging( + eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any()); SessionHandle sessionHandle2 = sessionHandleCaptor.getValue(); rangingManager.onRangingClosed(sessionHandle1, REASON, PARAMS); @@ -178,12 +184,14 @@ public class RangingManagerTest { RangingManager rangingManager = new RangingManager(adapter); rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback1); - verify(adapter, times(1)).openRanging(sessionHandleCaptor.capture(), any(), any()); + verify(adapter, times(1)).openRanging( + eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any()); SessionHandle sessionHandle1 = sessionHandleCaptor.getValue(); rangingManager.onRangingStarted(sessionHandle1, PARAMS); rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback2); - verify(adapter, times(2)).openRanging(sessionHandleCaptor.capture(), any(), any()); + verify(adapter, times(2)).openRanging( + eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any()); SessionHandle sessionHandle2 = sessionHandleCaptor.getValue(); rangingManager.onRangingStarted(sessionHandle2, PARAMS); @@ -230,7 +238,8 @@ public class RangingManagerTest { ArgumentCaptor.forClass(SessionHandle.class); rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback); - verify(adapter, times(1)).openRanging(sessionHandleCaptor.capture(), any(), any()); + verify(adapter, times(1)).openRanging( + eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any()); SessionHandle handle = sessionHandleCaptor.getValue(); rangingManager.onRangingOpenFailed(handle, reasonIn, PARAMS); @@ -238,7 +247,8 @@ public class RangingManagerTest { // Open a new session rangingManager.openSession(ATTRIBUTION_SOURCE, PARAMS, EXECUTOR, callback); - verify(adapter, times(2)).openRanging(sessionHandleCaptor.capture(), any(), any()); + verify(adapter, times(2)).openRanging( + eq(ATTRIBUTION_SOURCE), sessionHandleCaptor.capture(), any(), any()); handle = sessionHandleCaptor.getValue(); rangingManager.onRangingOpened(handle); diff --git a/data/etc/car/com.android.car.shell.xml b/data/etc/car/com.android.car.shell.xml index ec903ad05b12..578c46ee1006 100644 --- a/data/etc/car/com.android.car.shell.xml +++ b/data/etc/car/com.android.car.shell.xml @@ -28,5 +28,9 @@ <permission name="android.car.permission.CONTROL_CAR_CLIMATE"/> <permission name="android.car.permission.CAR_TIRES"/> <permission name="android.car.permission.READ_CAR_STEERING"/> + <permission name="android.car.permission.REQUEST_CAR_EVS_ACTIVITY" /> + <permission name="android.car.permission.CONTROL_CAR_EVS_ACTIVITY" /> + <permission name="android.car.permission.USE_CAR_EVS_CAMERA" /> + <permission name="android.car.permission.MONITOR_CAR_EVS_STATUS" /> </privapp-permissions> </permissions> diff --git a/data/etc/car/com.google.android.car.kitchensink.xml b/data/etc/car/com.google.android.car.kitchensink.xml index e6196c296552..40dda6573ccc 100644 --- a/data/etc/car/com.google.android.car.kitchensink.xml +++ b/data/etc/car/com.google.android.car.kitchensink.xml @@ -87,5 +87,9 @@ <permission name="android.car.permission.STORAGE_MONITORING"/> <permission name="android.car.permission.VMS_PUBLISHER"/> <permission name="android.car.permission.VMS_SUBSCRIBER"/> + <permission name="android.car.permission.REQUEST_CAR_EVS_ACTIVITY" /> + <permission name="android.car.permission.CONTROL_CAR_EVS_ACTIVITY" /> + <permission name="android.car.permission.USE_CAR_EVS_CAMERA" /> + <permission name="android.car.permission.MONITOR_CAR_EVS_STATUS" /> </privapp-permissions> </permissions> diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml index 9f1d94366f43..2d5279f0b672 100644 --- a/data/etc/privapp-permissions-platform.xml +++ b/data/etc/privapp-permissions-platform.xml @@ -458,6 +458,7 @@ applications that come with the platform <permission name="android.permission.ACCESS_TV_TUNER" /> <permission name="android.permission.TUNER_RESOURCE_ACCESS" /> <!-- Permissions required for CTS test - TVInputManagerTest --> + <permission name="android.permission.ACCESS_TUNED_INFO" /> <permission name="android.permission.TV_INPUT_HARDWARE" /> <!-- Permission required for CTS test - PrivilegedLocationPermissionTest --> <permission name="android.permission.LOCATION_HARDWARE" /> @@ -508,7 +509,7 @@ applications that come with the platform <!-- Permission required for CTS test - CtsAlarmManagerTestCases --> <permission name="android.permission.SCHEDULE_PRIORITIZED_ALARM" /> <!-- Permission required for CTS test - SystemMediaRouter2Test --> - <permission name="android.permission.MODIFY_AUDIO_ROUTING"/> + <permission name="android.permission.MEDIA_CONTENT_CONTROL"/> <!-- Permission required for CTS test - CtsPermission5TestCases --> <permission name="android.permission.RENOUNCE_PERMISSIONS" /> <permission name="android.permission.WRITE_EMBEDDED_SUBSCRIPTIONS" /> @@ -519,7 +520,9 @@ applications that come with the platform <permission name="android.permission.CONFIGURE_DISPLAY_BRIGHTNESS" /> <permission name="android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER" /> <permission name="android.permission.SET_MEDIA_KEY_LISTENER" /> - <permission name="android.permission.SET_VOLUME_KEY_LONG_PRESS_LISTENER" /> + <permission name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" /> + <!-- Permission required for CTS test - CtsAlarmManagerTestCases --> + <permission name="android.permission.UPDATE_DEVICE_STATS" /> </privapp-permissions> <privapp-permissions package="com.android.statementservice"> diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json index 81f1021c6eab..7ed791d6ca71 100644 --- a/data/etc/services.core.protolog.json +++ b/data/etc/services.core.protolog.json @@ -1735,6 +1735,12 @@ "group": "WM_DEBUG_IME", "at": "com\/android\/server\/wm\/InsetsSourceProvider.java" }, + "-108977760": { + "message": "Sandbox max bounds for uid %s to bounds %s. config to never sandbox = %s, config to always sandbox = %s, letterboxing from mismatch with parent bounds = %s, has mCompatDisplayInsets = %s, should create compatDisplayInsets = %s", + "level": "DEBUG", + "group": "WM_DEBUG_CONFIGURATION", + "at": "com\/android\/server\/wm\/ActivityRecord.java" + }, "-106400104": { "message": "Preload recents with %s", "level": "DEBUG", @@ -2887,12 +2893,6 @@ "group": "WM_DEBUG_BOOT", "at": "com\/android\/server\/wm\/WindowManagerService.java" }, - "1237719089": { - "message": "Sandbox max bounds for uid %s to bounds %s. letterboxing from mismatch with parent bounds = %s, has mCompatDisplayInsets = %s, should create compatDisplayInsets = %s", - "level": "DEBUG", - "group": "WM_DEBUG_CONFIGURATION", - "at": "com\/android\/server\/wm\/ActivityRecord.java" - }, "1246035185": { "message": "stopFreezingDisplayLocked: Returning waitingForConfig=%b, waitingForRemoteRotation=%b, mAppsFreezingScreen=%d, mWindowsFreezingScreen=%d, mClientFreezingScreen=%b, mOpeningApps.size()=%d", "level": "DEBUG", diff --git a/graphics/java/android/graphics/drawable/RippleAnimationSession.java b/graphics/java/android/graphics/drawable/RippleAnimationSession.java index 1cd4cf115180..60f73b5e0090 100644 --- a/graphics/java/android/graphics/drawable/RippleAnimationSession.java +++ b/graphics/java/android/graphics/drawable/RippleAnimationSession.java @@ -39,7 +39,7 @@ import java.util.function.Consumer; public final class RippleAnimationSession { private static final String TAG = "RippleAnimationSession"; private static final int ENTER_ANIM_DURATION = 450; - private static final int EXIT_ANIM_DURATION = 300; + private static final int EXIT_ANIM_DURATION = 225; private static final long NOISE_ANIMATION_DURATION = 7000; private static final long MAX_NOISE_PHASE = NOISE_ANIMATION_DURATION / 120; private static final TimeInterpolator LINEAR_INTERPOLATOR = new LinearInterpolator(); diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java index c972a24fb04b..29fa09d40343 100644 --- a/graphics/java/android/graphics/drawable/RippleDrawable.java +++ b/graphics/java/android/graphics/drawable/RippleDrawable.java @@ -150,6 +150,7 @@ public class RippleDrawable extends LayerDrawable { /** The maximum number of ripples supported. */ private static final int MAX_RIPPLES = 10; private static final LinearInterpolator LINEAR_INTERPOLATOR = new LinearInterpolator(); + private static final int DEFAULT_EFFECT_COLOR = 0x80ffffff; /** Temporary flag for teamfood. **/ private static final boolean FORCE_PATTERNED_STYLE = true; @@ -465,12 +466,37 @@ public class RippleDrawable extends LayerDrawable { * * @attr ref android.R.styleable#RippleDrawable_color */ - public void setColor(ColorStateList color) { + public void setColor(@NonNull ColorStateList color) { + if (color == null) { + throw new IllegalArgumentException("color cannot be null"); + } mState.mColor = color; invalidateSelf(false); } /** + * Sets the ripple effect color. + * + * @param color Ripple color as a color state list. + * + * @attr ref android.R.styleable#RippleDrawable_effectColor + */ + public void setEffectColor(@NonNull ColorStateList color) { + if (color == null) { + throw new IllegalArgumentException("color cannot be null"); + } + mState.mEffectColor = color; + invalidateSelf(false); + } + + /** + * @return The ripple effect color as a color state list. + */ + public @NonNull ColorStateList getEffectColor() { + return mState.mEffectColor; + } + + /** * Sets the radius in pixels of the fully expanded ripple. * * @param radius ripple radius in pixels, or {@link #RADIUS_AUTO} to @@ -561,13 +587,14 @@ public class RippleDrawable extends LayerDrawable { mState.mColor = color; } + final ColorStateList effectColor = + a.getColorStateList(R.styleable.RippleDrawable_effectColor); + if (effectColor != null) { + mState.mEffectColor = effectColor; + } + mState.mMaxRadius = a.getDimensionPixelSize( R.styleable.RippleDrawable_radius, mState.mMaxRadius); - - if (!FORCE_PATTERNED_STYLE) { - mState.mRippleStyle = a.getInteger(R.styleable.RippleDrawable_rippleStyle, - mState.mRippleStyle); - } } private void verifyRequiredAttributes(@NonNull TypedArray a) throws XmlPullParserException { @@ -933,10 +960,11 @@ public class RippleDrawable extends LayerDrawable { float radius = getComputedRadius(); RippleAnimationSession.AnimationProperties<Float, Paint> properties; RippleShader shader = new RippleShader(); - int color = mMaskColorFilter == null + final int color = mMaskColorFilter == null ? mState.mColor.getColorForState(getState(), Color.BLACK) : mMaskColorFilter.getColor(); - shader.setColor(color); + final int effectColor = mState.mEffectColor.getColorForState(getState(), Color.MAGENTA); + shader.setColor(color, effectColor); shader.setOrigin(cx, cy); shader.setTouch(x, y); shader.setResolution(w, h, mState.mDensity); @@ -1257,33 +1285,6 @@ public class RippleDrawable extends LayerDrawable { return this; } - /** - * Sets the visual style of the ripple. - * - * @see #STYLE_SOLID - * @see #STYLE_PATTERNED - * - * @param style The style of the ripple - * @hide - */ - public void setRippleStyle(@RippleStyle int style) throws IllegalArgumentException { - if (style == STYLE_SOLID || style == STYLE_PATTERNED) { - mState.mRippleStyle = style; - } else { - throw new IllegalArgumentException("Invalid style value " + style); - } - } - - /** - * Get the current ripple style - * @return Ripple style - * @hide - */ - public @RippleStyle int getRippleStyle() { - return mState.mRippleStyle; - } - - @Override RippleState createConstantState(LayerState state, Resources res) { return new RippleState(state, this, res); @@ -1293,6 +1294,7 @@ public class RippleDrawable extends LayerDrawable { int[] mTouchThemeAttrs; @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.R, trackingBug = 170729553) ColorStateList mColor = ColorStateList.valueOf(Color.MAGENTA); + ColorStateList mEffectColor = ColorStateList.valueOf(DEFAULT_EFFECT_COLOR); int mMaxRadius = RADIUS_AUTO; int mRippleStyle = FORCE_PATTERNED_STYLE ? STYLE_PATTERNED : STYLE_SOLID; @@ -1305,6 +1307,7 @@ public class RippleDrawable extends LayerDrawable { mColor = origs.mColor; mMaxRadius = origs.mMaxRadius; mRippleStyle = origs.mRippleStyle; + mEffectColor = origs.mEffectColor; if (origs.mDensity != mDensity) { applyDensityScaling(orig.mDensity, mDensity); diff --git a/graphics/java/android/graphics/drawable/RippleShader.java b/graphics/java/android/graphics/drawable/RippleShader.java index c1c6afceadd9..e7c10819f679 100644 --- a/graphics/java/android/graphics/drawable/RippleShader.java +++ b/graphics/java/android/graphics/drawable/RippleShader.java @@ -39,6 +39,7 @@ final class RippleShader extends RuntimeShader { + "uniform vec2 in_tRotation2;\n" + "uniform vec2 in_tRotation3;\n" + "uniform vec4 in_color;\n" + + "uniform vec4 in_sparkleColor;\n" + "uniform shader in_shader;\n"; private static final String SHADER_LIB = "float triangleNoise(vec2 n) {\n" @@ -48,7 +49,6 @@ final class RippleShader extends RuntimeShader { + " return fract(xy * 95.4307) + fract(xy * 75.04961) - 1.0;\n" + "}" + "const float PI = 3.1415926535897932384626;\n" - + "const float SPARKLE_OPACITY = 0.75;\n" + "\n" + "float sparkles(vec2 uv, float t) {\n" + " float n = triangleNoise(uv);\n" @@ -60,7 +60,7 @@ final class RippleShader extends RuntimeShader { + " o *= abs(sin(PI * o * (t + 0.55 * i)));\n" + " s += o;\n" + " }\n" - + " return saturate(s) * SPARKLE_OPACITY;\n" + + " return saturate(s) * in_sparkleColor.a;\n" + "}\n" + "float softCircle(vec2 uv, vec2 xy, float radius, float blur) {\n" + " float blurHalf = blur * 0.5;\n" @@ -102,8 +102,8 @@ final class RippleShader extends RuntimeShader { private static final String SHADER_MAIN = "vec4 main(vec2 p) {\n" + " float fadeIn = subProgress(0., 0.1, in_progress);\n" + " float scaleIn = subProgress(0., 0.45, in_progress);\n" - + " float fadeOutNoise = subProgress(0.5, 1., in_progress);\n" - + " float fadeOutRipple = subProgress(0.5, 0.75, in_progress);\n" + + " float fadeOutNoise = subProgress(0.5, 0.95, in_progress);\n" + + " float fadeOutRipple = subProgress(0.5, 1., in_progress);\n" + " vec2 center = mix(in_touch, in_origin, scaleIn);\n" + " float ring = softRing(p, center, in_maxRadius, scaleIn, 0.45);\n" + " float alpha = min(fadeIn, 1. - fadeOutNoise);\n" @@ -116,7 +116,7 @@ final class RippleShader extends RuntimeShader { + " vec4 circle = in_color * (softCircle(p, center, in_maxRadius " + " * scaleIn, 0.2) * fade);\n" + " float mask = in_hasMask == 1. ? sample(in_shader).a > 0. ? 1. : 0. : 1.;\n" - + " return mix(circle, vec4(sparkle), sparkle) * mask;\n" + + " return mix(circle, in_sparkleColor, sparkle) * mask;\n" + "}"; private static final String SHADER = SHADER_UNIFORMS + SHADER_LIB + SHADER_MAIN; private static final double PI_ROTATE_RIGHT = Math.PI * 0.0078125; @@ -200,14 +200,17 @@ final class RippleShader extends RuntimeShader { /** * Color of the circle that's under the sparkles. Sparkles will always be white. */ - public void setColor(@ColorInt int colorIn) { - Color color = Color.valueOf(colorIn); - this.setUniform("in_color", new float[] {color.red(), + public void setColor(@ColorInt int colorInt, @ColorInt int sparkleColorInt) { + Color color = Color.valueOf(colorInt); + Color sparkleColor = Color.valueOf(sparkleColorInt); + setUniform("in_color", new float[] {color.red(), color.green(), color.blue(), color.alpha()}); + setUniform("in_sparkleColor", new float[] {sparkleColor.red(), + sparkleColor.green(), sparkleColor.blue(), sparkleColor.alpha()}); } public void setResolution(float w, float h, int density) { - final float densityScale = density * DisplayMetrics.DENSITY_DEFAULT_SCALE * 1.25f; + final float densityScale = density * DisplayMetrics.DENSITY_DEFAULT_SCALE; setUniform("in_resolutionScale", new float[] {1f / w, 1f / h}); setUniform("in_noiseScale", new float[] {densityScale / w, densityScale / h}); } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java index 0a15d8468983..f6e92ef0e8ea 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubble.java @@ -165,7 +165,8 @@ public class Bubble implements BubbleViewProvider { * Create a bubble with limited information based on given {@link ShortcutInfo}. * Note: Currently this is only being used when the bubble is persisted to disk. */ - Bubble(@NonNull final String key, @NonNull final ShortcutInfo shortcutInfo, + @VisibleForTesting(visibility = PRIVATE) + public Bubble(@NonNull final String key, @NonNull final ShortcutInfo shortcutInfo, final int desiredHeight, final int desiredHeightResId, @Nullable final String title, int taskId, @Nullable final String locus, Executor mainExecutor) { Objects.requireNonNull(key); @@ -188,7 +189,7 @@ public class Bubble implements BubbleViewProvider { } @VisibleForTesting(visibility = PRIVATE) - Bubble(@NonNull final BubbleEntry entry, + public Bubble(@NonNull final BubbleEntry entry, @Nullable final Bubbles.SuppressionChangedListener listener, final Bubbles.PendingIntentCanceledListener intentCancelListener, Executor mainExecutor) { @@ -718,7 +719,8 @@ public class Bubble implements BubbleViewProvider { private int getUid(final Context context) { if (mAppUid != -1) return mAppUid; - final PackageManager pm = context.getPackageManager(); + final PackageManager pm = BubbleController.getPackageManagerForUser(context, + mUser.getIdentifier()); if (pm == null) return -1; try { final ApplicationInfo info = pm.getApplicationInfo(mShortcutInfo.getPackage(), 0); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java index dca598518432..4b037214fcdd 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java @@ -48,6 +48,7 @@ import android.content.pm.ActivityInfo; import android.content.pm.LauncherApps; import android.content.pm.PackageManager; import android.content.pm.ShortcutInfo; +import android.content.pm.UserInfo; import android.content.res.Configuration; import android.graphics.PixelFormat; import android.graphics.PointF; @@ -64,6 +65,7 @@ import android.util.ArraySet; import android.util.Log; import android.util.Pair; import android.util.Slog; +import android.util.SparseArray; import android.util.SparseSetArray; import android.view.View; import android.view.ViewGroup; @@ -144,6 +146,8 @@ public class BubbleController { // Tracks the id of the current (foreground) user. private int mCurrentUserId; + // Current profiles of the user (e.g. user with a workprofile) + private SparseArray<UserInfo> mCurrentProfiles; // Saves notification keys of active bubbles when users are switched. private final SparseSetArray<String> mSavedBubbleKeysPerUser; @@ -153,8 +157,8 @@ public class BubbleController { // Callback that updates BubbleOverflowActivity on data change. @Nullable private BubbleData.Listener mOverflowListener = null; - // Only load overflow data from disk once - private boolean mOverflowDataLoaded = false; + // Typically only load once & after user switches + private boolean mOverflowDataLoadNeeded = true; /** * When the shade status changes to SHADE (from anything but SHADE, like LOCKED) we'll select @@ -468,14 +472,31 @@ public class BubbleController { updateStack(); } - private void onUserChanged(int newUserId) { + /** Called when the current user changes. */ + @VisibleForTesting + public void onUserChanged(int newUserId) { saveBubbles(mCurrentUserId); + mCurrentUserId = newUserId; + mBubbleData.dismissAll(DISMISS_USER_CHANGED); + mBubbleData.clearOverflow(); + mOverflowDataLoadNeeded = true; + restoreBubbles(newUserId); - mCurrentUserId = newUserId; mBubbleData.setCurrentUserId(newUserId); } + /** Called when the profiles for the current user change. **/ + public void onCurrentProfilesChanged(SparseArray<UserInfo> currentProfiles) { + mCurrentProfiles = currentProfiles; + } + + /** Whether this userId belongs to the current user. */ + private boolean isCurrentProfile(int userId) { + return userId == UserHandle.USER_ALL + || (mCurrentProfiles != null && mCurrentProfiles.get(userId) != null); + } + /** * Sets whether to perform inflation on the same thread as the caller. This method should only * be used in tests, not in production. @@ -556,6 +577,7 @@ public class BubbleController { mWmLayoutParams.setTitle("Bubbles!"); mWmLayoutParams.packageName = mContext.getPackageName(); mWmLayoutParams.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS; + mWmLayoutParams.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS; try { mAddedToWindowManager = true; @@ -639,7 +661,7 @@ public class BubbleController { }); }); // Finally, remove the entries for this user now that bubbles are restored. - mSavedBubbleKeysPerUser.remove(mCurrentUserId); + mSavedBubbleKeysPerUser.remove(userId); } private void updateForThemeChanges() { @@ -804,12 +826,12 @@ public class BubbleController { * Fills the overflow bubbles by loading them from disk. */ void loadOverflowBubblesFromDisk() { - if (!mBubbleData.getOverflowBubbles().isEmpty() || mOverflowDataLoaded) { + if (!mBubbleData.getOverflowBubbles().isEmpty() && !mOverflowDataLoadNeeded) { // we don't need to load overflow bubbles from disk if it is already in memory return; } - mOverflowDataLoaded = true; - mDataRepository.loadBubbles((bubbles) -> { + mOverflowDataLoadNeeded = false; + mDataRepository.loadBubbles(mCurrentUserId, (bubbles) -> { bubbles.forEach(bubble -> { if (mBubbleData.hasAnyBubbleWithKey(bubble.getKey())) { // if the bubble is already active, there's no need to push it to overflow @@ -911,6 +933,12 @@ public class BubbleController { Pair<BubbleEntry, Boolean> entryData = entryDataByKey.get(key); BubbleEntry entry = entryData.first; boolean shouldBubbleUp = entryData.second; + + if (entry != null && !isCurrentProfile( + entry.getStatusBarNotification().getUser().getIdentifier())) { + return; + } + rankingMap.getRanking(key, mTmpRanking); boolean isActiveBubble = mBubbleData.hasAnyBubbleWithKey(key); if (isActiveBubble && !mTmpRanking.canBubble()) { @@ -1428,6 +1456,13 @@ public class BubbleController { } @Override + public void onCurrentProfilesChanged(SparseArray<UserInfo> currentProfiles) { + mMainExecutor.execute(() -> { + BubbleController.this.onCurrentProfilesChanged(currentProfiles); + }); + } + + @Override public void onConfigChanged(Configuration newConfig) { mMainExecutor.execute(() -> { BubbleController.this.onConfigChanged(newConfig); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java index f6e6b8f3b700..8434d668e153 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleData.java @@ -510,7 +510,8 @@ public class BubbleData { || reason == Bubbles.DISMISS_NO_LONGER_BUBBLE || reason == Bubbles.DISMISS_BLOCKED || reason == Bubbles.DISMISS_SHORTCUT_REMOVED - || reason == Bubbles.DISMISS_PACKAGE_REMOVED)) { + || reason == Bubbles.DISMISS_PACKAGE_REMOVED + || reason == Bubbles.DISMISS_USER_CHANGED)) { Bubble b = getOverflowBubbleWithKey(key); if (DEBUG_BUBBLE_DATA) { @@ -642,6 +643,16 @@ public class BubbleData { } } + /** + * Removes all bubbles from the overflow, called when the user changes. + */ + public void clearOverflow() { + while (!mOverflowBubbles.isEmpty()) { + doRemove(mOverflowBubbles.get(0).getKey(), Bubbles.DISMISS_USER_CHANGED); + } + dispatchPendingChanges(); + } + private void dispatchPendingChanges() { if (mListener != null && mStateChange.anythingChanged()) { mListener.applyUpdate(mStateChange); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleDataRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleDataRepository.kt index bfacd1cfe90e..9d9e442affd3 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleDataRepository.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleDataRepository.kt @@ -58,7 +58,8 @@ internal class BubbleDataRepository( */ fun addBubbles(@UserIdInt userId: Int, bubbles: List<Bubble>) { if (DEBUG) Log.d(TAG, "adding ${bubbles.size} bubbles") - val entities = transform(userId, bubbles).also(volatileRepository::addBubbles) + val entities = transform(bubbles).also { + b -> volatileRepository.addBubbles(userId, b) } if (entities.isNotEmpty()) persistToDisk() } @@ -67,14 +68,15 @@ internal class BubbleDataRepository( */ fun removeBubbles(@UserIdInt userId: Int, bubbles: List<Bubble>) { if (DEBUG) Log.d(TAG, "removing ${bubbles.size} bubbles") - val entities = transform(userId, bubbles).also(volatileRepository::removeBubbles) + val entities = transform(bubbles).also { + b -> volatileRepository.removeBubbles(userId, b) } if (entities.isNotEmpty()) persistToDisk() } - private fun transform(userId: Int, bubbles: List<Bubble>): List<BubbleEntity> { + private fun transform(bubbles: List<Bubble>): List<BubbleEntity> { return bubbles.mapNotNull { b -> BubbleEntity( - userId, + b.user.identifier, b.packageName, b.metadataShortcutId ?: return@mapNotNull null, b.key, @@ -116,10 +118,11 @@ internal class BubbleDataRepository( /** * Load bubbles from disk. * @param cb The callback to be run after the bubbles are loaded. This callback is always made - * on the main thread of the hosting process. + * on the main thread of the hosting process. The callback is only run if there are + * bubbles. */ @SuppressLint("WrongConstant") - fun loadBubbles(cb: (List<Bubble>) -> Unit) = ioScope.launch { + fun loadBubbles(userId: Int, cb: (List<Bubble>) -> Unit) = ioScope.launch { /** * Load BubbleEntity from disk. * e.g. @@ -129,8 +132,9 @@ internal class BubbleDataRepository( * BubbleEntity(0, "com.example.messenger", "id-1") * ] */ - val entities = persistentRepository.readFromDisk() - volatileRepository.addBubbles(entities) + val entitiesByUser = persistentRepository.readFromDisk() + val entities = entitiesByUser.get(userId) ?: return@launch + volatileRepository.addBubbles(userId, entities) /** * Extract userId/packageName from these entities. * e.g. @@ -139,9 +143,10 @@ internal class BubbleDataRepository( * ] */ val shortcutKeys = entities.map { ShortcutKey(it.userId, it.packageName) }.toSet() + /** - * Retrieve shortcuts with given userId/packageName combination, then construct a mapping - * from the userId/packageName pair to a list of associated ShortcutInfo. + * Retrieve shortcuts with given userId/packageName combination, then construct a + * mapping from the userId/packageName pair to a list of associated ShortcutInfo. * e.g. * { * ShortcutKey(0, "com.example.messenger") -> [ @@ -161,21 +166,23 @@ internal class BubbleDataRepository( .setQueryFlags(SHORTCUT_QUERY_FLAG), UserHandle.of(key.userId)) ?: emptyList() }.groupBy { ShortcutKey(it.userId, it.`package`) } - // For each entity loaded from xml, find the corresponding ShortcutInfo then convert them - // into Bubble. + // For each entity loaded from xml, find the corresponding ShortcutInfo then convert + // them into Bubble. val bubbles = entities.mapNotNull { entity -> shortcutMap[ShortcutKey(entity.userId, entity.packageName)] ?.firstOrNull { shortcutInfo -> entity.shortcutId == shortcutInfo.id } - ?.let { shortcutInfo -> Bubble( - entity.key, - shortcutInfo, - entity.desiredHeight, - entity.desiredHeightResId, - entity.title, - entity.taskId, - entity.locus, - mainExecutor - ) } + ?.let { shortcutInfo -> + Bubble( + entity.key, + shortcutInfo, + entity.desiredHeight, + entity.desiredHeightResId, + entity.title, + entity.taskId, + entity.locus, + mainExecutor + ) + } } mainExecutor.execute { cb(bubbles) } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleIconFactory.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleIconFactory.java index fe3f9ef6aa5f..e64ed6a0836c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleIconFactory.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleIconFactory.java @@ -29,6 +29,8 @@ import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; +import androidx.annotation.VisibleForTesting; + import com.android.launcher3.icons.BaseIconFactory; import com.android.launcher3.icons.BitmapInfo; import com.android.launcher3.icons.ShadowGenerator; @@ -39,11 +41,12 @@ import com.android.wm.shell.R; * We are not using Launcher's IconFactory because bubbles only runs on the UI thread, * so there is no need to manage a pool across multiple threads. */ +@VisibleForTesting public class BubbleIconFactory extends BaseIconFactory { private int mBadgeSize; - protected BubbleIconFactory(Context context) { + public BubbleIconFactory(Context context) { super(context, context.getResources().getConfiguration().densityDpi, context.getResources().getDimensionPixelSize(R.dimen.individual_bubble_size)); mBadgeSize = mContext.getResources().getDimensionPixelSize( diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTask.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTask.java index c5a712e271e4..fc53ef26dbd9 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTask.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleViewInfoTask.java @@ -39,6 +39,7 @@ import android.util.PathParser; import android.view.LayoutInflater; import androidx.annotation.Nullable; +import androidx.annotation.VisibleForTesting; import com.android.internal.graphics.ColorUtils; import com.android.launcher3.icons.BitmapInfo; @@ -118,7 +119,8 @@ public class BubbleViewInfoTask extends AsyncTask<Void, Void, BubbleViewInfoTask /** * Info necessary to render a bubble. */ - static class BubbleViewInfo { + @VisibleForTesting + public static class BubbleViewInfo { BadgedImageView imageView; BubbleExpandedView expandedView; ShortcutInfo shortcutInfo; @@ -129,8 +131,9 @@ public class BubbleViewInfoTask extends AsyncTask<Void, Void, BubbleViewInfoTask Path dotPath; Bubble.FlyoutMessage flyoutMessage; + @VisibleForTesting @Nullable - static BubbleViewInfo populate(Context c, BubbleController controller, + public static BubbleViewInfo populate(Context c, BubbleController controller, BubbleStackView stackView, BubbleIconFactory iconFactory, Bubble b, boolean skipInflation) { BubbleViewInfo info = new BubbleViewInfo(); @@ -152,7 +155,8 @@ public class BubbleViewInfoTask extends AsyncTask<Void, Void, BubbleViewInfoTask } // App name & app icon - PackageManager pm = c.getPackageManager(); + PackageManager pm = BubbleController.getPackageManagerForUser(c, + b.getUser().getIdentifier()); ApplicationInfo appInfo; Drawable badgedIcon; Drawable appIcon; @@ -217,10 +221,16 @@ public class BubbleViewInfoTask extends AsyncTask<Void, Void, BubbleViewInfoTask static Drawable loadSenderAvatar(@NonNull final Context context, @Nullable final Icon icon) { Objects.requireNonNull(context); if (icon == null) return null; - if (icon.getType() == Icon.TYPE_URI || icon.getType() == Icon.TYPE_URI_ADAPTIVE_BITMAP) { - context.grantUriPermission(context.getPackageName(), - icon.getUri(), Intent.FLAG_GRANT_READ_URI_PERMISSION); + try { + if (icon.getType() == Icon.TYPE_URI + || icon.getType() == Icon.TYPE_URI_ADAPTIVE_BITMAP) { + context.grantUriPermission(context.getPackageName(), + icon.getUri(), Intent.FLAG_GRANT_READ_URI_PERMISSION); + } + return icon.loadDrawable(context); + } catch (Exception e) { + Log.w(TAG, "loadSenderAvatar failed: " + e.getMessage()); + return null; } - return icon.loadDrawable(context); } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java index 1bfb61929297..a93ce01dfc7b 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/Bubbles.java @@ -21,12 +21,14 @@ import static java.lang.annotation.ElementType.LOCAL_VARIABLE; import static java.lang.annotation.ElementType.PARAMETER; import static java.lang.annotation.RetentionPolicy.SOURCE; +import android.content.pm.UserInfo; import android.content.res.Configuration; import android.os.Bundle; import android.os.Looper; import android.service.notification.NotificationListenerService.RankingMap; import android.util.ArraySet; import android.util.Pair; +import android.util.SparseArray; import android.view.View; import androidx.annotation.IntDef; @@ -214,6 +216,13 @@ public interface Bubbles { void onUserChanged(int newUserId); /** + * Called when the current user profiles change. + * + * @param currentProfiles the user infos for the current profile. + */ + void onCurrentProfilesChanged(SparseArray<UserInfo> currentProfiles); + + /** * Called when config changed. * * @param newConfig the new config. diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepository.kt index 66a75af7d64c..130790a04160 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepository.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepository.kt @@ -18,6 +18,7 @@ package com.android.wm.shell.bubbles.storage import android.content.Context import android.util.AtomicFile import android.util.Log +import android.util.SparseArray import java.io.File import java.io.FileOutputStream import java.io.IOException @@ -27,8 +28,8 @@ class BubblePersistentRepository(context: Context) { private val bubbleFile: AtomicFile = AtomicFile(File(context.filesDir, "overflow_bubbles.xml"), "overflow-bubbles") - fun persistsToDisk(bubbles: List<BubbleEntity>): Boolean { - if (DEBUG) Log.d(TAG, "persisting ${bubbles.size} bubbles") + fun persistsToDisk(bubbles: SparseArray<List<BubbleEntity>>): Boolean { + if (DEBUG) Log.d(TAG, "persisting ${bubbles.size()} bubbles") synchronized(bubbleFile) { val stream: FileOutputStream = try { bubbleFile.startWrite() } catch (e: IOException) { Log.e(TAG, "Failed to save bubble file", e) @@ -37,7 +38,7 @@ class BubblePersistentRepository(context: Context) { try { writeXml(stream, bubbles) bubbleFile.finishWrite(stream) - if (DEBUG) Log.d(TAG, "persisted ${bubbles.size} bubbles") + if (DEBUG) Log.d(TAG, "persisted ${bubbles.size()} bubbles") return true } catch (e: Exception) { Log.e(TAG, "Failed to save bubble file, restoring backup", e) @@ -47,13 +48,13 @@ class BubblePersistentRepository(context: Context) { return false } - fun readFromDisk(): List<BubbleEntity> { + fun readFromDisk(): SparseArray<List<BubbleEntity>> { synchronized(bubbleFile) { - if (!bubbleFile.exists()) return emptyList() + if (!bubbleFile.exists()) return SparseArray() try { return bubbleFile.openRead().use(::readXml) } catch (e: Throwable) { Log.e(TAG, "Failed to open bubble file", e) } - return emptyList() + return SparseArray() } } } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepository.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepository.kt index 7f0b165bdc25..a5267d8be9fe 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepository.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepository.kt @@ -17,6 +17,7 @@ package com.android.wm.shell.bubbles.storage import android.content.pm.LauncherApps import android.os.UserHandle +import android.util.SparseArray import com.android.internal.annotations.VisibleForTesting import com.android.wm.shell.bubbles.ShortcutKey @@ -27,10 +28,11 @@ private const val CAPACITY = 16 * manipulation. */ class BubbleVolatileRepository(private val launcherApps: LauncherApps) { + /** - * An ordered set of bubbles based on their natural ordering. + * Set of bubbles per user. Each set of bubbles is ordered by recency. */ - private var entities = mutableSetOf<BubbleEntity>() + private var entitiesByUser = SparseArray<MutableList<BubbleEntity>>() /** * The capacity of the cache. @@ -39,19 +41,43 @@ class BubbleVolatileRepository(private val launcherApps: LauncherApps) { var capacity = CAPACITY /** - * Returns a snapshot of all the bubbles. + * Returns a snapshot of all the bubbles, a map of the userId to bubble list. */ - val bubbles: List<BubbleEntity> + val bubbles: SparseArray<List<BubbleEntity>> @Synchronized - get() = entities.toList() + get() { + val map = SparseArray<List<BubbleEntity>>() + for (i in 0 until entitiesByUser.size()) { + val k = entitiesByUser.keyAt(i) + val v = entitiesByUser.valueAt(i) + map.put(k, v.toList()) + } + return map + } + + /** + * Returns the entity list of the provided user's bubbles or creates one if it doesn't exist. + */ + @Synchronized + fun getEntities(userId: Int): MutableList<BubbleEntity> { + val entities = entitiesByUser.get(userId) + return when (entities) { + null -> mutableListOf<BubbleEntity>().also { + entitiesByUser.put(userId, it) + } + else -> entities + } + } /** * Add the bubbles to memory and perform a de-duplication. In case a bubble already exists, * it will be moved to the last. */ @Synchronized - fun addBubbles(bubbles: List<BubbleEntity>) { + fun addBubbles(userId: Int, bubbles: List<BubbleEntity>) { if (bubbles.isEmpty()) return + // Get the list for this user + var entities = getEntities(userId) // Verify the size of given bubbles is within capacity, otherwise trim down to capacity val bubblesInRange = bubbles.takeLast(capacity) // To ensure natural ordering of the bubbles, removes bubbles which already exist @@ -61,16 +87,17 @@ class BubbleVolatileRepository(private val launcherApps: LauncherApps) { if (overflowCount > 0) { // Uncache ShortcutInfo of bubbles that will be removed due to capacity uncache(entities.take(overflowCount)) - entities = entities.drop(overflowCount).toMutableSet() + entities = entities.drop(overflowCount).toMutableList() } entities.addAll(bubblesInRange) + entitiesByUser.put(userId, entities) cache(uniqueBubbles) } @Synchronized - fun removeBubbles(bubbles: List<BubbleEntity>) = + fun removeBubbles(userId: Int, bubbles: List<BubbleEntity>) = uncache(bubbles.filter { b: BubbleEntity -> - entities.removeIf { e: BubbleEntity -> b.key == e.key } }) + getEntities(userId).removeIf { e: BubbleEntity -> b.key == e.key } }) private fun cache(bubbles: List<BubbleEntity>) { bubbles.groupBy { ShortcutKey(it.userId, it.packageName) }.forEach { (key, bubbles) -> diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelper.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelper.kt index a74445bba1ab..f4fa1835b7a5 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelper.kt +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelper.kt @@ -16,6 +16,8 @@ package com.android.wm.shell.bubbles.storage import android.app.ActivityTaskManager.INVALID_TASK_ID +import android.os.UserHandle +import android.util.SparseArray import android.util.Xml import com.android.internal.util.FastXmlSerializer import com.android.internal.util.XmlUtils @@ -26,8 +28,8 @@ import java.io.InputStream import java.io.OutputStream import java.nio.charset.StandardCharsets -// TODO: handle version changes gracefully -private const val CURRENT_VERSION = 1 +// If this number increases, consider bubbles might be restored even with differences in XML. +private const val CURRENT_VERSION = 2 private const val TAG_BUBBLES = "bs" private const val ATTR_VERSION = "v" @@ -46,13 +48,20 @@ private const val ATTR_LOCUS = "l" * Writes the bubbles in xml format into given output stream. */ @Throws(IOException::class) -fun writeXml(stream: OutputStream, bubbles: List<BubbleEntity>) { +fun writeXml(stream: OutputStream, bubbles: SparseArray<List<BubbleEntity>>) { val serializer: XmlSerializer = FastXmlSerializer() serializer.setOutput(stream, StandardCharsets.UTF_8.name()) serializer.startDocument(null, true) serializer.startTag(null, TAG_BUBBLES) serializer.attribute(null, ATTR_VERSION, CURRENT_VERSION.toString()) - bubbles.forEach { b -> writeXmlEntry(serializer, b) } + for (i in 0 until bubbles.size()) { + val k = bubbles.keyAt(i) + val v = bubbles.valueAt(i) + serializer.startTag(null, TAG_BUBBLES) + serializer.attribute(null, ATTR_USER_ID, k.toString()) + v.forEach { b -> writeXmlEntry(serializer, b) } + serializer.endTag(null, TAG_BUBBLES) + } serializer.endTag(null, TAG_BUBBLES) serializer.endDocument() } @@ -84,16 +93,39 @@ private fun writeXmlEntry(serializer: XmlSerializer, bubble: BubbleEntity) { /** * Reads the bubbles from xml file. */ -fun readXml(stream: InputStream): List<BubbleEntity> { - val bubbles = mutableListOf<BubbleEntity>() +fun readXml(stream: InputStream): SparseArray<List<BubbleEntity>> { + val bubbles = SparseArray<List<BubbleEntity>>() val parser: XmlPullParser = Xml.newPullParser() parser.setInput(stream, StandardCharsets.UTF_8.name()) XmlUtils.beginDocument(parser, TAG_BUBBLES) - val version = parser.getAttributeWithName(ATTR_VERSION)?.toInt() - if (version != null && version == CURRENT_VERSION) { + val veryOuterDepth = parser.depth + val version = parser.getAttributeWithName(ATTR_VERSION)?.toInt() ?: return bubbles + if (version == CURRENT_VERSION) { + while (XmlUtils.nextElementWithin(parser, veryOuterDepth)) { + val uid = parser.getAttributeWithName(ATTR_USER_ID) ?: continue + val outerDepth = parser.depth + val userBubbles = mutableListOf<BubbleEntity>() + while (XmlUtils.nextElementWithin(parser, outerDepth)) { + userBubbles.add(readXmlEntry(parser) ?: continue) + } + if (!userBubbles.isEmpty()) { + bubbles.put(uid.toInt(), userBubbles.toList()) + } + } + } else if (version == 1) { + // upgrade v1 to v2 format val outerDepth = parser.depth + val userBubbles = mutableListOf<BubbleEntity>() while (XmlUtils.nextElementWithin(parser, outerDepth)) { - bubbles.add(readXmlEntry(parser) ?: continue) + // We can't tell which profile the bubble was for, so we'll only copy the main users' + // bubbles on upgrade. + val b = readXmlEntry(parser) + if (b != null && b.userId == UserHandle.USER_SYSTEM) { + userBubbles.add(b) + } + } + if (!userBubbles.isEmpty()) { + bubbles.put(UserHandle.USER_SYSTEM, userBubbles.toList()) } } return bubbles diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java index e3594d0cd367..561dff0da6ca 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipBoundsState.java @@ -19,10 +19,14 @@ package com.android.wm.shell.pip; import android.annotation.IntDef; import android.annotation.NonNull; import android.annotation.Nullable; +import android.app.ActivityTaskManager; +import android.app.PictureInPictureUiState; import android.content.ComponentName; import android.content.Context; import android.graphics.Point; import android.graphics.Rect; +import android.os.RemoteException; +import android.util.Log; import android.util.Size; import android.view.Display; @@ -185,7 +189,18 @@ public final class PipBoundsState { /** Dictate where PiP currently should be stashed, if at all. */ public void setStashed(@StashType int stashedState) { + if (mStashedState == stashedState) { + return; + } + mStashedState = stashedState; + try { + ActivityTaskManager.getService().onPictureInPictureStateChanged( + new PictureInPictureUiState(stashedState != STASH_TYPE_NONE /* isStashed */) + ); + } catch (RemoteException e) { + Log.e(TAG, "Unable to set alert PiP state change."); + } } /** diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipMediaController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipMediaController.java index 3af0ff0dfb36..97139626a3d2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipMediaController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipMediaController.java @@ -21,6 +21,7 @@ import static android.app.PendingIntent.FLAG_UPDATE_CURRENT; import android.annotation.DrawableRes; import android.annotation.StringRes; +import android.annotation.SuppressLint; import android.app.PendingIntent; import android.app.RemoteAction; import android.content.BroadcastReceiver; @@ -210,13 +211,16 @@ public class PipMediaController { /** * Gets the set of media actions currently available. */ + // This is due to using PlaybackState#isActive, which is added in API 31. + // It can be removed when min_sdk of the app is set to 31 or greater. + @SuppressLint("NewApi") private List<RemoteAction> getMediaActions() { if (mMediaController == null || mMediaController.getPlaybackState() == null) { return Collections.emptyList(); } ArrayList<RemoteAction> mediaActions = new ArrayList<>(); - boolean isPlaying = mMediaController.getPlaybackState().isActiveState(); + boolean isPlaying = mMediaController.getPlaybackState().isActive(); long actions = mMediaController.getPlaybackState().getActions(); // Prev action diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java index 582ff2180c83..3dd97f565179 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/PipSurfaceTransactionHelper.java @@ -21,6 +21,7 @@ import android.content.res.Resources; import android.graphics.Matrix; import android.graphics.Rect; import android.graphics.RectF; +import android.os.SystemProperties; import android.view.SurfaceControl; import com.android.wm.shell.R; @@ -42,7 +43,8 @@ public class PipSurfaceTransactionHelper { public PipSurfaceTransactionHelper(Context context) { final Resources res = context.getResources(); - mEnableCornerRadius = res.getBoolean(R.bool.config_pipEnableRoundCorner); + mEnableCornerRadius = res.getBoolean(R.bool.config_pipEnableRoundCorner) + || SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false); } /** diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java index 3c25a13e94eb..a57e8cdd0928 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java @@ -44,6 +44,7 @@ import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; import android.os.Handler; +import android.os.SystemProperties; import android.os.UserHandle; import android.util.Log; import android.util.Pair; @@ -131,7 +132,8 @@ public class PipMenuView extends FrameLayout { inflate(context, R.layout.pip_menu, this); final boolean enableCornerRadius = mContext.getResources() - .getBoolean(R.bool.config_pipEnableRoundCorner); + .getBoolean(R.bool.config_pipEnableRoundCorner) + || SystemProperties.getBoolean("debug.sf.enable_hole_punch_pip", false); mBackgroundDrawable = enableCornerRadius ? mContext.getDrawable(R.drawable.pip_menu_background) : new ColorDrawable(Color.BLACK); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java index f29d4f59493e..2a1fe6080cb1 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipTouchHandler.java @@ -625,6 +625,7 @@ public class PipTouchHandler { } mMenuController.handlePointerEvent(cloneEvent); + cloneEvent.recycle(); } return true; diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipNotificationController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipNotificationController.java index a47483144fef..dd7e29451ffc 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipNotificationController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/tv/TvPipNotificationController.java @@ -50,6 +50,7 @@ public class TvPipNotificationController { // Referenced in com.android.systemui.util.NotificationChannels. public static final String NOTIFICATION_CHANNEL = "TVPIP"; private static final String NOTIFICATION_TAG = "TvPip"; + private static final String SYSTEMUI_PERMISSION = "com.android.systemui.permission.SELF"; private static final String ACTION_SHOW_PIP_MENU = "com.android.wm.shell.pip.tv.notification.action.SHOW_PIP_MENU"; @@ -207,7 +208,8 @@ public class TvPipNotificationController { } private static PendingIntent createPendingIntent(Context context, String action) { - return PendingIntent.getBroadcast(context, 0, new Intent(action), + return PendingIntent.getBroadcast(context, 0, + new Intent(action).setPackage(context.getPackageName()), PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_IMMUTABLE); } @@ -223,7 +225,7 @@ public class TvPipNotificationController { void register() { if (mRegistered) return; - mContext.registerReceiverForAllUsers(this, mIntentFilter, null /* permission */, + mContext.registerReceiverForAllUsers(this, mIntentFilter, SYSTEMUI_PERMISSION, mMainHandler); mRegistered = true; } diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java index 147f2e2ec846..f3ae0a1bf717 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/SplashscreenContentDrawer.java @@ -109,11 +109,12 @@ public class SplashscreenContentDrawer { * view on background thread so the view and the drawable can be create and pre-draw in * parallel. * + * @param emptyView Create a splash screen view without icon on it. * @param consumer Receiving the SplashScreenView object, which will also be executed * on splash screen thread. Note that the view can be null if failed. */ - void createContentView(Context context, int splashScreenResId, ActivityInfo info, - int taskId, Consumer<SplashScreenView> consumer) { + void createContentView(Context context, boolean emptyView, int splashScreenResId, + ActivityInfo info, int taskId, Consumer<SplashScreenView> consumer) { mSplashscreenWorkerHandler.post(() -> { SplashScreenView contentView; try { @@ -121,7 +122,11 @@ public class SplashscreenContentDrawer { context, splashScreenResId); if (contentView == null) { Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "makeSplashScreenContentView"); - contentView = makeSplashScreenContentView(context, info); + if (emptyView) { + contentView = makeEmptySplashScreenContentView(context); + } else { + contentView = makeSplashScreenContentView(context, info); + } Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER); } } catch (RuntimeException e) { @@ -190,6 +195,18 @@ public class SplashscreenContentDrawer { } } + private SplashScreenView makeEmptySplashScreenContentView(Context context) { + getWindowAttrs(context, mTmpAttrs); + final StartingWindowViewBuilder builder = new StartingWindowViewBuilder(); + final int themeBGColor = peekWindowBGColor(context); + final SplashScreenView view = builder + .setContext(context) + .setWindowBGColor(themeBGColor) + .build(); + view.setNotCopyable(); + return view; + } + private SplashScreenView makeSplashScreenContentView(Context context, ActivityInfo ai) { updateDensity(); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java index 7037d18decbe..e4b28696bc4f 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/startingsurface/StartingSurfaceDrawer.java @@ -317,46 +317,38 @@ public class StartingSurfaceDrawer { // 3. Pre-draw the BitmapShader if the icon is immobile on splash screen worker thread, at // the same time the splash screen thread should be executing Session#relayout. Blocking the // traversal -> draw on splash screen thread until the BitmapShader of the icon is ready. - final Runnable setViewSynchronized; - if (!emptyView) { - // Record whether create splash screen view success, notify to current thread after - // create splash screen view finished. - final SplashScreenViewSupplier viewSupplier = new SplashScreenViewSupplier(); - setViewSynchronized = () -> { - // waiting for setContentView before relayoutWindow - SplashScreenView contentView = viewSupplier.get(); - final StartingWindowRecord record = mStartingWindowRecords.get(taskId); - // if record == null, either the starting window added fail or removed already. - if (record != null) { - // if view == null then creation of content view was failed. - if (contentView != null) { - try { - win.setContentView(contentView); - contentView.cacheRootWindow(win); - } catch (RuntimeException e) { - Slog.w(TAG, "failed set content view to starting window " - + "at taskId: " + taskId, e); - contentView = null; - } + + // Record whether create splash screen view success, notify to current thread after + // create splash screen view finished. + final SplashScreenViewSupplier viewSupplier = new SplashScreenViewSupplier(); + final Runnable setViewSynchronized = () -> { + // waiting for setContentView before relayoutWindow + SplashScreenView contentView = viewSupplier.get(); + final StartingWindowRecord record = mStartingWindowRecords.get(taskId); + // if record == null, either the starting window added fail or removed already. + if (record != null) { + // if view == null then creation of content view was failed. + if (contentView != null) { + try { + win.setContentView(contentView); + contentView.cacheRootWindow(win); + } catch (RuntimeException e) { + Slog.w(TAG, "failed set content view to starting window " + + "at taskId: " + taskId, e); + contentView = null; } - record.setSplashScreenView(contentView); } - }; - mSplashscreenContentDrawer.createContentView(context, - splashscreenContentResId[0], activityInfo, taskId, viewSupplier::setView); - } else { - setViewSynchronized = null; - } + record.setSplashScreenView(contentView); + } + }; + mSplashscreenContentDrawer.createContentView(context, emptyView, + splashscreenContentResId[0], activityInfo, taskId, viewSupplier::setView); try { final View view = win.getDecorView(); final WindowManager wm = mContext.getSystemService(WindowManager.class); postAddWindow(taskId, appToken, view, wm, params); - // all done - if (emptyView) { - return; - } // We use the splash screen worker thread to create SplashScreenView while adding the // window, as otherwise Choreographer#doFrame might be delayed on this thread. // And since Choreographer#doFrame won't happen immediately after adding the window, if diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenDockActivity.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenDockActivity.kt index 6494f89997e5..91d51de3a872 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenDockActivity.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenDockActivity.kt @@ -74,12 +74,6 @@ class EnterSplitScreenDockActivity( @Test fun dockedStackDividerBecomesVisible() = testSpec.dockedStackDividerBecomesVisible() - @FlakyTest(bugId = 178531736) - @Test - // b/178531736 - override fun visibleLayersShownMoreThanOneConsecutiveEntry() = - super.visibleLayersShownMoreThanOneConsecutiveEntry() - @Presubmit @Test fun navBarWindowIsAlwaysVisible() = testSpec.navBarWindowIsAlwaysVisible() @@ -88,12 +82,6 @@ class EnterSplitScreenDockActivity( @Test fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible() - @FlakyTest(bugId = 178531736) - @Test - // b/178531736 - override fun visibleWindowsShownMoreThanOneConsecutiveEntry() = - super.visibleWindowsShownMoreThanOneConsecutiveEntry() - @Presubmit @Test fun appWindowIsVisible() { diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenLaunchToSide.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenLaunchToSide.kt index 9000f22fb03d..f975ed92e872 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenLaunchToSide.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenLaunchToSide.kt @@ -83,13 +83,6 @@ class EnterSplitScreenLaunchToSide( // b/169271943 fun dockedStackDividerBecomesVisible() = testSpec.dockedStackDividerBecomesVisible() - @FlakyTest(bugId = 178447631) - @Test - // TODO(b/178447631) Remove Splash Screen from white list when flicker lib - // add a wait for splash screen be gone - override fun visibleLayersShownMoreThanOneConsecutiveEntry() = - super.visibleLayersShownMoreThanOneConsecutiveEntry() - @Presubmit @Test fun appWindowBecomesVisible() = testSpec.appWindowBecomesVisible(secondaryApp.defaultWindowName) @@ -102,11 +95,6 @@ class EnterSplitScreenLaunchToSide( @Test fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible() - @Presubmit - @Test - override fun visibleWindowsShownMoreThanOneConsecutiveEntry() = - super.visibleWindowsShownMoreThanOneConsecutiveEntry() - companion object { @Parameterized.Parameters(name = "{0}") @JvmStatic diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenNotSupportNonResizable.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenNotSupportNonResizable.kt index 7d22d4dbe5ab..6bc9a5c5982c 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenNotSupportNonResizable.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenNotSupportNonResizable.kt @@ -19,7 +19,6 @@ package com.android.wm.shell.flicker.legacysplitscreen import android.platform.test.annotations.Postsubmit import android.provider.Settings import android.view.Surface -import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -97,25 +96,9 @@ class EnterSplitScreenNotSupportNonResizable( prevSupportNonResizableInMultiWindow) } - @FlakyTest(bugId = 178447631) - @Test - override fun visibleLayersShownMoreThanOneConsecutiveEntry() = - super.visibleLayersShownMoreThanOneConsecutiveEntry() - - @Test - override fun visibleWindowsShownMoreThanOneConsecutiveEntry() = - super.visibleWindowsShownMoreThanOneConsecutiveEntry() - @Test fun dockedStackDividerIsInvisible() = testSpec.dockedStackDividerIsInvisible() - @Test - fun appWindowIsVisible() { - testSpec.assertWmEnd { - isInvisible(nonResizeableApp.defaultWindowName) - } - } - companion object { @Parameterized.Parameters(name = "{0}") @JvmStatic diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenSupportNonResizable.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenSupportNonResizable.kt index 9b4a10389619..91ca7c1d2a72 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenSupportNonResizable.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/EnterSplitScreenSupportNonResizable.kt @@ -19,7 +19,6 @@ package com.android.wm.shell.flicker.legacysplitscreen import android.platform.test.annotations.Postsubmit import android.provider.Settings import android.view.Surface -import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -92,15 +91,6 @@ class EnterSplitScreenSupportNonResizable( prevSupportNonResizableInMultiWindow) } - @FlakyTest(bugId = 178447631) - @Test - override fun visibleLayersShownMoreThanOneConsecutiveEntry() = - super.visibleLayersShownMoreThanOneConsecutiveEntry() - - @Test - override fun visibleWindowsShownMoreThanOneConsecutiveEntry() = - super.visibleWindowsShownMoreThanOneConsecutiveEntry() - @Test fun dockedStackDividerIsVisible() = testSpec.dockedStackDividerIsVisible() diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitLegacySplitScreenFromBottom.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitLegacySplitScreenFromBottom.kt index 64cc85340a38..faf7aa75a1de 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitLegacySplitScreenFromBottom.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitLegacySplitScreenFromBottom.kt @@ -78,12 +78,6 @@ class ExitLegacySplitScreenFromBottom( @Test fun layerBecomesInvisible() = testSpec.layerBecomesInvisible(DOCKED_STACK_DIVIDER) - @FlakyTest(bugId = 178447631) - @Test - override fun visibleLayersShownMoreThanOneConsecutiveEntry() { - super.visibleLayersShownMoreThanOneConsecutiveEntry() - } - @FlakyTest @Test fun appWindowBecomesInVisible() = @@ -97,11 +91,6 @@ class ExitLegacySplitScreenFromBottom( @Test fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible() - @FlakyTest(bugId = 178447631) - @Test - override fun visibleWindowsShownMoreThanOneConsecutiveEntry() = - super.visibleWindowsShownMoreThanOneConsecutiveEntry() - companion object { @Parameterized.Parameters(name = "{0}") @JvmStatic diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitPrimarySplitScreenShowSecondaryFullscreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitPrimarySplitScreenShowSecondaryFullscreen.kt index 2e115518721f..8845777dda6e 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitPrimarySplitScreenShowSecondaryFullscreen.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ExitPrimarySplitScreenShowSecondaryFullscreen.kt @@ -82,11 +82,6 @@ class ExitPrimarySplitScreenShowSecondaryFullscreen( @Test fun layerBecomesInvisible() = testSpec.layerBecomesInvisible(splitScreenApp.defaultWindowName) - @FlakyTest(bugId = 178447631) - @Test - override fun visibleLayersShownMoreThanOneConsecutiveEntry() = - super.visibleLayersShownMoreThanOneConsecutiveEntry() - @FlakyTest @Test fun appWindowBecomesInVisible() = @@ -100,11 +95,6 @@ class ExitPrimarySplitScreenShowSecondaryFullscreen( @Test fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible() - @FlakyTest(bugId = 178447631) - @Test - override fun visibleWindowsShownMoreThanOneConsecutiveEntry() = - super.visibleWindowsShownMoreThanOneConsecutiveEntry() - companion object { @Parameterized.Parameters(name = "{0}") @JvmStatic diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentNotSupportNonResizable.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentNotSupportNonResizable.kt index 892384561eb2..968aff1ce572 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentNotSupportNonResizable.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentNotSupportNonResizable.kt @@ -19,7 +19,6 @@ package com.android.wm.shell.flicker.legacysplitscreen import android.platform.test.annotations.Postsubmit import android.provider.Settings import android.view.Surface -import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -96,16 +95,6 @@ class LegacySplitScreenFromIntentNotSupportNonResizable( prevSupportNonResizableInMultiWindow) } - @FlakyTest(bugId = 178447631) - @Test - override fun visibleLayersShownMoreThanOneConsecutiveEntry() = - super.visibleLayersShownMoreThanOneConsecutiveEntry() - - @FlakyTest(bugId = 178447631) - @Test - override fun visibleWindowsShownMoreThanOneConsecutiveEntry() = - super.visibleWindowsShownMoreThanOneConsecutiveEntry() - @Test fun resizableAppLayerBecomesInvisible() = testSpec.layerBecomesInvisible(splitScreenApp.defaultWindowName) diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentSupportNonResizable.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentSupportNonResizable.kt index 2f5e0bddd71f..8d206730b436 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentSupportNonResizable.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromIntentSupportNonResizable.kt @@ -19,7 +19,6 @@ package com.android.wm.shell.flicker.legacysplitscreen import android.platform.test.annotations.Postsubmit import android.provider.Settings import android.view.Surface -import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -94,16 +93,6 @@ class LegacySplitScreenFromIntentSupportNonResizable( prevSupportNonResizableInMultiWindow) } - @FlakyTest(bugId = 178447631) - @Test - override fun visibleLayersShownMoreThanOneConsecutiveEntry() = - super.visibleLayersShownMoreThanOneConsecutiveEntry() - - @FlakyTest(bugId = 178447631) - @Test - override fun visibleWindowsShownMoreThanOneConsecutiveEntry() = - super.visibleWindowsShownMoreThanOneConsecutiveEntry() - @Test fun nonResizableAppLayerBecomesVisible() = testSpec.layerBecomesVisible(nonResizeableApp.defaultWindowName) diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentNotSupportNonResizable.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentNotSupportNonResizable.kt index a42774d93b5b..4e291d9ef9f0 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentNotSupportNonResizable.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentNotSupportNonResizable.kt @@ -19,7 +19,6 @@ package com.android.wm.shell.flicker.legacysplitscreen import android.platform.test.annotations.Postsubmit import android.provider.Settings import android.view.Surface -import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -97,16 +96,6 @@ class LegacySplitScreenFromRecentNotSupportNonResizable( prevSupportNonResizableInMultiWindow) } - @FlakyTest(bugId = 178447631) - @Test - override fun visibleLayersShownMoreThanOneConsecutiveEntry() = - super.visibleLayersShownMoreThanOneConsecutiveEntry() - - @FlakyTest(bugId = 178447631) - @Test - override fun visibleWindowsShownMoreThanOneConsecutiveEntry() = - super.visibleWindowsShownMoreThanOneConsecutiveEntry() - @Test fun resizableAppLayerBecomesInvisible() = testSpec.layerBecomesInvisible(splitScreenApp.defaultWindowName) diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentSupportNonResizable.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentSupportNonResizable.kt index 14f6deef6ff4..880dc5567d8a 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentSupportNonResizable.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenFromRecentSupportNonResizable.kt @@ -19,7 +19,6 @@ package com.android.wm.shell.flicker.legacysplitscreen import android.platform.test.annotations.Postsubmit import android.provider.Settings import android.view.Surface -import androidx.test.filters.FlakyTest import androidx.test.filters.RequiresDevice import com.android.server.wm.flicker.FlickerParametersRunnerFactory import com.android.server.wm.flicker.FlickerTestParameter @@ -95,16 +94,6 @@ class LegacySplitScreenFromRecentSupportNonResizable( prevSupportNonResizableInMultiWindow) } - @FlakyTest(bugId = 178447631) - @Test - override fun visibleLayersShownMoreThanOneConsecutiveEntry() = - super.visibleLayersShownMoreThanOneConsecutiveEntry() - - @FlakyTest(bugId = 178447631) - @Test - override fun visibleWindowsShownMoreThanOneConsecutiveEntry() = - super.visibleWindowsShownMoreThanOneConsecutiveEntry() - @Test fun nonResizableAppLayerBecomesVisible() = testSpec.layerBecomesVisible(nonResizeableApp.defaultWindowName) diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenRotateTransition.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenRotateTransition.kt index 08d5db0f9124..1e89a25c06df 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenRotateTransition.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenRotateTransition.kt @@ -17,13 +17,11 @@ package com.android.wm.shell.flicker.legacysplitscreen import android.view.Surface -import androidx.test.filters.FlakyTest import com.android.server.wm.flicker.FlickerTestParameter import com.android.server.wm.flicker.dsl.FlickerBuilder import com.android.server.wm.flicker.helpers.openQuickStepAndClearRecentAppsFromOverview import com.android.server.wm.flicker.helpers.setRotation import com.android.server.wm.flicker.helpers.wakeUpAndGoToHomeScreen -import org.junit.Test abstract class LegacySplitScreenRotateTransition( testSpec: FlickerTestParameter @@ -46,16 +44,4 @@ abstract class LegacySplitScreenRotateTransition( } } } - - @FlakyTest - @Test - override fun visibleLayersShownMoreThanOneConsecutiveEntry() { - super.visibleLayersShownMoreThanOneConsecutiveEntry() - } - - @FlakyTest - @Test - override fun visibleWindowsShownMoreThanOneConsecutiveEntry() { - super.visibleWindowsShownMoreThanOneConsecutiveEntry() - } } diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenToLauncher.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenToLauncher.kt index 39f4ce298ff5..976668e60231 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenToLauncher.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenToLauncher.kt @@ -118,11 +118,6 @@ class LegacySplitScreenToLauncher( fun statusBarLayerRotatesScales() = testSpec.statusBarLayerRotatesScales(testSpec.config.endRotation) - @FlakyTest - @Test - override fun visibleLayersShownMoreThanOneConsecutiveEntry() = - super.visibleLayersShownMoreThanOneConsecutiveEntry() - @Presubmit @Test fun statusBarLayerIsAlwaysVisible() = testSpec.statusBarLayerIsAlwaysVisible() diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenTransition.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenTransition.kt index e13056c36684..8684ba52bd52 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenTransition.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/LegacySplitScreenTransition.kt @@ -18,9 +18,9 @@ package com.android.wm.shell.flicker.legacysplitscreen import android.app.Instrumentation import android.content.Context -import android.platform.test.annotations.Presubmit import android.support.test.launcherhelper.LauncherStrategyFactory import android.view.Surface +import androidx.test.filters.FlakyTest import androidx.test.platform.app.InstrumentationRegistry import com.android.server.wm.flicker.FlickerBuilderProvider import com.android.server.wm.flicker.FlickerTestParameter @@ -102,7 +102,7 @@ abstract class LegacySplitScreenTransition(protected val testSpec: FlickerTestPa } } - @Presubmit + @FlakyTest(bugId = 178447631) @Test open fun visibleWindowsShownMoreThanOneConsecutiveEntry() { testSpec.assertWm { @@ -110,7 +110,7 @@ abstract class LegacySplitScreenTransition(protected val testSpec: FlickerTestPa } } - @Presubmit + @FlakyTest(bugId = 178447631) @Test open fun visibleLayersShownMoreThanOneConsecutiveEntry() { testSpec.assertLayers { diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/OpenAppToLegacySplitScreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/OpenAppToLegacySplitScreen.kt index 7cf30ec116eb..69520c291522 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/OpenAppToLegacySplitScreen.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/OpenAppToLegacySplitScreen.kt @@ -65,11 +65,6 @@ class OpenAppToLegacySplitScreen( WindowManagerStateHelper.SPLASH_SCREEN_NAME, WindowManagerStateHelper.SNAPSHOT_WINDOW_NAME) - @FlakyTest(bugId = 178447631) - @Test - override fun visibleWindowsShownMoreThanOneConsecutiveEntry() = - super.visibleWindowsShownMoreThanOneConsecutiveEntry() - @FlakyTest @Test fun appWindowBecomesVisible() = testSpec.appWindowBecomesVisible(splitScreenApp.getPackage()) @@ -90,11 +85,6 @@ class OpenAppToLegacySplitScreen( @Test fun layerBecomesVisible() = testSpec.layerBecomesVisible(splitScreenApp.getPackage()) - @FlakyTest(bugId = 178447631) - @Test - override fun visibleLayersShownMoreThanOneConsecutiveEntry() = - super.visibleLayersShownMoreThanOneConsecutiveEntry() - @FlakyTest(bugId = 151179149) @Test fun focusChanges() = testSpec.focusChanges(splitScreenApp.`package`, diff --git a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ResizeLegacySplitScreen.kt b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ResizeLegacySplitScreen.kt index 33ade38d0373..ecbb887e2f9b 100644 --- a/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ResizeLegacySplitScreen.kt +++ b/libs/WindowManager/Shell/tests/flicker/src/com/android/wm/shell/flicker/legacysplitscreen/ResizeLegacySplitScreen.kt @@ -104,13 +104,6 @@ class ResizeLegacySplitScreen( @Test fun statusBarWindowIsAlwaysVisible() = testSpec.statusBarWindowIsAlwaysVisible() - @Test - override fun visibleWindowsShownMoreThanOneConsecutiveEntry() { - testSpec.assertWm { - this.visibleWindowsShownMoreThanOneConsecutiveEntry() - } - } - @FlakyTest(bugId = 156223549) @Test fun topAppWindowIsAlwaysVisible() { @@ -145,10 +138,6 @@ class ResizeLegacySplitScreen( testSpec.statusBarLayerRotatesScales(testSpec.config.endRotation) @Test - override fun visibleLayersShownMoreThanOneConsecutiveEntry() = - super.visibleLayersShownMoreThanOneConsecutiveEntry() - - @Test fun topAppLayerIsAlwaysVisible() { testSpec.assertLayers { this.isVisible(sSimpleActivity) diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepositoryTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepositoryTest.kt index 2f064ac95204..0972cf2c032f 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepositoryTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubblePersistentRepositoryTest.kt @@ -18,8 +18,10 @@ package com.android.wm.shell.bubbles.storage import android.app.ActivityTaskManager.INVALID_TASK_ID import android.testing.AndroidTestingRunner +import android.util.SparseArray import androidx.test.filters.SmallTest import com.android.wm.shell.ShellTestCase +import com.android.wm.shell.bubbles.storage.BubbleXmlHelperTest.Companion.sparseArraysEqual import junit.framework.Assert.assertEquals import junit.framework.Assert.assertNotNull import junit.framework.Assert.assertTrue @@ -31,19 +33,32 @@ import org.junit.runner.RunWith @RunWith(AndroidTestingRunner::class) class BubblePersistentRepositoryTest : ShellTestCase() { - private val bubbles = listOf( - // user, package, shortcut, notification key, height, res-height, title, taskId, locusId - BubbleEntity(0, "com.example.messenger", "shortcut-1", "key-1", 120, 0, null, 1, null), - BubbleEntity(10, "com.example.chat", "alice and bob", "key-2", 0, 16537428, "title", - 2, null), - BubbleEntity(0, "com.example.messenger", "shortcut-2", "key-3", 120, 0, null, - INVALID_TASK_ID, "key-3") + // user, package, shortcut, notification key, height, res-height, title, taskId, locusId + private val user0Bubbles = listOf( + BubbleEntity(0, "com.example.messenger", "shortcut-1", "0k1", 120, 0, null, 1, null), + BubbleEntity(10, "com.example.chat", "alice and bob", "0k2", 0, 16537428, "title", 2, + null), + BubbleEntity(0, "com.example.messenger", "shortcut-2", "0k3", 120, 0, null, + INVALID_TASK_ID, null) ) + + private val user1Bubbles = listOf( + BubbleEntity(1, "com.example.messenger", "shortcut-1", "1k1", 120, 0, null, 3, null), + BubbleEntity(12, "com.example.chat", "alice and bob", "1k2", 0, 16537428, "title", 4, + null), + BubbleEntity(1, "com.example.messenger", "shortcut-2", "1k3", 120, 0, null, + INVALID_TASK_ID, null) + ) + + private val bubbles = SparseArray<List<BubbleEntity>>() + private lateinit var repository: BubblePersistentRepository @Before fun setup() { repository = BubblePersistentRepository(mContext) + bubbles.put(0, user0Bubbles) + bubbles.put(1, user1Bubbles) } @Test @@ -51,9 +66,9 @@ class BubblePersistentRepositoryTest : ShellTestCase() { // Verify read before write doesn't cause FileNotFoundException val actual = repository.readFromDisk() assertNotNull(actual) - assertTrue(actual.isEmpty()) + assertEquals(actual.size(), 0) repository.persistsToDisk(bubbles) - assertEquals(bubbles, repository.readFromDisk()) + assertTrue(sparseArraysEqual(bubbles, repository.readFromDisk())) } }
\ No newline at end of file diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepositoryTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepositoryTest.kt index 03aa6c2eba12..bfdf5208bbf0 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepositoryTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleVolatileRepositoryTest.kt @@ -21,32 +21,40 @@ import android.content.pm.LauncherApps import android.os.UserHandle import android.testing.AndroidTestingRunner import androidx.test.filters.SmallTest +import org.junit.Test import com.android.wm.shell.ShellTestCase import junit.framework.Assert.assertEquals import org.junit.Before -import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.eq +import org.mockito.Mockito import org.mockito.Mockito.mock import org.mockito.Mockito.verify -import org.mockito.Mockito.verifyNoMoreInteractions +import org.mockito.Mockito.reset @SmallTest @RunWith(AndroidTestingRunner::class) class BubbleVolatileRepositoryTest : ShellTestCase() { private val user0 = UserHandle.of(0) - private val user10 = UserHandle.of(10) + private val user10_managed = UserHandle.of(10) // In test, acts as workprofile of user0 + private val user11 = UserHandle.of(11) // user, package, shortcut, notification key, height, res-height, title, taskId, locusId - private val bubble1 = BubbleEntity(0, "com.example.messenger", "shortcut-1", "key-1", 120, 0, - null, 1, null) + private val bubble1 = BubbleEntity(0, "com.example.messenger", "shortcut-1", + "0key-1", 120, 0, null, 1, null) private val bubble2 = BubbleEntity(10, "com.example.chat", "alice and bob", - "key-2", 0, 16537428, "title", 2, null) - private val bubble3 = BubbleEntity(0, "com.example.messenger", "shortcut-2", "key-3", 120, 0, - null, INVALID_TASK_ID, "key-3") + "10key-2", 0, 16537428, "title", 2, null) + private val bubble3 = BubbleEntity(0, "com.example.messenger", "shortcut-2", + "0key-3", 120, 0, null, INVALID_TASK_ID, null) - private val bubbles = listOf(bubble1, bubble2, bubble3) + private val bubble11 = BubbleEntity(11, "com.example.messenger", + "shortcut-1", "01key-1", 120, 0, null, 3) + private val bubble12 = BubbleEntity(11, "com.example.chat", "alice and bob", + "11key-2", 0, 16537428, "title", INVALID_TASK_ID) + + private val user0bubbles = listOf(bubble1, bubble2, bubble3) + private val user11bubbles = listOf(bubble11, bubble12) private lateinit var repository: BubbleVolatileRepository private lateinit var launcherApps: LauncherApps @@ -59,51 +67,74 @@ class BubbleVolatileRepositoryTest : ShellTestCase() { @Test fun testAddBubbles() { - repository.addBubbles(bubbles) - assertEquals(bubbles, repository.bubbles) + repository.addBubbles(user0.identifier, user0bubbles) + repository.addBubbles(user11.identifier, user11bubbles) + + assertEquals(user0bubbles, repository.getEntities(user0.identifier).toList()) + assertEquals(user11bubbles, repository.getEntities(user11.identifier).toList()) + verify(launcherApps).cacheShortcuts(eq(PKG_MESSENGER), eq(listOf("shortcut-1", "shortcut-2")), eq(user0), eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS)) verify(launcherApps).cacheShortcuts(eq(PKG_CHAT), - eq(listOf("alice and bob")), eq(user10), + eq(listOf("alice and bob")), eq(user10_managed), + eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS)) + + verify(launcherApps).cacheShortcuts(eq(PKG_MESSENGER), + eq(listOf("shortcut-1")), eq(user11), + eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS)) + verify(launcherApps).cacheShortcuts(eq(PKG_CHAT), + eq(listOf("alice and bob")), eq(user11), eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS)) - repository.addBubbles(listOf(bubble1)) - assertEquals(listOf(bubble2, bubble3, bubble1), repository.bubbles) - verifyNoMoreInteractions(launcherApps) + repository.addBubbles(user0.identifier, listOf(bubble1)) + assertEquals(listOf(bubble2, bubble3, bubble1), repository.getEntities(user0.identifier)) + + repository.addBubbles(user11.identifier, listOf(bubble12)) + assertEquals(listOf(bubble11, bubble12), repository.getEntities(user11.identifier)) + + Mockito.verifyNoMoreInteractions(launcherApps) } @Test fun testRemoveBubbles() { - repository.addBubbles(bubbles) - assertEquals(bubbles, repository.bubbles) + repository.addBubbles(user0.identifier, user0bubbles) + repository.addBubbles(user11.identifier, user11bubbles) - repository.removeBubbles(listOf(bubble3)) - assertEquals(listOf(bubble1, bubble2), repository.bubbles) + repository.removeBubbles(user0.identifier, listOf(bubble3)) + assertEquals(listOf(bubble1, bubble2), repository.getEntities(user0.identifier).toList()) verify(launcherApps).uncacheShortcuts(eq(PKG_MESSENGER), eq(listOf("shortcut-2")), eq(user0), eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS)) + + reset(launcherApps) + + repository.removeBubbles(user11.identifier, listOf(bubble12)) + assertEquals(listOf(bubble11), repository.getEntities(user11.identifier).toList()) + verify(launcherApps).uncacheShortcuts(eq(PKG_CHAT), + eq(listOf("alice and bob")), eq(user11), + eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS)) } @Test fun testAddAndRemoveBubblesWhenExceedingCapacity() { repository.capacity = 2 // push bubbles beyond capacity - repository.addBubbles(bubbles) + repository.addBubbles(user0.identifier, user0bubbles) // verify it is trim down to capacity - assertEquals(listOf(bubble2, bubble3), repository.bubbles) + assertEquals(listOf(bubble2, bubble3), repository.getEntities(user0.identifier).toList()) verify(launcherApps).cacheShortcuts(eq(PKG_MESSENGER), eq(listOf("shortcut-2")), eq(user0), eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS)) verify(launcherApps).cacheShortcuts(eq(PKG_CHAT), - eq(listOf("alice and bob")), eq(user10), + eq(listOf("alice and bob")), eq(user10_managed), eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS)) - repository.addBubbles(listOf(bubble1)) - // verify the oldest bubble is popped - assertEquals(listOf(bubble3, bubble1), repository.bubbles) + repository.addBubbles(user0.identifier, listOf(bubble1)) + // verify the oldest bubble is popped 2, 3 + assertEquals(listOf(bubble3, bubble1), repository.getEntities(user0.identifier).toList()) verify(launcherApps).uncacheShortcuts(eq(PKG_CHAT), - eq(listOf("alice and bob")), eq(user10), + eq(listOf("alice and bob")), eq(user10_managed), eq(LauncherApps.FLAG_CACHE_BUBBLE_SHORTCUTS)) } @@ -111,14 +142,14 @@ class BubbleVolatileRepositoryTest : ShellTestCase() { fun testAddBubbleMatchesByKey() { val bubble = BubbleEntity(0, "com.example.pkg", "shortcut-id", "key", 120, 0, "title", 1, null) - repository.addBubbles(listOf(bubble)) - assertEquals(bubble, repository.bubbles.get(0)) + repository.addBubbles(user0.identifier, listOf(bubble)) + assertEquals(bubble, repository.getEntities(user0.identifier).get(0)) // Same key as first bubble but different entry val bubbleModified = BubbleEntity(0, "com.example.pkg", "shortcut-id", "key", 120, 0, - "different title", 2, null) - repository.addBubbles(listOf(bubbleModified)) - assertEquals(bubbleModified, repository.bubbles.get(0)) + "different title", 2) + repository.addBubbles(user0.identifier, listOf(bubbleModified)) + assertEquals(bubbleModified, repository.getEntities(user0.identifier).get(0)) } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelperTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelperTest.kt index 8d719e7a7378..4ab9f87dbbf6 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelperTest.kt +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/bubbles/storage/BubbleXmlHelperTest.kt @@ -18,10 +18,12 @@ package com.android.wm.shell.bubbles.storage import android.app.ActivityTaskManager.INVALID_TASK_ID import android.testing.AndroidTestingRunner +import android.util.SparseArray import androidx.test.filters.SmallTest import com.android.wm.shell.ShellTestCase import junit.framework.Assert.assertEquals import junit.framework.Assert.assertTrue +import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import java.io.ByteArrayInputStream @@ -31,21 +33,65 @@ import java.io.ByteArrayOutputStream @RunWith(AndroidTestingRunner::class) class BubbleXmlHelperTest : ShellTestCase() { - private val bubbles = listOf( - // user, package, shortcut, notification key, height, res-height, title, taskId, locusId - BubbleEntity(0, "com.example.messenger", "shortcut-1", "k1", 120, 0, null, 1), - BubbleEntity(10, "com.example.chat", "alice and bob", "k2", 0, 16537428, "title", - 2, null), - BubbleEntity(0, "com.example.messenger", "shortcut-2", "k3", 120, 0, null, + private val user0Bubbles = listOf( + BubbleEntity(0, "com.example.messenger", "shortcut-1", "0k1", 120, 0, null, 1), + BubbleEntity(10, "com.example.chat", "alice and bob", "0k2", 0, 16537428, "title", 2, + null), + BubbleEntity(0, "com.example.messenger", "shortcut-2", "0k3", 120, 0, null, INVALID_TASK_ID, "l3") ) + private val user1Bubbles = listOf( + BubbleEntity(1, "com.example.messenger", "shortcut-1", "1k1", 120, 0, null, 3), + BubbleEntity(12, "com.example.chat", "alice and bob", "1k2", 0, 16537428, "title", 4, + null), + BubbleEntity(1, "com.example.messenger", "shortcut-2", "1k3", 120, 0, null, + INVALID_TASK_ID, "l4") + ) + + private val bubbles = SparseArray<List<BubbleEntity>>() + + // Checks that the contents of the two sparse arrays are the same. + companion object { + fun sparseArraysEqual( + one: SparseArray<List<BubbleEntity>>?, + two: SparseArray<List<BubbleEntity>>? + ): Boolean { + if (one == null && two == null) return true + if ((one == null) != (two == null)) return false + if (one!!.size() != two!!.size()) return false + for (i in 0 until one.size()) { + val k1 = one.keyAt(i) + val v1 = one.valueAt(i) + val k2 = two.keyAt(i) + val v2 = two.valueAt(i) + if (k1 != k2 && v1 != v2) { + return false + } + } + return true + } + } + + @Before + fun setup() { + bubbles.put(0, user0Bubbles) + bubbles.put(1, user1Bubbles) + } + @Test fun testWriteXml() { val expectedEntries = """ -<bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="k1" h="120" hid="0" tid="1" /> -<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="k2" h="0" hid="16537428" t="title" tid="2" /> -<bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="k3" h="120" hid="0" tid="-1" l="l3" /> +<bs uid="0"> +<bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="0k1" h="120" hid="0" tid="1" /> +<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="0k2" h="0" hid="16537428" t="title" tid="2" /> +<bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="0k3" h="120" hid="0" tid="-1" l="l3" /> +</bs> +<bs uid="1"> +<bb uid="1" pkg="com.example.messenger" sid="shortcut-1" key="1k1" h="120" hid="0" tid="3" /> +<bb uid="12" pkg="com.example.chat" sid="alice and bob" key="1k2" h="0" hid="16537428" t="title" tid="4" /> +<bb uid="1" pkg="com.example.messenger" sid="shortcut-2" key="1k3" h="120" hid="0" tid="-1" l="l4" /> +</bs> """.trimIndent() ByteArrayOutputStream().use { writeXml(it, bubbles) @@ -59,19 +105,26 @@ class BubbleXmlHelperTest : ShellTestCase() { fun testReadXml() { val src = """ <?xml version='1.0' encoding='utf-8' standalone='yes' ?> -<bs v="1"> -<bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="k1" h="120" hid="0" tid="1" /> -<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="k2" h="0" hid="16537428" t="title" tid="2" /> -<bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="k3" h="120" hid="0" tid="-1" l="l3" /> +<bs v="2"> +<bs uid="0"> +<bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="0k1" h="120" hid="0" tid="1" /> +<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="0k2" h="0" hid="16537428" t="title" tid="2" /> +<bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="0k3" h="120" hid="0" tid="-1" l="l3" /> +</bs> +<bs uid="1"> +<bb uid="1" pkg="com.example.messenger" sid="shortcut-1" key="1k1" h="120" hid="0" tid="3" /> +<bb uid="12" pkg="com.example.chat" sid="alice and bob" key="1k2" h="0" hid="16537428" t="title" tid="4" /> +<bb uid="1" pkg="com.example.messenger" sid="shortcut-2" key="1k3" h="120" hid="0" tid="-1" l="l4" /> +</bs> </bs> """.trimIndent() val actual = readXml(ByteArrayInputStream(src.toByteArray(Charsets.UTF_8))) - assertEquals("failed parsing bubbles from xml\n$src", bubbles, actual) + assertTrue("failed parsing bubbles from xml\n$src", sparseArraysEqual(bubbles, actual)) } - // TODO: We should handle upgrades gracefully but this is v1 + // V0 -> V1 happened prior to release / during dogfood so nothing is saved @Test - fun testUpgradeDropsPreviousData() { + fun testUpgradeFromV0DropsPreviousData() { val src = """ <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <bs> @@ -81,7 +134,7 @@ class BubbleXmlHelperTest : ShellTestCase() { </bs> """.trimIndent() val actual = readXml(ByteArrayInputStream(src.toByteArray(Charsets.UTF_8))) - assertEquals("failed parsing bubbles from xml\n$src", emptyList<BubbleEntity>(), actual) + assertEquals("failed parsing bubbles from xml\n$src", 0, actual.size()) } /** @@ -91,24 +144,25 @@ class BubbleXmlHelperTest : ShellTestCase() { */ @Test fun testReadXMLWithoutTaskId() { - val expectedBubbles = listOf( - BubbleEntity(0, "com.example.messenger", "shortcut-1", "k1", 120, 0, null, - INVALID_TASK_ID), - BubbleEntity(10, "com.example.chat", "alice and bob", "k2", 0, 16537428, "title", - INVALID_TASK_ID), - BubbleEntity(0, "com.example.messenger", "shortcut-2", "k3", 120, 0, null, - INVALID_TASK_ID) - ) + val expectedBubbles = SparseArray<List<BubbleEntity>>() + expectedBubbles.put(0, listOf( + BubbleEntity(0, "com.example.messenger", "shortcut-1", "k1", 120, 0, + null, INVALID_TASK_ID), + BubbleEntity(0, "com.example.messenger", "shortcut-2", "k3", 120, 0, + null, INVALID_TASK_ID)) + ) val src = """ <?xml version='1.0' encoding='utf-8' standalone='yes' ?> -<bs v="1"> +<bs v="2"> +<bs uid="0"> <bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="k1" h="120" hid="0" /> -<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="k2" h="0" hid="16537428" t="title" /> <bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="k3" h="120" hid="0" /> </bs> +</bs> """.trimIndent() val actual = readXml(ByteArrayInputStream(src.toByteArray(Charsets.UTF_8))) - assertEquals("failed parsing bubbles from xml\n$src", expectedBubbles, actual) + assertTrue("failed parsing bubbles from xml\n$src", + sparseArraysEqual(expectedBubbles, actual)) } /** @@ -117,23 +171,45 @@ class BubbleXmlHelperTest : ShellTestCase() { */ @Test fun testXMLWithoutLocusToLocus() { - val expectedBubbles = listOf( - BubbleEntity(0, "com.example.messenger", "shortcut-1", "k1", 120, 0, null, - INVALID_TASK_ID, null), - BubbleEntity(10, "com.example.chat", "alice and bob", "k2", 0, 16537428, "title", - INVALID_TASK_ID, null), - BubbleEntity(0, "com.example.messenger", "shortcut-2", "k3", 120, 0, null, - INVALID_TASK_ID, null) + val expectedBubbles = SparseArray<List<BubbleEntity>>() + expectedBubbles.put(0, listOf( + BubbleEntity(0, "com.example.messenger", "shortcut-1", "k1", 120, 0, + null, INVALID_TASK_ID), + BubbleEntity(0, "com.example.messenger", "shortcut-2", "k3", 120, 0, + null, INVALID_TASK_ID)) ) val src = """ <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <bs v="1"> <bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="k1" h="120" hid="0" /> -<bb uid="10" pkg="com.example.chat" sid="alice and bob" key="k2" h="0" hid="16537428" t="title" /> <bb uid="0" pkg="com.example.messenger" sid="shortcut-2" key="k3" h="120" hid="0" /> </bs> """.trimIndent() val actual = readXml(ByteArrayInputStream(src.toByteArray(Charsets.UTF_8))) - assertEquals("failed parsing bubbles from xml\n$src", expectedBubbles, actual) + assertTrue("failed parsing bubbles from xml\n$src", + sparseArraysEqual(expectedBubbles, actual)) + } + + @Test + fun testUpgradeToV2SavesPreviousData() { + val src = """ + <?xml version='1.0' encoding='utf-8' standalone='yes' ?> + <bs v="1"> + <bb uid="0" pkg="com.example.messenger" sid="shortcut-1" key="k1" h="120" hid="0" /> + <bb uid="10" pkg="com.example.chat" sid="alice and bob" key="k2" h="0" hid="16537428" t="title" /> + <bb uid="2" pkg="com.example.messenger" sid="shortcut-2" key="k3" h="120" hid="0" /> + <bb uid="0" pkg="com.example.messenger" sid="shortcut-4" key="k4" h="0" hid="16537428" /> + </bs> + """.trimIndent() + val expectedBubbles = SparseArray<List<BubbleEntity>>() + expectedBubbles.put(0, listOf( + BubbleEntity(0, "com.example.messenger", "shortcut-1", "k1", 120, 0, + null, INVALID_TASK_ID, null), + BubbleEntity(0, "com.example.messenger", "shortcut-4", "k4", 0, 16537428, + null, INVALID_TASK_ID, null)) + ) + val actual = readXml(ByteArrayInputStream(src.toByteArray(Charsets.UTF_8))) + assertTrue("failed parsing bubbles from xml\n$src", + sparseArraysEqual(expectedBubbles, actual)) } }
\ No newline at end of file diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java index dea24d3c2ec0..a6215d3347a8 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipBoundsStateTest.java @@ -38,6 +38,8 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; +import java.util.function.Consumer; + /** * Tests for {@link PipBoundsState}. */ @@ -178,4 +180,20 @@ public class PipBoundsStateTest extends ShellTestCase { mPipBoundsState.setOverrideMinSize(new Size(15, 10)); assertEquals(10, mPipBoundsState.getOverrideMinEdgeSize()); } + + @Test + public void testSetBounds_updatesPipExclusionBounds() { + final Consumer<Rect> callback = mock(Consumer.class); + final Rect currentBounds = new Rect(10, 10, 20, 15); + final Rect newBounds = new Rect(50, 50, 100, 75); + mPipBoundsState.setBounds(currentBounds); + + mPipBoundsState.setPipExclusionBoundsChangeCallback(callback); + // Setting the listener immediately calls back with the current bounds. + verify(callback).accept(currentBounds); + + mPipBoundsState.setBounds(newBounds); + // Updating the bounds makes the listener call back back with the new rect. + verify(callback).accept(newBounds); + } } diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java index 5df391f919a7..9d7c82bb8550 100644 --- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java +++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/pip/PipTaskOrganizerTest.java @@ -19,6 +19,7 @@ package com.android.wm.shell.pip; import static com.android.wm.shell.pip.PipAnimationController.TRANSITION_DIRECTION_TO_PIP; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; @@ -31,6 +32,7 @@ import android.app.ActivityManager; import android.app.PictureInPictureParams; import android.content.ComponentName; import android.content.pm.ActivityInfo; +import android.graphics.Rect; import android.os.RemoteException; import android.test.suitebuilder.annotation.SmallTest; import android.testing.AndroidTestingRunner; @@ -222,6 +224,16 @@ public class PipTaskOrganizerTest extends ShellTestCase { assertEquals(minSize, mPipBoundsState.getOverrideMinSize()); } + @Test + public void onTaskVanished_clearsPipBounds() { + mSpiedPipTaskOrganizer.onTaskAppeared(createTaskInfo(mComponent1, + createPipParams(null)), null /* leash */); + mPipBoundsState.setBounds(new Rect(100, 100, 200, 150)); + + mSpiedPipTaskOrganizer.onTaskVanished(createTaskInfo(mComponent1, createPipParams(null))); + assertTrue(mPipBoundsState.getBounds().isEmpty()); + } + private void preparePipTaskOrg() { final DisplayInfo info = new DisplayInfo(); mPipBoundsState.setDisplayLayout(new DisplayLayout(info, diff --git a/location/java/android/location/Location.java b/location/java/android/location/Location.java index 5f8d795cd654..1e8b9521e41e 100644 --- a/location/java/android/location/Location.java +++ b/location/java/android/location/Location.java @@ -508,15 +508,23 @@ public class Location implements Parcelable { /** * Return the UTC time of this location fix, in milliseconds since epoch (January 1, 1970). * - * <p>Note that the UTC time on a device is not monotonic; it can jump forwards or backwards - * unpredictably, so this time should not be used to calculate time deltas between locations. - * Instead prefer {@link #getElapsedRealtimeNanos} for that purpose. + * <p>There is no guarantee that different locations have times set from the same clock. + * Locations derived from the {@link LocationManager#GPS_PROVIDER} are guaranteed to have their + * time set from the clock in use by the satellite constellation that provided the fix. + * Locations derived from other providers may use any clock to set their time, though it is most + * common to use the device clock (which may be incorrect). * - * <p>On the other hand, this method is useful for presenting a human readable time to the user, - * or for carefully comparing location fixes across reboot or across devices. + * <p>Note that the device clock UTC time is not monotonic; it can jump forwards or backwards + * unpredictably and may be changed at any time by the user, so this time should not be used to + * order or compare locations. Prefer {@link #getElapsedRealtimeNanos} for that purpose, as this + * clock is guaranteed to be monotonic. * - * <p>All locations generated by the {@link LocationManager} are guaranteed to have a UTC time, - * however remember that the system time may have changed since the location was generated. + * <p>On the other hand, this method may be useful for presenting a human readable time to the + * user, or as a heuristic for comparing location fixes across reboot or across devices. + * + * <p>All locations generated by the {@link LocationManager} are guaranteed to have a UTC time + * set, however remember that the device clock may have changed since the location was + * generated. * * @return UTC time of fix, in milliseconds since January 1, 1970. */ @@ -534,53 +542,60 @@ public class Location implements Parcelable { } /** - * Return the time of this fix, in elapsed real-time since system boot. + * Return the time of this fix in nanoseconds of elapsed realtime since system boot. * - * <p>This value can be reliably compared to - * {@link android.os.SystemClock#elapsedRealtimeNanos}, - * to calculate the age of a fix and to compare Location fixes. This - * is reliable because elapsed real-time is guaranteed monotonic for - * each system boot and continues to increment even when the system - * is in deep sleep (unlike {@link #getTime}. + * <p>This value can be compared with {@link android.os.SystemClock#elapsedRealtimeNanos}, to + * reliably order or compare locations. This is reliable because elapsed realtime is guaranteed + * to be monotonic and continues to increment even when the system is in deep sleep (unlike + * {@link #getTime}). However, since elapsed realtime is with reference to system boot, it does + * not make sense to use this value to order or compare locations across boot cycles. * - * <p>All locations generated by the {@link LocationManager} - * are guaranteed to have a valid elapsed real-time. + * <p>All locations generated by the {@link LocationManager} are guaranteed to have a valid + * elapsed realtime set. * - * @return elapsed real-time of fix, in nanoseconds since system boot. + * @return elapsed realtime of fix, in nanoseconds since system boot. */ public long getElapsedRealtimeNanos() { return mElapsedRealtimeNanos; } - /** @hide */ + /** + * Return the time of this fix in milliseconds of elapsed realtime since system boot. + * + * @see #getElapsedRealtimeNanos() + * + * @hide + */ public long getElapsedRealtimeMillis() { return NANOSECONDS.toMillis(getElapsedRealtimeNanos()); } - /** @hide */ - public long getElapsedRealtimeAgeNanos(long referenceRealtimeNs) { - return referenceRealtimeNs - mElapsedRealtimeNanos; - } - - /** @hide */ - public long getElapsedRealtimeAgeNanos() { - return getElapsedRealtimeAgeNanos(SystemClock.elapsedRealtimeNanos()); - } - - /** @hide */ + /** + * Returns the age of this fix with respect to the current elapsed realtime. + * + * @see #getElapsedRealtimeNanos() + * + * @hide + */ public long getElapsedRealtimeAgeMillis() { return getElapsedRealtimeAgeMillis(SystemClock.elapsedRealtime()); } - /** @hide */ + /** + * Returns the age of this fix with respect to the given elapsed realtime. + * + * @see #getElapsedRealtimeNanos() + * + * @hide + */ public long getElapsedRealtimeAgeMillis(long referenceRealtimeMs) { return referenceRealtimeMs - NANOSECONDS.toMillis(mElapsedRealtimeNanos); } /** - * Set the time of this fix, in elapsed real-time since system boot. + * Set the time of this fix, in elapsed realtime since system boot. * - * @param time elapsed real-time of fix, in nanoseconds since system boot. + * @param time elapsed realtime of fix, in nanoseconds since system boot. */ public void setElapsedRealtimeNanos(long time) { mElapsedRealtimeNanos = time; @@ -1143,7 +1158,7 @@ public class Location implements Parcelable { s.append(" bAcc=").append(mBearingAccuracyDegrees); } } - if (isFromMockProvider()) { + if (isMock()) { s.append(" mock"); } @@ -1293,12 +1308,12 @@ public class Location implements Parcelable { * and {@link #bearingTo} don't duplicate work. */ private static class BearingDistanceCache { - private double mLat1 = 0.0; - private double mLon1 = 0.0; - private double mLat2 = 0.0; - private double mLon2 = 0.0; - private float mDistance = 0.0f; - private float mInitialBearing = 0.0f; - private float mFinalBearing = 0.0f; + double mLat1 = 0.0; + double mLon1 = 0.0; + double mLat2 = 0.0; + double mLon2 = 0.0; + float mDistance = 0.0f; + float mInitialBearing = 0.0f; + float mFinalBearing = 0.0f; } } diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java index f1879fc4c5d8..c1d672524ac5 100644 --- a/location/java/android/location/LocationManager.java +++ b/location/java/android/location/LocationManager.java @@ -1953,7 +1953,7 @@ public class LocationManager { /** * Sets a new location for the given test provider. This location will be identiable as a mock - * location to all clients via {@link Location#isFromMockProvider()}. + * location to all clients via {@link Location#isMock()}. * * <p>The location object must have a minimum number of fields set to be considered valid, as * per documentation on {@link Location} class. diff --git a/media/java/android/media/AudioFormat.java b/media/java/android/media/AudioFormat.java index 3a8678625b5a..0943595f31d9 100644 --- a/media/java/android/media/AudioFormat.java +++ b/media/java/android/media/AudioFormat.java @@ -434,6 +434,18 @@ public final class AudioFormat implements Parcelable { public static final int CHANNEL_OUT_TOP_BACK_CENTER = 0x40000; /** @hide */ public static final int CHANNEL_OUT_TOP_BACK_RIGHT = 0x80000; + /** @hide */ + public static final int CHANNEL_OUT_TOP_SIDE_LEFT = 0x100000; + /** @hide */ + public static final int CHANNEL_OUT_TOP_SIDE_RIGHT = 0x200000; + /** @hide */ + public static final int CHANNEL_OUT_BOTTOM_FRONT_LEFT = 0x400000; + /** @hide */ + public static final int CHANNEL_OUT_BOTTOM_FRONT_CENTER = 0x800000; + /** @hide */ + public static final int CHANNEL_OUT_BOTTOM_FRONT_RIGHT = 0x1000000; + /** @hide */ + public static final int CHANNEL_OUT_LOW_FREQUENCY_2 = 0x2000000; public static final int CHANNEL_OUT_MONO = CHANNEL_OUT_FRONT_LEFT; public static final int CHANNEL_OUT_STEREO = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT); @@ -463,6 +475,38 @@ public final class AudioFormat implements Parcelable { CHANNEL_OUT_SIDE_LEFT | CHANNEL_OUT_SIDE_RIGHT | CHANNEL_OUT_BACK_LEFT | CHANNEL_OUT_BACK_RIGHT | CHANNEL_OUT_LOW_FREQUENCY); + /** @hide */ + public static final int CHANNEL_OUT_5POINT1POINT2 = (CHANNEL_OUT_5POINT1 | + CHANNEL_OUT_TOP_SIDE_LEFT | CHANNEL_OUT_TOP_SIDE_RIGHT); + /** @hide */ + public static final int CHANNEL_OUT_5POINT1POINT4 = (CHANNEL_OUT_5POINT1 | + CHANNEL_OUT_TOP_FRONT_LEFT | CHANNEL_OUT_TOP_FRONT_RIGHT | + CHANNEL_OUT_TOP_BACK_LEFT | CHANNEL_OUT_TOP_BACK_RIGHT); + /** @hide */ + public static final int CHANNEL_OUT_7POINT1POINT2 = (CHANNEL_OUT_7POINT1_SURROUND | + CHANNEL_OUT_TOP_SIDE_LEFT | CHANNEL_OUT_TOP_SIDE_RIGHT); + /** @hide */ + public static final int CHANNEL_OUT_7POINT1POINT4 = (CHANNEL_OUT_7POINT1_SURROUND | + CHANNEL_OUT_TOP_FRONT_LEFT | CHANNEL_OUT_TOP_FRONT_RIGHT | + CHANNEL_OUT_TOP_BACK_LEFT | CHANNEL_OUT_TOP_BACK_RIGHT); + /** @hide */ + public static final int CHANNEL_OUT_13POINT_360RA = ( + CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_CENTER | CHANNEL_OUT_FRONT_RIGHT | + CHANNEL_OUT_SIDE_LEFT | CHANNEL_OUT_SIDE_RIGHT | + CHANNEL_OUT_TOP_FRONT_LEFT | CHANNEL_OUT_TOP_FRONT_CENTER | + CHANNEL_OUT_TOP_FRONT_RIGHT | + CHANNEL_OUT_TOP_BACK_LEFT | CHANNEL_OUT_TOP_BACK_RIGHT | + CHANNEL_OUT_BOTTOM_FRONT_LEFT | CHANNEL_OUT_BOTTOM_FRONT_CENTER | + CHANNEL_OUT_BOTTOM_FRONT_RIGHT); + /** @hide */ + public static final int CHANNEL_OUT_22POINT2 = (CHANNEL_OUT_7POINT1POINT4 | + CHANNEL_OUT_FRONT_LEFT_OF_CENTER | CHANNEL_OUT_FRONT_RIGHT_OF_CENTER | + CHANNEL_OUT_BACK_CENTER | CHANNEL_OUT_TOP_CENTER | + CHANNEL_OUT_TOP_FRONT_CENTER | CHANNEL_OUT_TOP_BACK_CENTER | + CHANNEL_OUT_TOP_SIDE_LEFT | CHANNEL_OUT_TOP_SIDE_RIGHT | + CHANNEL_OUT_BOTTOM_FRONT_LEFT | CHANNEL_OUT_BOTTOM_FRONT_RIGHT | + CHANNEL_OUT_BOTTOM_FRONT_CENTER | + CHANNEL_OUT_LOW_FREQUENCY_2); // CHANNEL_OUT_ALL is not yet defined; if added then it should match AUDIO_CHANNEL_OUT_ALL /** Minimum value for sample rate, diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java index 2ea098408d50..b2b2f8e902bf 100644 --- a/media/java/android/media/AudioTrack.java +++ b/media/java/android/media/AudioTrack.java @@ -45,6 +45,7 @@ import java.lang.ref.WeakReference; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.NioUtils; +import java.util.HashMap; import java.util.LinkedList; import java.util.Objects; import java.util.concurrent.Executor; @@ -1595,9 +1596,24 @@ public class AudioTrack extends PlayerBase AudioFormat.CHANNEL_OUT_LOW_FREQUENCY | AudioFormat.CHANNEL_OUT_BACK_LEFT | AudioFormat.CHANNEL_OUT_BACK_RIGHT | + AudioFormat.CHANNEL_OUT_FRONT_LEFT_OF_CENTER | + AudioFormat.CHANNEL_OUT_FRONT_RIGHT_OF_CENTER | AudioFormat.CHANNEL_OUT_BACK_CENTER | AudioFormat.CHANNEL_OUT_SIDE_LEFT | - AudioFormat.CHANNEL_OUT_SIDE_RIGHT; + AudioFormat.CHANNEL_OUT_SIDE_RIGHT | + AudioFormat.CHANNEL_OUT_TOP_CENTER | + AudioFormat.CHANNEL_OUT_TOP_FRONT_LEFT | + AudioFormat.CHANNEL_OUT_TOP_FRONT_CENTER | + AudioFormat.CHANNEL_OUT_TOP_FRONT_RIGHT | + AudioFormat.CHANNEL_OUT_TOP_BACK_LEFT | + AudioFormat.CHANNEL_OUT_TOP_BACK_CENTER | + AudioFormat.CHANNEL_OUT_TOP_BACK_RIGHT | + AudioFormat.CHANNEL_OUT_TOP_SIDE_LEFT | + AudioFormat.CHANNEL_OUT_TOP_SIDE_RIGHT | + AudioFormat.CHANNEL_OUT_BOTTOM_FRONT_LEFT | + AudioFormat.CHANNEL_OUT_BOTTOM_FRONT_CENTER | + AudioFormat.CHANNEL_OUT_BOTTOM_FRONT_RIGHT | + AudioFormat.CHANNEL_OUT_LOW_FREQUENCY_2; // Returns a boolean whether the attributes, format, bufferSizeInBytes, mode allow // power saving to be automatically enabled for an AudioTrack. Returns false if @@ -1748,6 +1764,26 @@ public class AudioTrack extends PlayerBase mDataLoadMode = mode; } + // General pair map + private static final HashMap<String, Integer> CHANNEL_PAIR_MAP = new HashMap<>() {{ + put("front", AudioFormat.CHANNEL_OUT_FRONT_LEFT + | AudioFormat.CHANNEL_OUT_FRONT_RIGHT); + put("back", AudioFormat.CHANNEL_OUT_BACK_LEFT + | AudioFormat.CHANNEL_OUT_BACK_RIGHT); + put("front of center", AudioFormat.CHANNEL_OUT_FRONT_LEFT_OF_CENTER + | AudioFormat.CHANNEL_OUT_FRONT_RIGHT_OF_CENTER); + put("side", AudioFormat.CHANNEL_OUT_SIDE_LEFT + | AudioFormat.CHANNEL_OUT_SIDE_RIGHT); + put("top front", AudioFormat.CHANNEL_OUT_TOP_FRONT_LEFT + | AudioFormat.CHANNEL_OUT_TOP_FRONT_RIGHT); + put("top back", AudioFormat.CHANNEL_OUT_TOP_BACK_LEFT + | AudioFormat.CHANNEL_OUT_TOP_BACK_RIGHT); + put("top side", AudioFormat.CHANNEL_OUT_TOP_SIDE_LEFT + | AudioFormat.CHANNEL_OUT_TOP_SIDE_RIGHT); + put("bottom front", AudioFormat.CHANNEL_OUT_BOTTOM_FRONT_LEFT + | AudioFormat.CHANNEL_OUT_BOTTOM_FRONT_RIGHT); + }}; + /** * Convenience method to check that the channel configuration (a.k.a channel mask) is supported * @param channelConfig the mask to validate @@ -1774,21 +1810,15 @@ public class AudioTrack extends PlayerBase loge("Front channels must be present in multichannel configurations"); return false; } - final int backPair = - AudioFormat.CHANNEL_OUT_BACK_LEFT | AudioFormat.CHANNEL_OUT_BACK_RIGHT; - if ((channelConfig & backPair) != 0) { - if ((channelConfig & backPair) != backPair) { - loge("Rear channels can't be used independently"); + // Check all pairs to see that they are matched (front duplicated here). + for (HashMap.Entry<String, Integer> e : CHANNEL_PAIR_MAP.entrySet()) { + final int positionPair = e.getValue(); + if ((channelConfig & positionPair) != 0 + && (channelConfig & positionPair) != positionPair) { + loge("Channel pair (" + e.getKey() + ") cannot be used independently"); return false; } } - final int sidePair = - AudioFormat.CHANNEL_OUT_SIDE_LEFT | AudioFormat.CHANNEL_OUT_SIDE_RIGHT; - if ((channelConfig & sidePair) != 0 - && (channelConfig & sidePair) != sidePair) { - loge("Side channels can't be used independently"); - return false; - } return true; } diff --git a/media/java/android/media/IMediaRouterService.aidl b/media/java/android/media/IMediaRouterService.aidl index f817a3c3c353..48289ecde9e0 100644 --- a/media/java/android/media/IMediaRouterService.aidl +++ b/media/java/android/media/IMediaRouterService.aidl @@ -48,7 +48,7 @@ interface IMediaRouterService { // MediaRouterService.java for readability. // Methods for MediaRouter2 - void checkModifyAudioRoutingPermission(); + void enforceMediaContentControlPermission(); List<MediaRoute2Info> getSystemRoutes(); RoutingSessionInfo getSystemSessionInfo(); diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java index 90fa9a52f5cf..232de0b7c57f 100644 --- a/media/java/android/media/MediaRouter2.java +++ b/media/java/android/media/MediaRouter2.java @@ -18,6 +18,7 @@ package android.media; import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage; +import android.Manifest; import android.annotation.CallbackExecutor; import android.annotation.NonNull; import android.annotation.Nullable; @@ -93,7 +94,7 @@ public final class MediaRouter2 { // TODO: Specify the fields that are only used (or not used) by system media router. private final String mClientPackageName; - private final ManagerCallback mManagerCallback; + final ManagerCallback mManagerCallback; private final String mPackageName; @@ -164,13 +165,24 @@ public final class MediaRouter2 { * @hide */ @SystemApi - @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) + @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL) @Nullable public static MediaRouter2 getInstance(@NonNull Context context, @NonNull String clientPackageName) { Objects.requireNonNull(context, "context must not be null"); Objects.requireNonNull(clientPackageName, "clientPackageName must not be null"); + // Note: Even though this check could be somehow bypassed, the other permission checks + // in system server will not allow MediaRouter2Manager to be registered. + IMediaRouterService serviceBinder = IMediaRouterService.Stub.asInterface( + ServiceManager.getService(Context.MEDIA_ROUTER_SERVICE)); + try { + // SecurityException will be thrown if there's no permission. + serviceBinder.enforceMediaContentControlPermission(); + } catch (RemoteException e) { + Log.e(TAG, "Unable to check MEDIA_CONTENT_CONTROL permission."); + } + PackageManager pm = context.getPackageManager(); try { pm.getPackageInfo(clientPackageName, 0); @@ -183,20 +195,13 @@ public final class MediaRouter2 { MediaRouter2 instance = sSystemMediaRouter2Map.get(clientPackageName); if (instance == null) { if (sManager == null) { - IMediaRouterService serviceBinder = IMediaRouterService.Stub.asInterface( - ServiceManager.getService(Context.MEDIA_ROUTER_SERVICE)); - try { - // MediaRouterService will throw a SecurityException if the caller - // doesn't have MODIFY_AUDIO_ROUTING permission. - serviceBinder.checkModifyAudioRoutingPermission(); - } catch (RemoteException e) { - e.rethrowAsRuntimeException(); - } sManager = MediaRouter2Manager.getInstance(context.getApplicationContext()); } instance = new MediaRouter2(context, clientPackageName); sSystemMediaRouter2Map.put(clientPackageName, instance); - instance.registerManagerCallbackForSystemRouter(); + // Using direct executor here, since MediaRouter2Manager also posts + // to the main handler. + sManager.registerCallback(Runnable::run, instance.mManagerCallback); } return instance; } @@ -213,11 +218,15 @@ public final class MediaRouter2 { * Use {@link RouteCallback} to get the route related events. * <p> * Note that calling start/stopScan is applied to all system routers in the same process. + * <p> + * This will be no-op for non-system media routers. * * @see #stopScan() + * @see #getInstance(Context, String) * @hide */ @SystemApi + @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL) public void startScan() { if (isSystemRouter()) { sManager.startScan(); @@ -236,11 +245,15 @@ public final class MediaRouter2 { * Use {@link RouteCallback} to get the route related events. * <p> * Note that calling start/stopScan is applied to all system routers in the same process. + * <p> + * This will be no-op for non-system media routers. * * @see #startScan() + * @see #getInstance(Context, String) * @hide */ @SystemApi + @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL) public void stopScan() { if (isSystemRouter()) { sManager.stopScan(); @@ -314,7 +327,8 @@ public final class MediaRouter2 { /** * Gets the client package name of the app which this media router controls. - * This is only non-null when the router instance is created with the client package name. + * <p> + * This will return null for non-system media routers. * * @see #getInstance(Context, String) * @hide @@ -573,9 +587,25 @@ public final class MediaRouter2 { return; } - Objects.requireNonNull(route, "route must not be null"); Log.v(TAG, "Transferring to route: " + route); - transfer(getCurrentController(), route); + + boolean routeFound; + synchronized (mLock) { + // TODO: Check thread-safety + routeFound = mRoutes.containsKey(route.getId()); + } + if (!routeFound) { + notifyTransferFailure(route); + return; + } + + RoutingController controller = getCurrentController(); + if (controller.getRoutingSessionInfo().getTransferableRoutes().contains(route.getId())) { + controller.transferToRoute(route); + return; + } + + requestCreateController(controller, route, MANAGER_REQUEST_ID_NONE); } /** @@ -594,36 +624,20 @@ public final class MediaRouter2 { /** * Transfers the media of a routing controller to the given route. + * <p> + * This will be no-op for non-system media routers. + * * @param controller a routing controller controlling media routing. * @param route the route you want to transfer the media to. * @hide */ @SystemApi + @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL) public void transfer(@NonNull RoutingController controller, @NonNull MediaRoute2Info route) { if (isSystemRouter()) { sManager.transfer(controller.getRoutingSessionInfo(), route); return; } - - Objects.requireNonNull(controller, "controller must not be null"); - Objects.requireNonNull(route, "route must not be null"); - - boolean routeFound; - synchronized (mLock) { - // TODO: Check thread-safety - routeFound = mRoutes.containsKey(route.getId()); - } - if (!routeFound) { - notifyTransferFailure(route); - return; - } - - if (controller.getRoutingSessionInfo().getTransferableRoutes().contains(route.getId())) { - controller.transferToRoute(route); - return; - } - - requestCreateController(controller, route, MANAGER_REQUEST_ID_NONE); } void requestCreateController(@NonNull RoutingController controller, @@ -687,9 +701,7 @@ public final class MediaRouter2 { /** * Gets a {@link RoutingController} whose ID is equal to the given ID. * Returns {@code null} if there is no matching controller. - * @hide */ - @SystemApi @Nullable public RoutingController getController(@NonNull String id) { Objects.requireNonNull(id, "id must not be null"); @@ -739,14 +751,16 @@ public final class MediaRouter2 { /** * Requests a volume change for the route asynchronously. - * <p> * It may have no effect if the route is currently not selected. - * </p> + * <p> + * This will be no-op for non-system media routers. * * @param volume The new volume value between 0 and {@link MediaRoute2Info#getVolumeMax}. + * @see #getInstance(Context, String) * @hide */ @SystemApi + @RequiresPermission(Manifest.permission.MEDIA_CONTENT_CONTROL) public void setRouteVolume(@NonNull MediaRoute2Info route, int volume) { Objects.requireNonNull(route, "route must not be null"); @@ -754,18 +768,7 @@ public final class MediaRouter2 { sManager.setRouteVolume(route, volume); return; } - - MediaRouter2Stub stub; - synchronized (mLock) { - stub = mStub; - } - if (stub != null) { - try { - mMediaRouterService.setRouteVolumeWithRouter2(stub, route, volume); - } catch (RemoteException ex) { - Log.e(TAG, "Unable to set route volume.", ex); - } - } + // If this API needs to be public, use IMediaRouterService#setRouteVolumeWithRouter2() } void syncRoutesOnHandler(List<MediaRoute2Info> currentRoutes, @@ -1040,15 +1043,6 @@ public final class MediaRouter2 { } /** - * Registers {@link MediaRouter2Manager.Callback} for getting events. - * Should only used for system media routers. - */ - private void registerManagerCallbackForSystemRouter() { - // Using direct executor here, since MediaRouter2Manager also posts to the main handler. - sManager.registerCallback(Runnable::run, mManagerCallback); - } - - /** * Returns a {@link RoutingSessionInfo} which has the client package name. * The client package name is set only when the given sessionInfo doesn't have it. * Should only used for system media routers. @@ -1073,6 +1067,9 @@ public final class MediaRouter2 { } private void updateAllRoutesFromManager() { + if (!isSystemRouter()) { + return; + } synchronized (mLock) { mRoutes.clear(); for (MediaRoute2Info route : sManager.getAllRoutes()) { diff --git a/media/java/android/media/MediaRouter2Manager.java b/media/java/android/media/MediaRouter2Manager.java index 758a8130a62e..915cb1272040 100644 --- a/media/java/android/media/MediaRouter2Manager.java +++ b/media/java/android/media/MediaRouter2Manager.java @@ -49,6 +49,8 @@ import java.util.stream.Collectors; /** * A class that monitors and controls media routing of other apps. + * {@link android.Manifest.permission#MEDIA_CONTENT_CONTROL} is required to use this class, + * or {@link SecurityException} will be thrown. * @hide */ public final class MediaRouter2Manager { diff --git a/media/java/android/media/metrics/Event.java b/media/java/android/media/metrics/Event.java index 17218f09b5d6..4a69ac5b9bf9 100644 --- a/media/java/android/media/metrics/Event.java +++ b/media/java/android/media/metrics/Event.java @@ -32,19 +32,17 @@ public abstract class Event { mTimeSinceCreatedMillis = MediaMetricsManager.INVALID_TIMESTAMP; } - // TODO: remove - protected Event(long timeSinceCreatedMillis) { - mTimeSinceCreatedMillis = timeSinceCreatedMillis; - } - /* package */ Event(long timeSinceCreatedMillis, Bundle extras) { mTimeSinceCreatedMillis = timeSinceCreatedMillis; mMetricsBundle = extras; } /** - * Gets time since the corresponding instance is created in millisecond. + * Gets time since the corresponding log session is created in millisecond. * @return the timestamp since the instance is created, or -1 if unknown. + * @see LogSessionId + * @see PlaybackSession + * @see RecordingSession */ @IntRange(from = -1) public long getTimeSinceCreatedMillis() { diff --git a/media/java/android/media/metrics/MediaMetricsManager.java b/media/java/android/media/metrics/MediaMetricsManager.java index b4a74a33197a..23b697ff7512 100644 --- a/media/java/android/media/metrics/MediaMetricsManager.java +++ b/media/java/android/media/metrics/MediaMetricsManager.java @@ -25,7 +25,7 @@ import android.os.RemoteException; * This class gives information about, and interacts with media metrics. */ @SystemService(Context.MEDIA_METRICS_SERVICE) -public class MediaMetricsManager { +public final class MediaMetricsManager { public static final long INVALID_TIMESTAMP = -1; private static final String TAG = "MediaMetricsManager"; diff --git a/media/java/android/media/metrics/NetworkEvent.java b/media/java/android/media/metrics/NetworkEvent.java index 0e805439e603..7471d1d469ce 100644 --- a/media/java/android/media/metrics/NetworkEvent.java +++ b/media/java/android/media/metrics/NetworkEvent.java @@ -105,10 +105,8 @@ public final class NetworkEvent extends Event implements Parcelable { /** * Creates a new NetworkEvent. - * - * @hide */ - public NetworkEvent(@NetworkType int type, long timeSinceCreatedMillis, + private NetworkEvent(@NetworkType int type, long timeSinceCreatedMillis, @NonNull Bundle extras) { this.mNetworkType = type; this.mTimeSinceCreatedMillis = timeSinceCreatedMillis; @@ -124,8 +122,11 @@ public final class NetworkEvent extends Event implements Parcelable { } /** - * Gets timestamp since the creation in milliseconds. + * Gets timestamp since the creation of the log session in milliseconds. * @return the timestamp since the creation in milliseconds, or -1 if unknown. + * @see LogSessionId + * @see PlaybackSession + * @see RecordingSession */ @Override @IntRange(from = -1) @@ -177,8 +178,7 @@ public final class NetworkEvent extends Event implements Parcelable { return 0; } - /** @hide */ - /* package-private */ NetworkEvent(@NonNull android.os.Parcel in) { + private NetworkEvent(@NonNull android.os.Parcel in) { int type = in.readInt(); long timeSinceCreatedMillis = in.readLong(); Bundle extras = in.readBundle(); @@ -230,6 +230,7 @@ public final class NetworkEvent extends Event implements Parcelable { * Sets timestamp since the creation in milliseconds. * @param value the timestamp since the creation in milliseconds. * -1 indicates the value is unknown. + * @see #getTimeSinceCreatedMillis() */ public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) { mTimeSinceCreatedMillis = value; diff --git a/media/java/android/media/metrics/PlaybackErrorEvent.java b/media/java/android/media/metrics/PlaybackErrorEvent.java index f36c04e77521..d155576c9b47 100644 --- a/media/java/android/media/metrics/PlaybackErrorEvent.java +++ b/media/java/android/media/metrics/PlaybackErrorEvent.java @@ -150,10 +150,8 @@ public final class PlaybackErrorEvent extends Event implements Parcelable { /** * Creates a new PlaybackErrorEvent. - * - * @hide */ - public PlaybackErrorEvent( + private PlaybackErrorEvent( @Nullable String exceptionStack, int errorCode, int subErrorCode, @@ -191,8 +189,10 @@ public final class PlaybackErrorEvent extends Event implements Parcelable { } /** - * Gets the timestamp since creation in milliseconds. + * Gets the timestamp since creation of the playback session in milliseconds. * @return the timestamp since the playback is created, or -1 if unknown. + * @see LogSessionId + * @see PlaybackSession */ @Override @IntRange(from = -1) @@ -254,8 +254,7 @@ public final class PlaybackErrorEvent extends Event implements Parcelable { return 0; } - /** @hide */ - /* package-private */ PlaybackErrorEvent(@NonNull Parcel in) { + private PlaybackErrorEvent(@NonNull Parcel in) { byte flg = in.readByte(); String exceptionStack = (flg & 0x1) == 0 ? null : in.readString(); int errorCode = in.readInt(); @@ -330,6 +329,7 @@ public final class PlaybackErrorEvent extends Event implements Parcelable { * Set the timestamp since creation in milliseconds. * @param value the timestamp since the creation in milliseconds. * -1 indicates the value is unknown. + * @see #getTimeSinceCreatedMillis() */ public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) { mTimeSinceCreatedMillis = value; diff --git a/media/java/android/media/metrics/PlaybackMetrics.java b/media/java/android/media/metrics/PlaybackMetrics.java index 5f606a0a8ed0..bbcc48480e68 100644 --- a/media/java/android/media/metrics/PlaybackMetrics.java +++ b/media/java/android/media/metrics/PlaybackMetrics.java @@ -213,6 +213,7 @@ public final class PlaybackMetrics implements Parcelable { /** * Gets the media duration in milliseconds. + * <p>Media duration is the length of the media. * @return the media duration in milliseconds, or -1 if unknown. */ @IntRange(from = -1) @@ -328,6 +329,8 @@ public final class PlaybackMetrics implements Parcelable { /** * Gets network transfer duration in milliseconds. + * <p>Total transfer time spent reading from the network in ms. For parallel requests, the + * overlapping time intervals are counted only once. */ @IntRange(from = -1) public long getNetworkTransferDurationMillis() { @@ -523,6 +526,7 @@ public final class PlaybackMetrics implements Parcelable { /** * Sets the media duration in milliseconds. * @param value the media duration in milliseconds. -1 indicates the value is unknown. + * @see #getMediaDurationMillis() */ public @NonNull Builder setMediaDurationMillis(@IntRange(from = -1) long value) { mMediaDurationMillis = value; @@ -645,6 +649,7 @@ public final class PlaybackMetrics implements Parcelable { * Sets the network transfer duration in milliseconds. * @param value the network transfer duration in milliseconds. * -1 indicates the value is unknown. + * @see #getNetworkTransferDurationMillis() */ public @NonNull Builder setNetworkTransferDurationMillis(@IntRange(from = -1) long value) { mNetworkTransferDurationMillis = value; diff --git a/media/java/android/media/metrics/PlaybackStateEvent.java b/media/java/android/media/metrics/PlaybackStateEvent.java index 449abe952038..8e7482534677 100644 --- a/media/java/android/media/metrics/PlaybackStateEvent.java +++ b/media/java/android/media/metrics/PlaybackStateEvent.java @@ -132,10 +132,8 @@ public final class PlaybackStateEvent extends Event implements Parcelable { /** * Creates a new PlaybackStateEvent. - * - * @hide */ - public PlaybackStateEvent( + private PlaybackStateEvent( int state, long timeSinceCreatedMillis, @NonNull Bundle extras) { @@ -147,13 +145,16 @@ public final class PlaybackStateEvent extends Event implements Parcelable { /** * Gets playback state. */ + @State public int getState() { return mState; } /** - * Gets time since the corresponding playback is created in millisecond. + * Gets time since the corresponding playback session is created in millisecond. * @return the timestamp since the playback is created, or -1 if unknown. + * @see LogSessionId + * @see PlaybackSession */ @Override @IntRange(from = -1) @@ -197,8 +198,7 @@ public final class PlaybackStateEvent extends Event implements Parcelable { return 0; } - /** @hide */ - /* package-private */ PlaybackStateEvent(@NonNull Parcel in) { + private PlaybackStateEvent(@NonNull Parcel in) { int state = in.readInt(); long timeSinceCreatedMillis = in.readLong(); Bundle extras = in.readBundle(); @@ -247,6 +247,7 @@ public final class PlaybackStateEvent extends Event implements Parcelable { * Sets timestamp since the creation in milliseconds. * @param value the timestamp since the creation in milliseconds. * -1 indicates the value is unknown. + * @see #getTimeSinceCreatedMillis() */ public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) { mTimeSinceCreatedMillis = value; diff --git a/media/java/android/media/metrics/TrackChangeEvent.java b/media/java/android/media/metrics/TrackChangeEvent.java index c36702695095..65d011cf6758 100644 --- a/media/java/android/media/metrics/TrackChangeEvent.java +++ b/media/java/android/media/metrics/TrackChangeEvent.java @@ -184,8 +184,11 @@ public final class TrackChangeEvent extends Event implements Parcelable { } /** - * Gets timestamp since the creation in milliseconds. + * Gets timestamp since the creation of the log session in milliseconds. * @return the timestamp since the creation in milliseconds, or -1 if unknown. + * @see LogSessionId + * @see PlaybackSession + * @see RecordingSession */ @Override @IntRange(from = -1) @@ -193,6 +196,11 @@ public final class TrackChangeEvent extends Event implements Parcelable { return mTimeSinceCreatedMillis; } + /** + * Gets the track type. + * <p>The track type must be one of {@link #TRACK_TYPE_AUDIO}, {@link #TRACK_TYPE_VIDEO}, + * {@link #TRACK_TYPE_TEXT}. + */ @TrackType public int getTrackType() { return mType; @@ -302,8 +310,7 @@ public final class TrackChangeEvent extends Event implements Parcelable { return 0; } - /** @hide */ - /* package-private */ TrackChangeEvent(@NonNull Parcel in) { + private TrackChangeEvent(@NonNull Parcel in) { int flg = in.readInt(); int state = in.readInt(); int reason = in.readInt(); @@ -429,8 +436,14 @@ public final class TrackChangeEvent extends Event implements Parcelable { /** * Creates a new Builder. + * @param type the track type. It must be one of {@link #TRACK_TYPE_AUDIO}, + * {@link #TRACK_TYPE_VIDEO}, {@link #TRACK_TYPE_TEXT}. */ - public Builder(int type) { + public Builder(@TrackType int type) { + if (type != TRACK_TYPE_AUDIO && type != TRACK_TYPE_VIDEO && type != TRACK_TYPE_TEXT) { + throw new IllegalArgumentException("track type must be one of TRACK_TYPE_AUDIO, " + + "TRACK_TYPE_VIDEO, TRACK_TYPE_TEXT."); + } mType = type; } @@ -499,6 +512,7 @@ public final class TrackChangeEvent extends Event implements Parcelable { * Sets timestamp since the creation in milliseconds. * @param value the timestamp since the creation in milliseconds. * -1 indicates the value is unknown. + * @see #getTimeSinceCreatedMillis() */ public @NonNull Builder setTimeSinceCreatedMillis(@IntRange(from = -1) long value) { checkNotUsed(); diff --git a/media/java/android/media/session/ParcelableListBinder.java b/media/java/android/media/session/ParcelableListBinder.java index a7aacf2d8fca..bbf1e0889b68 100644 --- a/media/java/android/media/session/ParcelableListBinder.java +++ b/media/java/android/media/session/ParcelableListBinder.java @@ -109,7 +109,7 @@ public class ParcelableListBinder<T extends Parcelable> extends Binder { throws RemoteException { int count = list.size(); int i = 0; - while (i < count) { + do { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); if (i == 0) { @@ -126,6 +126,6 @@ public class ParcelableListBinder<T extends Parcelable> extends Binder { binder.transact(FIRST_CALL_TRANSACTION, data, reply, 0); reply.recycle(); data.recycle(); - } + } while (i < count); } } diff --git a/media/java/android/media/session/PlaybackState.java b/media/java/android/media/session/PlaybackState.java index e7d30ebba4b1..9eacc74843f9 100644 --- a/media/java/android/media/session/PlaybackState.java +++ b/media/java/android/media/session/PlaybackState.java @@ -19,7 +19,6 @@ import android.annotation.DrawableRes; import android.annotation.IntDef; import android.annotation.LongDef; import android.annotation.Nullable; -import android.annotation.SystemApi; import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; @@ -493,15 +492,26 @@ public final class PlaybackState implements Parcelable { /** * Returns whether this is considered as an active playback state. - * @hide + * <p> + * The playback state is considered as an active if the state is one of the following: + * <ul> + * <li>{@link #STATE_BUFFERING}</li> + * <li>{@link #STATE_CONNECTING}</li> + * <li>{@link #STATE_FAST_FORWARDING}</li> + * <li>{@link #STATE_PLAYING}</li> + * <li>{@link #STATE_REWINDING}</li> + * <li>{@link #STATE_SKIPPING_TO_NEXT}</li> + * <li>{@link #STATE_SKIPPING_TO_PREVIOUS}</li> + * <li>{@link #STATE_SKIPPING_TO_QUEUE_ITEM}</li> + * </ul> */ - @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) - public boolean isActiveState() { + public boolean isActive() { switch (mState) { case PlaybackState.STATE_FAST_FORWARDING: case PlaybackState.STATE_REWINDING: case PlaybackState.STATE_SKIPPING_TO_PREVIOUS: case PlaybackState.STATE_SKIPPING_TO_NEXT: + case PlaybackState.STATE_SKIPPING_TO_QUEUE_ITEM: case PlaybackState.STATE_BUFFERING: case PlaybackState.STATE_CONNECTING: case PlaybackState.STATE_PLAYING: diff --git a/media/java/android/media/tv/TunedInfo.java b/media/java/android/media/tv/TunedInfo.java index 6199c89fe4fa..20acefaea77e 100644 --- a/media/java/android/media/tv/TunedInfo.java +++ b/media/java/android/media/tv/TunedInfo.java @@ -25,6 +25,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.text.TextUtils; import android.util.Log; +import android.view.Surface; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -92,18 +93,20 @@ public final class TunedInfo implements Parcelable { private final String mInputId; @Nullable private final Uri mChannelUri; private final boolean mIsRecordingSession; - private final boolean mIsForeground; + private final boolean mIsVisible; + private final boolean mIsMainSession; @AppType private final int mAppType; private final int mAppTag; /** @hide */ public TunedInfo( String inputId, @Nullable Uri channelUri, boolean isRecordingSession, - boolean isForeground, @AppType int appType, int appTag) { + boolean isVisible, boolean isMainSession, @AppType int appType, int appTag) { mInputId = inputId; mChannelUri = channelUri; mIsRecordingSession = isRecordingSession; - mIsForeground = isForeground; + mIsVisible = isVisible; + mIsMainSession = isMainSession; mAppType = appType; mAppTag = appTag; } @@ -114,7 +117,8 @@ public final class TunedInfo implements Parcelable { String uriString = source.readString(); mChannelUri = uriString == null ? null : Uri.parse(uriString); mIsRecordingSession = (source.readInt() == 1); - mIsForeground = (source.readInt() == 1); + mIsVisible = (source.readInt() == 1); + mIsMainSession = (source.readInt() == 1); mAppType = source.readInt(); mAppTag = source.readInt(); } @@ -145,11 +149,23 @@ public final class TunedInfo implements Parcelable { } /** - * Returns {@code true} if the application is a foreground application. - * @see android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND + * Returns {@code true} if the corresponding session is visible. + * <p>The system checks whether the {@link Surface} of the session is {@code null} or not. When + * it becomes invisible, the surface is destroyed and set to null. + * @see TvInputService.Session#onSetSurface(Surface) + * @see android.view.SurfaceView#notifySurfaceDestroyed */ - public boolean isForeground() { - return mIsForeground; + public boolean isVisible() { + return mIsVisible; + } + + /** + * Returns {@code true} if the corresponding session is set as main session. + * @see TvView#setMain + * @see TvInputService.Session#onSetMain + */ + public boolean isMainSession() { + return mIsMainSession; } /** @@ -180,7 +196,8 @@ public final class TunedInfo implements Parcelable { String uriString = mChannelUri == null ? null : mChannelUri.toString(); dest.writeString(uriString); dest.writeInt(mIsRecordingSession ? 1 : 0); - dest.writeInt(mIsForeground ? 1 : 0); + dest.writeInt(mIsVisible ? 1 : 0); + dest.writeInt(mIsMainSession ? 1 : 0); dest.writeInt(mAppType); dest.writeInt(mAppTag); } @@ -190,7 +207,8 @@ public final class TunedInfo implements Parcelable { return "inputID=" + mInputId + ";channelUri=" + mChannelUri + ";isRecording=" + mIsRecordingSession - + ";isForeground=" + mIsForeground + + ";isVisible=" + mIsVisible + + ";isMainSession=" + mIsMainSession + ";appType=" + mAppType + ";appTag=" + mAppTag; } @@ -206,7 +224,8 @@ public final class TunedInfo implements Parcelable { return TextUtils.equals(mInputId, other.getInputId()) && Objects.equals(mChannelUri, other.mChannelUri) && mIsRecordingSession == other.mIsRecordingSession - && mIsForeground == other.mIsForeground + && mIsVisible == other.mIsVisible + && mIsMainSession == other.mIsMainSession && mAppType == other.mAppType && mAppTag == other.mAppTag; } @@ -214,6 +233,7 @@ public final class TunedInfo implements Parcelable { @Override public int hashCode() { return Objects.hash( - mInputId, mChannelUri, mIsRecordingSession, mIsForeground, mAppType, mAppTag); + mInputId, mChannelUri, mIsRecordingSession, mIsVisible, mIsMainSession, mAppType, + mAppTag); } } diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java index c0185dcc4539..34e4609a71f7 100644 --- a/media/java/android/media/tv/TvInputManager.java +++ b/media/java/android/media/tv/TvInputManager.java @@ -907,6 +907,7 @@ public final class TvInputManager { * @hide */ @SystemApi + @RequiresPermission(android.Manifest.permission.ACCESS_TUNED_INFO) public void onCurrentTunedInfosUpdated(@NonNull List<TunedInfo> tunedInfos) { } } @@ -1989,7 +1990,7 @@ public final class TvInputManager { * @hide */ @SystemApi - @RequiresPermission("com.android.providers.tv.permission.ACCESS_WATCHED_PROGRAMS") + @RequiresPermission(android.Manifest.permission.ACCESS_TUNED_INFO) @NonNull public List<TunedInfo> getCurrentTunedInfos() { try { diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp index 0aae940ca40e..4bdbe362a615 100644 --- a/media/jni/android_media_tv_Tuner.cpp +++ b/media/jni/android_media_tv_Tuner.cpp @@ -3029,7 +3029,8 @@ static FrontendSettings getFrontendSettings(JNIEnv *env, int type, jobject setti } } -static FrontendSettingsExt1_1 getFrontendSettingsExt1_1(JNIEnv *env, int type, jobject settings) { +static FrontendSettingsExt1_1 getFrontendSettingsExt1_1( + JNIEnv *env, int type, jobject settings, int tunerVersion) { ALOGD("getFrontendSettingsExt1_1 %d", type); FrontendSettingsExt1_1 settingsExt1_1 { @@ -3038,6 +3039,10 @@ static FrontendSettingsExt1_1 getFrontendSettingsExt1_1(JNIEnv *env, int type, j }; settingsExt1_1.settingExt.noinit(); + if (tunerVersion < TUNER_VERSION_1_1) { + return settingsExt1_1; + } + if (type == static_cast<int>(::android::hardware::tv::tuner::V1_1::FrontendType::DTMB)) { getDtmbFrontendSettings(env, settings, settingsExt1_1); } else { @@ -3220,7 +3225,8 @@ static jobject android_media_tv_Tuner_open_frontend_by_handle( static int android_media_tv_Tuner_tune(JNIEnv *env, jobject thiz, jint type, jobject settings) { sp<JTuner> tuner = getTuner(env, thiz); FrontendSettings setting = getFrontendSettings(env, type, settings); - FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1(env, type, settings); + FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1( + env, type, settings, tuner->getTunerVersion()); return tuner->tune(setting, settingExt); } @@ -3233,7 +3239,8 @@ static int android_media_tv_Tuner_scan( JNIEnv *env, jobject thiz, jint settingsType, jobject settings, jint scanType) { sp<JTuner> tuner = getTuner(env, thiz); FrontendSettings setting = getFrontendSettings(env, settingsType, settings); - FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1(env, settingsType, settings); + FrontendSettingsExt1_1 settingExt = getFrontendSettingsExt1_1( + env, settingsType, settings, tuner->getTunerVersion()); return tuner->scan(setting, static_cast<FrontendScanType>(scanType), settingExt); } diff --git a/media/jni/android_media_tv_Tuner.h b/media/jni/android_media_tv_Tuner.h index fafef4221541..2a933b207902 100644 --- a/media/jni/android_media_tv_Tuner.h +++ b/media/jni/android_media_tv_Tuner.h @@ -73,6 +73,8 @@ using ::android::hardware::tv::tuner::V1_1::FrontendScanMessageTypeExt1_1; using MQ = MessageQueue<uint8_t, kSynchronizedReadWrite>; +const static int TUNER_VERSION_1_1 = ((1 << 16) | 1); + namespace android { struct LnbClientCallbackImpl : public LnbClientCallback { diff --git a/media/jni/tuner/FilterClient.cpp b/media/jni/tuner/FilterClient.cpp index c080701e31a8..dc1d8b705d8f 100644 --- a/media/jni/tuner/FilterClient.cpp +++ b/media/jni/tuner/FilterClient.cpp @@ -596,11 +596,11 @@ TunerFilterSectionSettings FilterClient::getAidlSectionSettings( sectionBits.mask.resize(hidlSectionBits.mask.size()); sectionBits.mode.resize(hidlSectionBits.mode.size()); copy(hidlSectionBits.filter.begin(), hidlSectionBits.filter.end(), - hidlSectionBits.filter.begin()); + sectionBits.filter.begin()); copy(hidlSectionBits.mask.begin(), hidlSectionBits.mask.end(), - hidlSectionBits.mask.begin()); + sectionBits.mask.begin()); copy(hidlSectionBits.mode.begin(), hidlSectionBits.mode.end(), - hidlSectionBits.mode.begin()); + sectionBits.mode.begin()); aidlSection.condition.set<TunerFilterSectionCondition::sectionBits>(sectionBits); break; } diff --git a/media/jni/tuner/FrontendClient.cpp b/media/jni/tuner/FrontendClient.cpp index f54e2663843c..5d9b12d59482 100644 --- a/media/jni/tuner/FrontendClient.cpp +++ b/media/jni/tuner/FrontendClient.cpp @@ -982,7 +982,7 @@ TunerFrontendAtsc3Settings FrontendClient::getAidlAtsc3Settings(const FrontendSe TunerFrontendIsdbsSettings FrontendClient::getAidlIsdbsSettings(const FrontendSettings& settings) { TunerFrontendIsdbsSettings isdbsSettings{ .frequency = (int)settings.isdbs().frequency, - .streamId = (int)settings.isdbs().streamId, + .streamId = (char16_t)settings.isdbs().streamId, .streamIdType = (int)settings.isdbs().streamIdType, .modulation = (int)settings.isdbs().modulation, .codeRate = (int)settings.isdbs().coderate, @@ -996,7 +996,7 @@ TunerFrontendIsdbs3Settings FrontendClient::getAidlIsdbs3Settings( const FrontendSettings& settings) { TunerFrontendIsdbs3Settings isdbs3Settings{ .frequency = (int)settings.isdbs3().frequency, - .streamId = (int)settings.isdbs3().streamId, + .streamId = (char16_t)settings.isdbs3().streamId, .streamIdType = (int)settings.isdbs3().streamIdType, .modulation = (int)settings.isdbs3().modulation, .codeRate = (int)settings.isdbs3().coderate, diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java index 4b0062b90e96..eaa4f03ba81a 100644 --- a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java +++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2ManagerTest.java @@ -42,6 +42,8 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import android.Manifest; +import android.app.UiAutomation; import android.content.Context; import android.media.MediaRoute2Info; import android.media.MediaRouter2; @@ -87,6 +89,7 @@ public class MediaRouter2ManagerTest { private static final String TEST_NAME_UNKNOWN = "unknown"; private Context mContext; + private UiAutomation mUiAutomation; private MediaRouter2Manager mManager; private MediaRouter2 mRouter2; private Executor mExecutor; @@ -110,6 +113,8 @@ public class MediaRouter2ManagerTest { @Before public void setUp() throws Exception { mContext = InstrumentationRegistry.getTargetContext(); + mUiAutomation = InstrumentationRegistry.getInstrumentation().getUiAutomation(); + mUiAutomation.adoptShellPermissionIdentity(Manifest.permission.MEDIA_CONTENT_CONTROL); mManager = MediaRouter2Manager.getInstance(mContext); mRouter2 = MediaRouter2.getInstance(mContext); // If we need to support thread pool executors, change this to thread pool executor. @@ -129,6 +134,8 @@ public class MediaRouter2ManagerTest { instance.setProxy(null); instance.setSpy(null); } + + mUiAutomation.dropShellPermissionIdentity(); } @Test diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt index 4d137e0e1acc..9729524b47b2 100644 --- a/native/android/libandroid.map.txt +++ b/native/android/libandroid.map.txt @@ -260,8 +260,9 @@ LIBANDROID { ASurfaceTransaction_setHdrMetadata_smpte2086; # introduced=29 ASurfaceTransaction_setOnComplete; # introduced=29 ASurfaceTransaction_setPosition; # introduced=31 - ASurfaceTransaction_setSourceRect; # introduced=31 - ASurfaceTransaction_setTransform; # introduced=31 + ASurfaceTransaction_setCrop; # introduced=31 + ASurfaceTransaction_setBufferTransform; # introduced=31 + ASurfaceTransaction_setScale; # introduced=31 ASurfaceTransaction_setVisibility; # introduced=29 ASurfaceTransaction_setZOrder; # introduced=29 ASystemFontIterator_open; # introduced=29 diff --git a/native/android/surface_control.cpp b/native/android/surface_control.cpp index 7433cf970566..3d14c425ed4d 100644 --- a/native/android/surface_control.cpp +++ b/native/android/surface_control.cpp @@ -459,34 +459,31 @@ void ASurfaceTransaction_setGeometry(ASurfaceTransaction* aSurfaceTransaction, transaction->setTransformToDisplayInverse(surfaceControl, transformToInverseDisplay); } -void ASurfaceTransaction_setSourceRect(ASurfaceTransaction* aSurfaceTransaction, - ASurfaceControl* aSurfaceControl, const ARect& source) { +void ASurfaceTransaction_setCrop(ASurfaceTransaction* aSurfaceTransaction, + ASurfaceControl* aSurfaceControl, const ARect& crop) { CHECK_NOT_NULL(aSurfaceTransaction); CHECK_NOT_NULL(aSurfaceControl); - CHECK_VALID_RECT(source); + CHECK_VALID_RECT(crop); sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl); Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction); - transaction->setCrop(surfaceControl, static_cast<const Rect&>(source)); + transaction->setCrop(surfaceControl, static_cast<const Rect&>(crop)); } -void ASurfaceTransaction_setPosition(ASurfaceTransaction* /* aSurfaceTransaction */, - ASurfaceControl* /* aSurfaceControl */, - const ARect& /* destination */) { - // TODO: Fix this function - /* CHECK_NOT_NULL(aSurfaceTransaction); +void ASurfaceTransaction_setPosition(ASurfaceTransaction* aSurfaceTransaction, + ASurfaceControl* aSurfaceControl, int32_t x, int32_t y) { + CHECK_NOT_NULL(aSurfaceTransaction); CHECK_NOT_NULL(aSurfaceControl); - CHECK_VALID_RECT(destination); sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl); Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction); - transaction->setFrame(surfaceControl, static_cast<const Rect&>(destination));*/ + transaction->setPosition(surfaceControl, x, y); } -void ASurfaceTransaction_setTransform(ASurfaceTransaction* aSurfaceTransaction, - ASurfaceControl* aSurfaceControl, int32_t transform) { +void ASurfaceTransaction_setBufferTransform(ASurfaceTransaction* aSurfaceTransaction, + ASurfaceControl* aSurfaceControl, int32_t transform) { CHECK_NOT_NULL(aSurfaceTransaction); CHECK_NOT_NULL(aSurfaceControl); @@ -499,6 +496,19 @@ void ASurfaceTransaction_setTransform(ASurfaceTransaction* aSurfaceTransaction, transaction->setTransformToDisplayInverse(surfaceControl, transformToInverseDisplay); } +void ASurfaceTransaction_setScale(ASurfaceTransaction* aSurfaceTransaction, + ASurfaceControl* aSurfaceControl, float xScale, float yScale) { + CHECK_NOT_NULL(aSurfaceTransaction); + CHECK_NOT_NULL(aSurfaceControl); + LOG_ALWAYS_FATAL_IF(xScale < 0, "negative value passed in for xScale"); + LOG_ALWAYS_FATAL_IF(yScale < 0, "negative value passed in for yScale"); + + sp<SurfaceControl> surfaceControl = ASurfaceControl_to_SurfaceControl(aSurfaceControl); + Transaction* transaction = ASurfaceTransaction_to_Transaction(aSurfaceTransaction); + + transaction->setMatrix(surfaceControl, xScale, 0, 0, yScale); +} + void ASurfaceTransaction_setBufferTransparency(ASurfaceTransaction* aSurfaceTransaction, ASurfaceControl* aSurfaceControl, int8_t transparency) { diff --git a/packages/Connectivity/framework/api/module-lib-current.txt b/packages/Connectivity/framework/api/module-lib-current.txt index 9e2cd3e8a7fd..c8b04a3f63f1 100644 --- a/packages/Connectivity/framework/api/module-lib-current.txt +++ b/packages/Connectivity/framework/api/module-lib-current.txt @@ -7,7 +7,7 @@ package android.net { public class ConnectivityManager { method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void factoryReset(); - method @NonNull @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public java.util.List<android.net.NetworkStateSnapshot> getAllNetworkStateSnapshot(); + method @NonNull @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public java.util.List<android.net.NetworkStateSnapshot> getAllNetworkStateSnapshots(); method @Nullable public android.net.ProxyInfo getGlobalProxy(); method @NonNull public static android.util.Range<java.lang.Integer> getIpSecNetIdRange(); method @NonNull public static String getPrivateDnsMode(@NonNull android.content.Context); diff --git a/packages/Connectivity/framework/src/android/net/ConnectivityManager.java b/packages/Connectivity/framework/src/android/net/ConnectivityManager.java index 96f2de6f76bd..5dfa93226dff 100644 --- a/packages/Connectivity/framework/src/android/net/ConnectivityManager.java +++ b/packages/Connectivity/framework/src/android/net/ConnectivityManager.java @@ -424,6 +424,9 @@ public class ConnectivityManager { * Action used to display a dialog that asks the user whether to connect to a network that is * not validated. This intent is used to start the dialog in settings via startActivity. * + * This action includes a {@link Network} typed extra which is called + * {@link ConnectivityManager#EXTRA_NETWORK} that represents the network which is unvalidated. + * * @hide */ @SystemApi(client = MODULE_LIBRARIES) @@ -433,6 +436,10 @@ public class ConnectivityManager { * Action used to display a dialog that asks the user whether to avoid a network that is no * longer validated. This intent is used to start the dialog in settings via startActivity. * + * This action includes a {@link Network} typed extra which is called + * {@link ConnectivityManager#EXTRA_NETWORK} that represents the network which is no longer + * validated. + * * @hide */ @SystemApi(client = MODULE_LIBRARIES) @@ -444,6 +451,10 @@ public class ConnectivityManager { * that has not validated. This intent is used to start the dialog in settings via * startActivity. * + * This action includes a {@link Network} typed extra which is called + * {@link ConnectivityManager#EXTRA_NETWORK} that represents the network which has partial + * connectivity. + * * @hide */ @SystemApi(client = MODULE_LIBRARIES) @@ -1425,9 +1436,9 @@ public class ConnectivityManager { android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) @NonNull - public List<NetworkStateSnapshot> getAllNetworkStateSnapshot() { + public List<NetworkStateSnapshot> getAllNetworkStateSnapshots() { try { - return mService.getAllNetworkStateSnapshot(); + return mService.getAllNetworkStateSnapshots(); } catch (RemoteException e) { throw e.rethrowFromSystemServer(); } diff --git a/packages/Connectivity/framework/src/android/net/IConnectivityManager.aidl b/packages/Connectivity/framework/src/android/net/IConnectivityManager.aidl index 728f375372b1..c434bbcb0f51 100644 --- a/packages/Connectivity/framework/src/android/net/IConnectivityManager.aidl +++ b/packages/Connectivity/framework/src/android/net/IConnectivityManager.aidl @@ -82,7 +82,7 @@ interface IConnectivityManager @UnsupportedAppUsage(maxTargetSdk = 30, trackingBug = 170729553) NetworkState[] getAllNetworkState(); - List<NetworkStateSnapshot> getAllNetworkStateSnapshot(); + List<NetworkStateSnapshot> getAllNetworkStateSnapshots(); boolean isActiveNetworkMetered(); diff --git a/packages/Connectivity/service/ServiceConnectivityResources/Android.bp b/packages/Connectivity/service/ServiceConnectivityResources/Android.bp index d78373811194..515498e4823a 100644 --- a/packages/Connectivity/service/ServiceConnectivityResources/Android.bp +++ b/packages/Connectivity/service/ServiceConnectivityResources/Android.bp @@ -21,7 +21,7 @@ package { android_app { name: "ServiceConnectivityResources", - sdk_version: "module_current", + sdk_version: "module_30", min_sdk_version: "30", resource_dirs: [ "res", diff --git a/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml b/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml index 5ff0dc7a84f4..403e417c1bf2 100644 --- a/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml +++ b/packages/SettingsLib/RadioButtonPreference/res/layout/preference_radio.xml @@ -65,9 +65,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:singleLine="true" - android:textAppearance="?android:attr/textAppearanceListItem" - android:ellipsize="marquee" - android:fadingEdge="horizontal"/> + android:textAppearance="?android:attr/textAppearanceListItem"/> <LinearLayout android:id="@+id/summary_container" diff --git a/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml b/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml index d2c6fa26a4bd..8c20e0206648 100644 --- a/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml +++ b/packages/SettingsLib/UsageProgressBarPreference/res/layout/preference_usage_progress_bar.xml @@ -24,7 +24,6 @@ android:orientation="vertical" android:layout_marginStart="16dp" android:layout_marginEnd="16dp" - android:paddingTop="16dp" android:paddingBottom="16dp"> <androidx.constraintlayout.widget.ConstraintLayout @@ -64,8 +63,8 @@ style="?android:attr/progressBarStyleHorizontal" android:layout_width="match_parent" android:layout_height="wrap_content" - android:scaleY="4" - android:max="100"/> + android:max="100" + android:scaleY="1"/> <TextView android:id="@+id/bottom_summary" diff --git a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java index fbf325c7603a..0a8570b1b180 100644 --- a/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java +++ b/packages/SettingsLib/UsageProgressBarPreference/src/com/android/settingslib/widget/UsageProgressBarPreference.java @@ -113,7 +113,14 @@ public class UsageProgressBarPreference extends Preference { /** Set percentage of the progress bar. */ public void setPercent(long usage, long total) { - if (total == 0L || usage > total) { + if (usage > total) { + return; + } + if (total == 0L) { + if (mPercent != 0) { + mPercent = 0; + notifyChanged(); + } return; } final int percent = (int) (usage / (double) total * 100); diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java index 8f7006e7dc83..2c2ca3becd4a 100644 --- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java +++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiStatusTracker.java @@ -80,9 +80,6 @@ public class WifiStatusTracker { @Override public void onCapabilitiesChanged( Network network, NetworkCapabilities networkCapabilities) { - if (mDefaultNetwork != null && mDefaultNetwork.getNetId() != network.getNetId()) { - return; - } if (!mNetworks.contains(network.getNetId())) { // New network boolean isVcnOverWifi = @@ -117,9 +114,6 @@ public class WifiStatusTracker { @Override public void onLost(Network network) { - if (mDefaultNetwork != null && mDefaultNetwork.getNetId() != network.getNetId()) { - return; - } String log = new StringBuilder() .append(SSDF.format(System.currentTimeMillis())).append(",") .append("onLost: ") diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java index cd78addf254f..42fb5d0daca4 100644 --- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java +++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/widget/UsageProgressBarPreferenceTest.java @@ -22,7 +22,7 @@ import static org.mockito.Mockito.mock; import android.content.Context; import android.text.SpannedString; -import android.text.style.RelativeSizeSpan; +import android.text.style.AbsoluteSizeSpan; import android.view.LayoutInflater; import android.view.View; import android.widget.FrameLayout; @@ -56,38 +56,38 @@ public class UsageProgressBarPreferenceTest { } @Test - public void setUsageSummary_noNumber_noRelativeSizeSpan() { + public void setUsageSummary_noNumber_noAbsoluteSizeSpan() { mUsageProgressBarPreference.setUsageSummary("test"); mUsageProgressBarPreference.onBindViewHolder(mViewHolder); final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary); final SpannedString summary = new SpannedString(usageSummary.getText()); - assertThat(summary.getSpans(0, summary.length(), RelativeSizeSpan.class).length) + assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length) .isEqualTo(0); } @Test - public void setUsageSummary_integerNumber_findRelativeSizeSpan() { + public void setUsageSummary_integerNumber_findAbsoluteSizeSpan() { mUsageProgressBarPreference.setUsageSummary("10Test"); mUsageProgressBarPreference.onBindViewHolder(mViewHolder); final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary); final SpannedString summary = new SpannedString(usageSummary.getText()); - assertThat(summary.getSpans(0, summary.length(), RelativeSizeSpan.class).length) + assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length) .isEqualTo(1); } @Test - public void setUsageSummary_floatNumber_findRelativeSizeSpan() { + public void setUsageSummary_floatNumber_findAbsoluteSizeSpan() { mUsageProgressBarPreference.setUsageSummary("3.14Test"); mUsageProgressBarPreference.onBindViewHolder(mViewHolder); final TextView usageSummary = (TextView) mViewHolder.findViewById(R.id.usage_summary); final SpannedString summary = new SpannedString(usageSummary.getText()); - assertThat(summary.getSpans(0, summary.length(), RelativeSizeSpan.class).length) + assertThat(summary.getSpans(0, summary.length(), AbsoluteSizeSpan.class).length) .isEqualTo(1); } @@ -125,6 +125,17 @@ public class UsageProgressBarPreferenceTest { } @Test + public void setPercent_totalSizeZero_getProgressZero() { + mUsageProgressBarPreference.setPercent(0 /* usage */, 0 /* total */); + + mUsageProgressBarPreference.onBindViewHolder(mViewHolder); + + final ProgressBar progressBar = (ProgressBar) mViewHolder + .findViewById(android.R.id.progress); + assertThat(progressBar.getProgress()).isEqualTo(0); + } + + @Test public void setCustomContent_setNullImageView_noChild() { mUsageProgressBarPreference.setCustomContent(null /* imageView */); diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java index 77032ba8145b..b7560d207f0d 100644 --- a/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java +++ b/packages/SettingsProvider/src/android/provider/settings/backup/GlobalSettings.java @@ -69,7 +69,6 @@ public class GlobalSettings { Settings.Global.ZEN_DURATION, Settings.Global.CHARGING_VIBRATION_ENABLED, Settings.Global.AWARE_ALLOWED, - Settings.Global.NOTIFICATION_BUBBLES, Settings.Global.CUSTOM_BUGREPORT_HANDLER_APP, Settings.Global.CUSTOM_BUGREPORT_HANDLER_USER, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java index e92591d78e92..f6c54f041cb6 100644 --- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java +++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java @@ -187,5 +187,6 @@ public class SecureSettings { Settings.Secure.ACCESSIBILITY_FLOATING_MENU_ICON_TYPE, Settings.Secure.ACCESSIBILITY_FLOATING_MENU_OPACITY, Settings.Secure.ACCESSIBILITY_FLOATING_MENU_FADE_ENABLED, + Settings.Secure.NOTIFICATION_BUBBLES, }; } diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java index 97032dd41801..c0e4df54c560 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/GlobalSettingsValidators.java @@ -128,7 +128,6 @@ public class GlobalSettingsValidators { VALIDATORS.put( Global.POWER_BUTTON_VERY_LONG_PRESS, new InclusiveIntegerRangeValidator(0, 1)); VALIDATORS.put(Global.KEY_CHORD_POWER_VOLUME_UP, new InclusiveIntegerRangeValidator(0, 2)); - VALIDATORS.put(Global.NOTIFICATION_BUBBLES, BOOLEAN_VALIDATOR); VALIDATORS.put(Global.CUSTOM_BUGREPORT_HANDLER_APP, ANY_STRING_VALIDATOR); VALIDATORS.put(Global.CUSTOM_BUGREPORT_HANDLER_USER, ANY_INTEGER_VALIDATOR); VALIDATORS.put(Global.DEVELOPMENT_SETTINGS_ENABLED, BOOLEAN_VALIDATOR); diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java index 53920f04cc7a..8036e49c0735 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java @@ -284,5 +284,6 @@ public class SecureSettingsValidators { new InclusiveFloatRangeValidator(0.0f, 1.0f)); VALIDATORS.put(Secure.ACCESSIBILITY_FLOATING_MENU_FADE_ENABLED, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.CLIPBOARD_SHOW_ACCESS_NOTIFICATIONS, BOOLEAN_VALIDATOR); + VALIDATORS.put(Secure.NOTIFICATION_BUBBLES, BOOLEAN_VALIDATOR); } } diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java index 4119dc9f2206..2a50be7a0d18 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java @@ -1107,9 +1107,6 @@ class SettingsProtoDumpUtil { Settings.Global.NOTIFICATION_SNOOZE_OPTIONS, GlobalSettingsProto.Notification.SNOOZE_OPTIONS); dumpSetting(s, p, - Settings.Global.NOTIFICATION_BUBBLES, - GlobalSettingsProto.Notification.BUBBLES); - dumpSetting(s, p, Settings.Global.SMART_REPLIES_IN_NOTIFICATIONS_FLAGS, GlobalSettingsProto.Notification.SMART_REPLIES_IN_NOTIFICATIONS_FLAGS); dumpSetting(s, p, @@ -2312,7 +2309,7 @@ class SettingsProtoDumpUtil { Settings.Secure.NOTIFICATION_BADGING, SecureSettingsProto.Notification.BADGING); dumpSetting(s, p, - Settings.Global.NOTIFICATION_BUBBLES, + Settings.Secure.NOTIFICATION_BUBBLES, SecureSettingsProto.Notification.BUBBLES); dumpSetting(s, p, Settings.Secure.SHOW_NOTE_ABOUT_NOTIFICATION_HIDING, diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java index 6440d2a53f84..2e90d369a883 100644 --- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java +++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java @@ -20,6 +20,7 @@ import static android.os.Process.ROOT_UID; import static android.os.Process.SHELL_UID; import static android.os.Process.SYSTEM_UID; import static android.provider.Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_MAGNIFICATION_CONTROLLER; +import static android.provider.Settings.Secure.NOTIFICATION_BUBBLES; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_2BUTTON_OVERLAY; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL; import static android.view.WindowManagerPolicyConstants.NAV_BAR_MODE_GESTURAL_OVERLAY; @@ -3400,7 +3401,7 @@ public class SettingsProvider extends ContentProvider { } private final class UpgradeController { - private static final int SETTINGS_VERSION = 199; + private static final int SETTINGS_VERSION = 201; private final int mUserId; @@ -4645,11 +4646,8 @@ public class SettingsProvider extends ContentProvider { // Version 184: Reset the default for Global Settings: NOTIFICATION_BUBBLES // This is originally set in version 182, however, the default value changed // so this step is to ensure the value is updated to the correct default. - getGlobalSettingsLocked().insertSettingOverrideableByRestoreLocked( - Global.NOTIFICATION_BUBBLES, getContext().getResources().getBoolean( - R.bool.def_notification_bubbles) ? "1" : "0", null /* tag */, - true /* makeDefault */, SettingsState.SYSTEM_PACKAGE_NAME); + // Removed. Bubbles moved to secure settings. See version 197. currentVersion = 185; } @@ -4894,7 +4892,6 @@ public class SettingsProvider extends ContentProvider { defEnableNonResizableMultiWindow ? "1" : "0", null, true, SettingsState.SYSTEM_PACKAGE_NAME); } - currentVersion = 198; } @@ -4928,6 +4925,40 @@ public class SettingsProvider extends ContentProvider { currentVersion = 199; } + if (currentVersion == 199) { + // Version 199: Bubbles moved to secure settings. Use the global value for + // the newly inserted secure setting; we'll delete the global value in the + // next version step. + // If this is a new profile, check if a secure setting exists for the + // owner of the profile and use that value for the work profile. + int owningId = resolveOwningUserIdForSecureSettingLocked(userId, + NOTIFICATION_BUBBLES); + Setting previous = getGlobalSettingsLocked() + .getSettingLocked("notification_bubbles"); + Setting secureBubbles = getSecureSettingsLocked(owningId) + .getSettingLocked(NOTIFICATION_BUBBLES); + String oldValue = "1"; + if (!previous.isNull()) { + oldValue = previous.getValue(); + } else if (!secureBubbles.isNull()) { + oldValue = secureBubbles.getValue(); + } + if (secureBubbles.isNull()) { + boolean isDefault = oldValue.equals("1"); + getSecureSettingsLocked(userId).insertSettingLocked( + Secure.NOTIFICATION_BUBBLES, oldValue, null /* tag */, + isDefault, SettingsState.SYSTEM_PACKAGE_NAME); + } + currentVersion = 200; + } + + if (currentVersion == 200) { + // Version 200: delete the global bubble setting which was moved to secure in + // version 199. + getGlobalSettingsLocked().deleteSettingLocked("notification_bubbles"); + currentVersion = 201; + } + // vXXX: Add new settings above this point. if (currentVersion != newVersion) { diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml index a8d1534b5c5e..ad6de9fe3a36 100644 --- a/packages/Shell/AndroidManifest.xml +++ b/packages/Shell/AndroidManifest.xml @@ -163,6 +163,7 @@ <uses-permission android:name="android.permission.SET_ORIENTATION" /> <uses-permission android:name="android.permission.INSTALL_PACKAGES" /> <uses-permission android:name="com.android.permission.USE_INSTALLER_V2" /> + <uses-permission android:name="android.permission.INSTALL_TEST_ONLY_PACKAGE" /> <uses-permission android:name="com.android.permission.USE_SYSTEM_DATA_LOADERS" /> <uses-permission android:name="android.permission.MOVE_PACKAGE" /> <uses-permission android:name="android.permission.KEEP_UNINSTALLED_PACKAGES" /> @@ -414,6 +415,9 @@ <!-- Permission required for testing system audio effect APIs. --> <uses-permission android:name="android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS"/> + <!-- Permission required for running networking unit tests --> + <uses-permission android:name="android.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS" /> + <!-- Permissions required for CTS test - TunerTest --> <uses-permission android:name="android.permission.ACCESS_TV_DESCRAMBLER" /> <uses-permission android:name="android.permission.ACCESS_TV_TUNER" /> @@ -426,6 +430,7 @@ <uses-permission android:name="android.permission.ACCESS_SHARED_LIBRARIES" /> <!-- Permissions required for CTS test - TVInputManagerTest --> + <uses-permission android:name="android.permission.ACCESS_TUNED_INFO" /> <uses-permission android:name="android.permission.TV_INPUT_HARDWARE" /> <!-- Permission needed for CTS test - PrivilegedLocationPermissionTest --> @@ -537,7 +542,7 @@ <uses-permission android:name="android.permission.SCHEDULE_PRIORITIZED_ALARM" /> <!-- Permission required for CTS test - SystemMediaRouter2Test --> - <uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING" /> + <uses-permission android:name="android.permission.MEDIA_CONTENT_CONTROL" /> <!-- Permission required for CTS test - CtsRotationResolverServiceDeviceTestCases --> <uses-permission android:name="android.permission.MANAGE_ROTATION_RESOLVER" /> @@ -545,6 +550,9 @@ <!-- Permission required for CTS test - CtsUwbTestCases --> <uses-permission android:name="android.permission.UWB_PRIVILEGED" /> + <!-- Permission required for CTS test - CtsAlarmManagerTestCases --> + <uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" /> + <application android:label="@string/app_label" android:theme="@android:style/Theme.DeviceDefault.DayNight" android:defaultToDeviceProtectedStorage="true" diff --git a/packages/Shell/TEST_MAPPING b/packages/Shell/TEST_MAPPING index a149b5cda3ea..9bb1b4b99207 100644 --- a/packages/Shell/TEST_MAPPING +++ b/packages/Shell/TEST_MAPPING @@ -18,6 +18,20 @@ "exclude-annotation": "androidx.test.filters.FlakyTest" } ] + }, + { + "name": "CtsUiAutomationTestCases", + "options": [ + { + "include-filter": "android.app.uiautomation.cts.UiAutomationTest#testAdoptAllShellPermissions" + }, + { + "include-filter": "android.app.uiautomation.cts.UiAutomationTest#testAdoptSomeShellPermissions" + }, + { + "exclude-annotation": "androidx.test.filters.FlakyTest" + } + ] } ], "postsubmit": [ diff --git a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java index 53ff9f0e8c0b..4fe48c9dbdda 100644 --- a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java +++ b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java @@ -59,6 +59,14 @@ public interface BcSmartspaceDataPlugin extends Plugin { interface SmartspaceView { void registerDataProvider(BcSmartspaceDataPlugin plugin); + /** + * Primary color for unprotected text + */ void setPrimaryTextColor(int color); + + /** + * Range [0.0 - 1.0] when transitioning from Lockscreen to/from AOD + */ + void setDozeAmount(float amount); } } diff --git a/packages/SystemUI/res-keyguard/values/styles.xml b/packages/SystemUI/res-keyguard/values/styles.xml index 0fef9f15c373..72b027af1bf6 100644 --- a/packages/SystemUI/res-keyguard/values/styles.xml +++ b/packages/SystemUI/res-keyguard/values/styles.xml @@ -17,7 +17,7 @@ */ --> -<resources xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"> +<resources> <!-- Keyguard PIN pad styles --> <style name="Keyguard.TextView" parent="@android:style/Widget.DeviceDefault.TextView"> <item name="android:textSize">@dimen/kg_status_line_font_size</item> @@ -32,7 +32,9 @@ <item name="android:stateListAnimator">@null</item> </style> <style name="NumPadKey" parent="Theme.SystemUI"> - <item name="android:colorControlNormal">?androidprv:attr/colorSurface</item> + <!-- Studio can't directly reference ?androidprv:attr/colorSurface here, so this value + is resolved in {@link NumPadAnimator}. --> + <item name="android:colorControlNormal">@null</item> <item name="android:colorControlHighlight">?android:attr/colorAccent</item> <item name="android:background">@drawable/num_pad_key_background</item> </style> diff --git a/packages/SystemUI/res/drawable/brightness_mirror_background.xml b/packages/SystemUI/res/drawable/brightness_mirror_background.xml index ae3d31290a3f..209510365fe0 100644 --- a/packages/SystemUI/res/drawable/brightness_mirror_background.xml +++ b/packages/SystemUI/res/drawable/brightness_mirror_background.xml @@ -16,5 +16,5 @@ --> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="?attr/underSurfaceColor" /> - <corners android:radius="8dp" /> + <corners android:radius="@dimen/rounded_slider_background_rounded_corner" /> </shape> diff --git a/packages/SystemUI/res/drawable/rounded_rect_background.xml b/packages/SystemUI/res/drawable/rounded_rect_background.xml new file mode 100644 index 000000000000..83b0f7122169 --- /dev/null +++ b/packages/SystemUI/res/drawable/rounded_rect_background.xml @@ -0,0 +1,22 @@ +<!-- + ~ Copyright (C) 2021 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. + --> +<shape xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="rectangle"> + <size android:height="48dp" + android:width="48dp" /> + <solid android:color="@android:color/transparent" /> + <corners android:radius="4dp"></corners> +</shape> diff --git a/packages/SystemUI/res/drawable/thumbnail_delete_btn_bg.xml b/packages/SystemUI/res/drawable/thumbnail_delete_btn_bg.xml new file mode 100644 index 000000000000..ea7d45d03b7f --- /dev/null +++ b/packages/SystemUI/res/drawable/thumbnail_delete_btn_bg.xml @@ -0,0 +1,23 @@ +<!-- + ~ Copyright (C) 2021 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. + --> + +<shape xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" + android:shape="oval"> + <size android:height="24dp" + android:width="24dp" /> + <solid android:color="#FFFFFF" /> +</shape> diff --git a/packages/SystemUI/res/layout/brightness_mirror.xml b/packages/SystemUI/res/layout/brightness_mirror_container.xml index b714767e7d83..ac90db3e5e19 100644 --- a/packages/SystemUI/res/layout/brightness_mirror.xml +++ b/packages/SystemUI/res/layout/brightness_mirror_container.xml @@ -17,10 +17,14 @@ <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:theme="@style/Theme.SystemUI.QuickSettings" - android:id="@+id/brightness_mirror" - android:layout_width="@dimen/qs_panel_width" - android:layout_height="@dimen/brightness_mirror_height" - android:layout_gravity="@integer/notification_panel_layout_gravity" + android:id="@+id/brightness_mirror_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:background="@drawable/brightness_mirror_background" + android:layout_gravity="center_vertical" + android:layout_margin="8dp" + android:padding="@dimen/rounded_slider_background_padding" + android:gravity="center" android:visibility="invisible"> </FrameLayout> diff --git a/packages/SystemUI/res/layout/media_output_list_item.xml b/packages/SystemUI/res/layout/media_output_list_item.xml index c98c3a0beb65..b563633f24fe 100644 --- a/packages/SystemUI/res/layout/media_output_list_item.xml +++ b/packages/SystemUI/res/layout/media_output_list_item.xml @@ -28,7 +28,7 @@ <FrameLayout android:layout_width="36dp" android:layout_height="36dp" - android:layout_gravity="center_vertical" + android:layout_gravity="center_vertical|start" android:layout_marginStart="16dp"> <ImageView android:id="@+id/title_icon" @@ -41,7 +41,7 @@ android:id="@+id/title" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:layout_gravity="center_vertical" + android:layout_gravity="center_vertical|start" android:layout_marginStart="68dp" android:ellipsize="end" android:maxLines="1" diff --git a/packages/SystemUI/res/layout/privacy_dialog_item.xml b/packages/SystemUI/res/layout/privacy_dialog_item.xml index 0c8ed9f7ff2a..b91fb29c6f51 100644 --- a/packages/SystemUI/res/layout/privacy_dialog_item.xml +++ b/packages/SystemUI/res/layout/privacy_dialog_item.xml @@ -31,7 +31,6 @@ android:layout_width="@dimen/ongoing_appops_dialog_circle_size" android:layout_height="@dimen/ongoing_appops_dialog_circle_size" android:layout_gravity="center_vertical" - android:importantForAccessibility="no" /> <TextView diff --git a/packages/SystemUI/res/layout/qs_customize_tile_divider.xml b/packages/SystemUI/res/layout/qs_customize_tile_divider.xml index 0d932acb2c50..19c2fc84a30a 100644 --- a/packages/SystemUI/res/layout/qs_customize_tile_divider.xml +++ b/packages/SystemUI/res/layout/qs_customize_tile_divider.xml @@ -18,8 +18,5 @@ <View xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginStart="16dp" - android:layout_marginEnd="16dp" - android:background="?android:attr/listDivider" + android:layout_height="32dp" android:importantForAccessibility="no" /> diff --git a/packages/SystemUI/res/layout/qs_detail.xml b/packages/SystemUI/res/layout/qs_detail.xml index 59e1a755d7d2..f056402b0cd4 100644 --- a/packages/SystemUI/res/layout/qs_detail.xml +++ b/packages/SystemUI/res/layout/qs_detail.xml @@ -23,6 +23,7 @@ android:clickable="true" android:orientation="vertical" android:layout_marginTop="@*android:dimen/quick_qs_offset_height" + android:layout_marginBottom="@dimen/qs_container_bottom_padding" android:paddingBottom="8dp" android:visibility="invisible" android:elevation="4dp" diff --git a/packages/SystemUI/res/layout/qs_panel.xml b/packages/SystemUI/res/layout/qs_panel.xml index 3d2a621756f0..30e52e9a763c 100644 --- a/packages/SystemUI/res/layout/qs_panel.xml +++ b/packages/SystemUI/res/layout/qs_panel.xml @@ -32,6 +32,7 @@ android:id="@+id/expanded_qs_scroll_view" android:layout_width="match_parent" android:layout_height="wrap_content" + android:paddingBottom="@dimen/qs_container_bottom_padding" android:elevation="4dp" android:importantForAccessibility="no" android:scrollbars="none" diff --git a/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml b/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml index f4d5304d3d0e..e95c6a79733c 100644 --- a/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml +++ b/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml @@ -13,16 +13,12 @@ See the License for the specific language governing permissions and limitations under the License. --> -<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" - android:layout_height="wrap_content" - android:layout_width="match_parent" - android:layout_gravity="center"> - <com.android.systemui.settings.brightness.BrightnessSliderView + xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/brightness_slider" android:layout_width="match_parent" android:layout_height="@dimen/brightness_mirror_height" - android:layout_gravity="center_vertical" + android:layout_gravity="center" android:contentDescription="@string/accessibility_brightness" android:importantForAccessibility="no" > @@ -40,4 +36,3 @@ android:splitTrack="false" /> </com.android.systemui.settings.brightness.BrightnessSliderView> -</FrameLayout> diff --git a/packages/SystemUI/res/layout/remote_input.xml b/packages/SystemUI/res/layout/remote_input.xml index 4fcce243f58f..a909d0d4d3c2 100644 --- a/packages/SystemUI/res/layout/remote_input.xml +++ b/packages/SystemUI/res/layout/remote_input.xml @@ -22,28 +22,75 @@ android:id="@+id/remote_input" android:layout_height="match_parent" android:layout_width="match_parent"> + <LinearLayout + android:layout_height="wrap_content" + android:layout_width="wrap_content" + android:id="@+id/remote_input_content" + android:orientation="vertical" + android:clipToPadding="false" + android:layout_marginEnd="20dp" + android:layout_marginStart="20dp" + android:layout_marginTop="5dp" + android:layout_marginBottom="16dp" + android:layout_weight="1"> + <FrameLayout + android:id="@+id/remote_input_content_container" + android:layout_marginTop="-6dp" + android:layout_height="60dp" + android:layout_width="60dp" + android:layout_marginStart="4dp" + android:layout_marginBottom="12dp" + android:visibility="gone" + android:layout_gravity="center_vertical"> + <ImageView + android:id="@+id/remote_input_attachment_image" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_gravity="start|bottom" + android:clipToOutline="true" + android:background="@drawable/rounded_rect_background" + android:scaleType="centerCrop" /> + <ImageView + android:id="@+id/remote_input_delete_bg" + android:paddingStart="24dp" + android:paddingBottom="24dp" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_gravity="end|top" + android:src="@drawable/thumbnail_delete_btn_bg"/> + <ImageView + android:id="@+id/remote_input_delete" + android:paddingTop="3dp" + android:paddingEnd="3dp" + android:paddingStart="27dp" + android:paddingBottom="27dp" + android:layout_width="48dp" + android:layout_height="48dp" + android:layout_gravity="end|top" + android:src="@drawable/ic_close" + android:contentDescription="@string/notif_inline_reply_remove_attachment_description"/> + </FrameLayout> - <view class="com.android.systemui.statusbar.policy.RemoteInputView$RemoteEditText" - android:id="@+id/remote_input_text" - android:layout_height="wrap_content" - android:layout_width="0dp" - android:layout_weight="1" - android:paddingTop="2dp" - android:paddingStart="16dp" - android:paddingEnd="12dp" - android:layout_marginLeft="16dp" - android:layout_marginTop="5dp" - android:layout_marginBottom="16dp" - android:layout_gravity="start|center_vertical" - android:textAppearance="?android:attr/textAppearance" - android:textColor="@color/remote_input_text" - android:textColorHint="@color/remote_input_hint" - android:textSize="16sp" - android:background="@null" - android:maxLines="4" - android:ellipsize="start" - android:inputType="textShortMessage|textMultiLine|textAutoCorrect|textCapSentences" - android:imeOptions="actionSend|flagNoExtractUi|flagNoFullscreen" /> + <view class="com.android.systemui.statusbar.policy.RemoteInputView$RemoteEditText" + android:id="@+id/remote_input_text" + android:layout_height="wrap_content" + android:layout_width="match_parent" + android:layout_weight="1" + android:paddingTop="2dp" + android:paddingStart="4dp" + android:paddingBottom="4dp" + android:paddingEnd="12dp" + android:layout_gravity="start|center_vertical" + android:textAppearance="?android:attr/textAppearance" + android:textColor="@color/remote_input_text" + android:textColorHint="@color/remote_input_hint" + android:textSize="16sp" + android:background="@null" + android:maxLines="4" + android:ellipsize="start" + android:inputType="textShortMessage|textMultiLine|textAutoCorrect|textCapSentences" + android:imeOptions="actionSend|flagNoExtractUi|flagNoFullscreen" /> + </LinearLayout> <FrameLayout android:layout_width="wrap_content" diff --git a/packages/SystemUI/res/layout/super_notification_shade.xml b/packages/SystemUI/res/layout/super_notification_shade.xml index 941081e76c2e..12c864cfcad3 100644 --- a/packages/SystemUI/res/layout/super_notification_shade.xml +++ b/packages/SystemUI/res/layout/super_notification_shade.xml @@ -70,7 +70,7 @@ android:layout_height="match_parent" android:visibility="invisible" /> - <include layout="@layout/brightness_mirror" /> + <include layout="@layout/brightness_mirror_container" /> <com.android.systemui.statusbar.ScrimView android:id="@+id/scrim_in_front" diff --git a/packages/SystemUI/res/raw/image_wallpaper_fragment_shader.glsl b/packages/SystemUI/res/raw/image_wallpaper_fragment_shader.glsl index 7aca9f8440fc..e4b6e0778664 100644 --- a/packages/SystemUI/res/raw/image_wallpaper_fragment_shader.glsl +++ b/packages/SystemUI/res/raw/image_wallpaper_fragment_shader.glsl @@ -1,54 +1,11 @@ precision mediump float; -#define GAMMA 2.2 -#define INV_GAMMA 1.0 / GAMMA // The actual wallpaper texture. uniform sampler2D uTexture; -uniform float uExposure; varying vec2 vTextureCoordinates; -// Following the Rec. ITU-R BT.709. -float relativeLuminance(vec3 color) { - return 0.2126 * color.r + 0.7152 * color.g + 0.0722 * color.b; -} - -// Adjusts the exposure of some luminance value. -float relativeExposureCompensation(in float lum, in float ev) { - return lum * pow(2.0, ev); -} - -vec4 srgbToLinear(in vec4 color) { - vec4 linearColor = vec4(color); - linearColor.rgb = pow(linearColor.rgb, vec3(GAMMA)); - return linearColor; -} - -vec4 linearToSrgb(in vec4 color) { - vec4 srgbColor = vec4(color); - srgbColor.rgb = pow(srgbColor.rgb, vec3(INV_GAMMA)); - return srgbColor; -} - -/* - * Normalizes a value inside a range to a normalized range [0,1]. - */ -float normalizedRange(in float value, in float inMin, in float inMax) { - float valueClamped = clamp(value, inMin, inMax); - return (value - inMin) / (inMax - inMin); -} - void main() { - // Gets the pixel value of the wallpaper for this uv coordinates on screen. - vec4 color = srgbToLinear(texture2D(uTexture, vTextureCoordinates)); - float lum = relativeLuminance(color.rgb); - - // Transform it using the S curve created by the smoothstep. This will increase the contrast. - lum = smoothstep(0., 1., lum) + 0.001; - - lum = relativeExposureCompensation(lum, mix(-5., 10., uExposure)); - lum = mix(clamp(lum, 0.0, 1.0), 1.0, normalizedRange(uExposure, 0.55, 1.0)); - color.rgb *= lum; - - gl_FragColor = linearToSrgb(color); + // gets the pixel value of the wallpaper for this uv coordinates on screen. + gl_FragColor = texture2D(uTexture, vTextureCoordinates); }
\ No newline at end of file diff --git a/packages/SystemUI/res/values-land/dimens.xml b/packages/SystemUI/res/values-land/dimens.xml index 007f81b45bf7..5f50fd400e7f 100644 --- a/packages/SystemUI/res/values-land/dimens.xml +++ b/packages/SystemUI/res/values-land/dimens.xml @@ -33,7 +33,7 @@ <dimen name="battery_detail_graph_space_top">9dp</dimen> <dimen name="battery_detail_graph_space_bottom">9dp</dimen> - <dimen name="qs_detail_margin_top">0dp</dimen> + <dimen name="qs_detail_margin_top">14dp</dimen> <dimen name="volume_tool_tip_right_margin">136dp</dimen> <dimen name="volume_tool_tip_top_margin">12dp</dimen> diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml index 210efd86d453..238b9e6e483f 100644 --- a/packages/SystemUI/res/values/dimens.xml +++ b/packages/SystemUI/res/values/dimens.xml @@ -528,7 +528,7 @@ <!-- The size of the gesture span needed to activate the "pull" notification expansion --> <dimen name="pull_span_min">25dp</dimen> - <dimen name="qs_corner_radius">14dp</dimen> + <dimen name="qs_corner_radius">28dp</dimen> <dimen name="qs_tile_height">88dp</dimen> <!--notification_side_paddings + notification_content_margin_start - (qs_quick_tile_size - qs_tile_background_size) / 2 --> <dimen name="qs_tile_layout_margin_side">18dp</dimen> @@ -610,6 +610,8 @@ <dimen name="qs_notif_collapsed_space">64dp</dimen> + <dimen name="qs_container_bottom_padding">24dp</dimen> + <!-- Desired qs icon overlay size. --> <dimen name="qs_detail_icon_overlay_size">24dp</dimen> @@ -1428,6 +1430,9 @@ <dimen name="rounded_slider_track_width">4dp</dimen> <!-- rounded_slider_track_width / 2 --> <dimen name="rounded_slider_track_corner_radius">2dp</dimen> + <dimen name="rounded_slider_background_padding">8dp</dimen> + <!-- rounded_slider_corner_radius + rounded_slider_background_padding --> + <dimen name="rounded_slider_background_rounded_corner">32dp</dimen> <!-- inset for ic_lock_open within a DisabledUdfpsView --> <dimen name="udfps_unlock_icon_inset">16dp</dimen> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index e55142bcde28..8a3ba4b3048c 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -2096,7 +2096,8 @@ <string name="keyboard_key_num_lock">Num Lock</string> <!-- Name used to refer to keys on the numeric pad of the keyboard, e.g. "Numpad 9". --> <string name="keyboard_key_numpad_template">Numpad <xliff:g id="name">%1$s</xliff:g></string> - + <!-- Content description for the delete button on an image attachment when using inline reply via notification [CHAR LIMIT=NONE] --> + <string name="notif_inline_reply_remove_attachment_description">Remove attachment</string> <!-- User visible title for the system-wide keyboard shortcuts list. --> <string name="keyboard_shortcut_group_system">System</string> <!-- User visible title for the keyboard shortcut that takes the user to the home screen. --> @@ -2620,19 +2621,19 @@ <string name="ongoing_privacy_dialog_last_separator">\u0020and\u0020</string> <!-- Text for privacy dialog, using sensitive app op (one of camera, location, microphone) right now [CHAR LIMIT=NONE] --> - <string name="ongoing_privacy_dialog_using_op"><xliff:g id="application_name" example="Photos">%1$s</xliff:g> is using the <xliff:g id="app_opp_name" example="camera">%2$s</xliff:g></string> + <string name="ongoing_privacy_dialog_using_op">Being used by <xliff:g id="application_name" example="Photos">%1$s</xliff:g></string> <!-- Text for privacy dialog, recently used sensitive app op (one of camera, location, microphone) [CHAR LIMIT=NONE] --> - <string name="ongoing_privacy_dialog_recent_op"><xliff:g id="application_name" example="Photos">%1$s</xliff:g> used the <xliff:g id="app_opp_name" example="camera">%2$s</xliff:g> recently</string> + <string name="ongoing_privacy_dialog_recent_op">Recently used by <xliff:g id="application_name" example="Photos">%1$s</xliff:g></string> <!-- Text for privacy dialog, indicating that the application is the enterprise version [CHAR LIMIT=NONE] --> - <string name="ongoing_privacy_dialog_enterprise">(enterprise)</string> + <string name="ongoing_privacy_dialog_enterprise">(work)</string> <!-- Text for privacy dialog, identifying the phone call app [CHAR LIMIT=NONE]--> <string name="ongoing_privacy_dialog_phonecall">Phone call</string> - <!-- Text for privacy dialog, indicating that an app is using an op on behalf of another [CHAR LIMIT=NONE] --> - <string name="ongoing_privacy_dialog_attribution_text">(through <xliff:g id="attribution" example="Special app">%s</xliff:g>)</string> + <!-- Text for privacy dialog, indicating that an app (or multiple) is using an op on behalf of another [CHAR LIMIT=NONE] --> + <string name="ongoing_privacy_dialog_attribution_text">(through <xliff:g id="application name(s)" example="Maps, and Assistant">%s</xliff:g>)</string> <!-- Text for camera app op [CHAR LIMIT=20]--> <string name="privacy_type_camera">camera</string> diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml index ce8c0c2897b8..43c4465dd748 100644 --- a/packages/SystemUI/res/values/styles.xml +++ b/packages/SystemUI/res/values/styles.xml @@ -388,7 +388,7 @@ </style> <style name="Theme.SystemUI.QuickSettings.BrightnessDialog" parent="@android:style/Theme.DeviceDefault.Dialog"> - <item name="android:dialogCornerRadius">8dp</item> + <item name="android:windowBackground">@android:color/transparent</item> </style> <style name="Theme.SystemUI.QuickSettings.Dialog" parent="@android:style/Theme.DeviceDefault.Dialog"> diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java index fbabaa489d74..e281914d560e 100644 --- a/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java +++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/SyncRtSurfaceTransactionApplierCompat.java @@ -231,7 +231,7 @@ public class SyncRtSurfaceTransactionApplierCompat { * @return this Builder */ public Builder withMatrix(Matrix matrix) { - this.matrix = matrix; + this.matrix = new Matrix(matrix); flags |= FLAG_MATRIX; return this; } @@ -241,7 +241,7 @@ public class SyncRtSurfaceTransactionApplierCompat { * @return this Builder */ public Builder withWindowCrop(Rect windowCrop) { - this.windowCrop = windowCrop; + this.windowCrop = new Rect(windowCrop); flags |= FLAG_WINDOW_CROP; return this; } @@ -324,8 +324,8 @@ public class SyncRtSurfaceTransactionApplierCompat { this.flags = flags; this.surface = surface; this.alpha = alpha; - this.matrix = new Matrix(matrix); - this.windowCrop = windowCrop != null ? new Rect(windowCrop) : null; + this.matrix = matrix; + this.windowCrop = windowCrop; this.layer = layer; this.relativeTo = relativeTo; this.relativeLayer = relativeLayer; diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java index e7418e6a1619..f2bebcebb6d6 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java @@ -24,7 +24,6 @@ import android.app.smartspace.SmartspaceConfig; import android.app.smartspace.SmartspaceManager; import android.app.smartspace.SmartspaceSession; import android.content.res.Resources; -import android.graphics.Color; import android.text.TextUtils; import android.text.format.DateFormat; import android.view.View; @@ -33,7 +32,6 @@ import android.widget.RelativeLayout; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.colorextraction.ColorExtractor; -import com.android.internal.graphics.ColorUtils; import com.android.keyguard.clock.ClockManager; import com.android.settingslib.Utils; import com.android.systemui.R; @@ -86,10 +84,8 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS private FrameLayout mLargeClockFrame; private SmartspaceSession mSmartspaceSession; - private SmartspaceSession.Callback mSmartspaceCallback; - private float mDozeAmount; + private SmartspaceSession.OnTargetsAvailableListener mSmartspaceCallback; private int mWallpaperTextColor; - private int mDozeColor = Color.WHITE; private ConfigurationController mConfigurationController; /** @@ -121,8 +117,9 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS new StatusBarStateController.StateListener() { @Override public void onDozeAmountChanged(float linear, float eased) { - mDozeAmount = eased; - updateSmartspaceColor(); + if (mSmartspaceView != null) { + mSmartspaceView.setDozeAmount(eased); + } } }; @@ -192,9 +189,6 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS mBatteryController); mLargeClockViewController.init(); - mDozeAmount = mStatusBarStateController.getDozeAmount(); - updateWallpaperColor(); - mStatusBarStateController.addCallback(mStatusBarStateListener); mConfigurationController.addCallback(mConfigurationListener); @@ -206,7 +200,7 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS mSmartspaceView = smartspaceDataPlugin.getView(mView); mSmartspaceView.registerDataProvider(smartspaceDataPlugin); - updateSmartspaceColor(); + updateWallpaperColor(); View asView = (View) mSmartspaceView; // Place smartspace view below normal clock... @@ -234,20 +228,17 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS .createSmartspaceSession( new SmartspaceConfig.Builder(getContext(), "lockscreen").build()); mSmartspaceCallback = targets -> smartspaceDataPlugin.onTargetsAvailable(targets); - mSmartspaceSession.registerSmartspaceUpdates(mUiExecutor, mSmartspaceCallback); + mSmartspaceSession.addOnTargetsAvailableListener(mUiExecutor, mSmartspaceCallback); mSmartspaceSession.requestSmartspaceUpdate(); } - } - private void updateWallpaperColor() { - mWallpaperTextColor = Utils.getColorAttrDefaultColor(getContext(), - R.attr.wallpaperTextColor); - updateSmartspaceColor(); + float dozeAmount = mStatusBarStateController.getDozeAmount(); + mStatusBarStateListener.onDozeAmountChanged(dozeAmount, dozeAmount); } - private void updateSmartspaceColor() { + private void updateWallpaperColor() { if (mSmartspaceView != null) { - int color = ColorUtils.blendARGB(mWallpaperTextColor, mDozeColor, mDozeAmount); + int color = Utils.getColorAttrDefaultColor(getContext(), R.attr.wallpaperTextColor); mSmartspaceView.setPrimaryTextColor(color); } } @@ -261,8 +252,8 @@ public class KeyguardClockSwitchController extends ViewController<KeyguardClockS mView.setClockPlugin(null, mStatusBarStateController.getState()); if (mSmartspaceSession != null) { - mSmartspaceSession.unregisterSmartspaceUpdates(mSmartspaceCallback); - mSmartspaceSession.destroy(); + mSmartspaceSession.removeOnTargetsAvailableListener(mSmartspaceCallback); + mSmartspaceSession.close(); mSmartspaceSession = null; } mStatusBarStateController.removeCallback(mStatusBarStateListener); diff --git a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java index 570854ecaa36..abdd770c37d4 100644 --- a/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java +++ b/packages/SystemUI/src/com/android/keyguard/NumPadAnimator.java @@ -29,6 +29,7 @@ import androidx.annotation.StyleRes; import com.android.systemui.R; import com.android.systemui.animation.Interpolators; +import com.android.systemui.util.Utils; /** * Provides background color and radius animations for key pad buttons. @@ -100,7 +101,8 @@ class NumPadAnimator { ContextThemeWrapper ctw = new ContextThemeWrapper(context, mStyle); TypedArray a = ctw.obtainStyledAttributes(customAttrs); - mNormalColor = a.getColor(0, 0); + mNormalColor = Utils.getPrivateAttrColorIfUnset(ctw, a, 0, 0, + com.android.internal.R.attr.colorSurface); mHighlightColor = a.getColor(1, 0); a.recycle(); diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java index c8e674171b6e..76cec0b33477 100644 --- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java +++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java @@ -29,7 +29,7 @@ import android.util.ArraySet; import android.util.Log; import android.util.MathUtils; import android.util.Size; -import android.view.Choreographer; +import android.view.DisplayInfo; import android.view.SurfaceHolder; import android.view.WindowManager; @@ -38,7 +38,6 @@ import androidx.annotation.NonNull; import com.android.internal.annotations.VisibleForTesting; import com.android.systemui.glwallpaper.EglHelper; import com.android.systemui.glwallpaper.ImageWallpaperRenderer; -import com.android.systemui.plugins.statusbar.StatusBarStateController; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -59,19 +58,16 @@ public class ImageWallpaper extends WallpaperService { private static final @android.annotation.NonNull RectF LOCAL_COLOR_BOUNDS = new RectF(0, 0, 1, 1); private static final boolean DEBUG = false; - private final StatusBarStateController mStatusBarStateController; private final ArrayList<RectF> mLocalColorsToAdd = new ArrayList<>(); private final ArraySet<RectF> mColorAreas = new ArraySet<>(); - private float mShift; - private volatile int mPages; + private volatile int mPages = 1; private HandlerThread mWorker; // scaled down version private Bitmap mMiniBitmap; @Inject - public ImageWallpaper(StatusBarStateController statusBarStateController) { + public ImageWallpaper() { super(); - mStatusBarStateController = statusBarStateController; } @Override @@ -94,27 +90,24 @@ public class ImageWallpaper extends WallpaperService { mMiniBitmap = null; } - - class GLEngine extends Engine implements StatusBarStateController.StateListener, - Choreographer.FrameCallback { + class GLEngine extends Engine { // Surface is rejected if size below a threshold on some devices (ie. 8px on elfin) // set min to 64 px (CTS covers this), please refer to ag/4867989 for detail. @VisibleForTesting - static final int MIN_SURFACE_WIDTH = 64; + static final int MIN_SURFACE_WIDTH = 128; @VisibleForTesting - static final int MIN_SURFACE_HEIGHT = 64; + static final int MIN_SURFACE_HEIGHT = 128; private ImageWallpaperRenderer mRenderer; private EglHelper mEglHelper; private final Runnable mFinishRenderingTask = this::finishRendering; - private final Runnable mInitChoreographerTask = this::initChoreographerInternal; + private boolean mNeedRedraw; private int mWidth = 1; private int mHeight = 1; private int mImgWidth = 1; private int mImgHeight = 1; - private volatile float mDozeAmount; - private volatile boolean mNewDozeValue = false; - private volatile boolean mShouldScheduleFrame = false; + private float mPageWidth = 1.f; + private float mPageOffset = 1.f; GLEngine() { } @@ -141,9 +134,6 @@ public class ImageWallpaper extends WallpaperService { if (mWorker != null && mWorker.getThreadHandler() != null) { mWorker.getThreadHandler().post(this::updateMiniBitmap); } - - mDozeAmount = mStatusBarStateController.getDozeAmount(); - mStatusBarStateController.addCallback(this); } EglHelper getEglHelperInstance() { @@ -158,15 +148,15 @@ public class ImageWallpaper extends WallpaperService { public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset) { - if (mMiniBitmap == null || mMiniBitmap.isRecycled()) return; final int pages; if (xOffsetStep > 0 && xOffsetStep <= 1) { - pages = (int) (1 / xOffsetStep + 1); + pages = (int) Math.round(1 / xOffsetStep) + 1; } else { pages = 1; } if (pages == mPages) return; mPages = pages; + if (mMiniBitmap == null || mMiniBitmap.isRecycled()) return; updateShift(); mWorker.getThreadHandler().post(() -> computeAndNotifyLocalColors(new ArrayList<>(mColorAreas), mMiniBitmap)); @@ -174,19 +164,17 @@ public class ImageWallpaper extends WallpaperService { private void updateShift() { if (mImgHeight == 0) { - mShift = 0; + mPageOffset = 0; + mPageWidth = 1; return; } // calculate shift - float imgWidth = (float) mImgWidth / (float) mImgHeight; - float displayWidth = - (float) mWidth / (float) mHeight; - // if need to shift - if (imgWidth > displayWidth) { - mShift = imgWidth / imgWidth - displayWidth / imgWidth; - } else { - mShift = 0; - } + DisplayInfo displayInfo = new DisplayInfo(); + getDisplayContext().getDisplay().getDisplayInfo(displayInfo); + int screenWidth = displayInfo.getNaturalWidth(); + float imgWidth = Math.min(mImgWidth > 0 ? screenWidth / (float) mImgWidth : 1.f, 1.f); + mPageWidth = imgWidth; + mPageOffset = (1 - imgWidth) / (float) (mPages - 1); } private void updateMiniBitmap() { @@ -198,8 +186,8 @@ public class ImageWallpaper extends WallpaperService { } mImgHeight = b.getHeight(); mImgWidth = b.getWidth(); - mMiniBitmap = Bitmap.createScaledBitmap(b, (int) Math.ceil(scale * b.getWidth()), - (int) Math.ceil(scale * b.getHeight()), false); + mMiniBitmap = Bitmap.createScaledBitmap(b, (int) Math.max(scale * b.getWidth(), 1), + (int) Math.max(scale * b.getHeight(), 1), false); computeAndNotifyLocalColors(mLocalColorsToAdd, mMiniBitmap); mLocalColorsToAdd.clear(); }); @@ -221,11 +209,7 @@ public class ImageWallpaper extends WallpaperService { @Override public void onDestroy() { mMiniBitmap = null; - - mStatusBarStateController.removeCallback(this); - mWorker.getThreadHandler().post(() -> { - finishChoreographerInternal(); mRenderer.finish(); mRenderer = null; mEglHelper.finish(); @@ -274,27 +258,39 @@ public class ImageWallpaper extends WallpaperService { }); } + /** + * Transform the logical coordinates into wallpaper coordinates. + * + * Logical coordinates are organised such that the various pages are non-overlapping. So, + * if there are n pages, the first page will have its X coordinate on the range [0-1/n]. + * + * The real pages are overlapping. If the Wallpaper are a width Ww and the screen a width + * Ws, the relative width of a page Wr is Ws/Ww. This does not change if the number of + * pages increase. + * If there are n pages, the page k starts at the offset k * (1 - Wr) / (n - 1), as the + * last page is at position (1-Wr) and the others are regularly spread on the range [0- + * (1-Wr)]. + */ private RectF pageToImgRect(RectF area) { - float pageWidth = 1f / (float) mPages; - if (pageWidth < 1 && pageWidth >= 0) pageWidth = 1; - float imgWidth = (float) mImgWidth / (float) mImgHeight; - float displayWidth = - (float) mWidth / (float) mHeight; - float expansion = imgWidth > displayWidth ? displayWidth / imgWidth : 1; - int page = (int) Math.floor(area.centerX() / pageWidth); - float shiftWidth = mShift * page * pageWidth; + // Width of a page for the caller of this API. + float virtualPageWidth = 1f / (float) mPages; + float leftPosOnPage = (area.left % virtualPageWidth) / virtualPageWidth; + float rightPosOnPage = (area.right % virtualPageWidth) / virtualPageWidth; + int currentPage = (int) Math.floor(area.centerX() / virtualPageWidth); + RectF imgArea = new RectF(); imgArea.bottom = area.bottom; imgArea.top = area.top; - imgArea.left = MathUtils.constrain(area.left % pageWidth, 0, 1) - * expansion + shiftWidth; - imgArea.right = MathUtils.constrain(area.right % pageWidth, 0, 1) - * expansion + shiftWidth; + imgArea.left = MathUtils.constrain( + leftPosOnPage * mPageWidth + currentPage * mPageOffset, 0, 1); + imgArea.right = MathUtils.constrain( + rightPosOnPage * mPageWidth + currentPage * mPageOffset, 0, 1); if (imgArea.left > imgArea.right) { // take full page - imgArea.left = shiftWidth; - imgArea.right = 1 - (mShift - shiftWidth); + imgArea.left = 0; + imgArea.right = 1; } + return imgArea; } @@ -339,28 +335,17 @@ public class ImageWallpaper extends WallpaperService { @Override public void onSurfaceRedrawNeeded(SurfaceHolder holder) { if (mWorker == null) return; - mDozeAmount = mStatusBarStateController.getDozeAmount(); mWorker.getThreadHandler().post(this::drawFrame); } - @Override - public void onDozeAmountChanged(float linear, float eased) { - initChoreographer(); - - mDozeAmount = linear; - mNewDozeValue = true; - } - private void drawFrame() { preRender(); requestRender(); postRender(); } - /** - * Important: this method should only be invoked from the ImageWallpaper (worker) Thread. - */ public void preRender() { + // This method should only be invoked from worker thread. Trace.beginSection("ImageWallpaper#preRender"); preRenderInternal(); Trace.endSection(); @@ -395,10 +380,8 @@ public class ImageWallpaper extends WallpaperService { } } - /** - * Important: this method should only be invoked from the ImageWallpaper (worker) Thread. - */ public void requestRender() { + // This method should only be invoked from worker thread. Trace.beginSection("ImageWallpaper#requestRender"); requestRenderInternal(); Trace.endSection(); @@ -410,7 +393,6 @@ public class ImageWallpaper extends WallpaperService { && frame.width() > 0 && frame.height() > 0; if (readyToRender) { - mRenderer.setExposureValue(1 - mDozeAmount); mRenderer.onDrawFrame(); if (!mEglHelper.swapBuffer()) { Log.e(TAG, "drawFrame failed!"); @@ -422,10 +404,8 @@ public class ImageWallpaper extends WallpaperService { } } - /** - * Important: this method should only be invoked from the ImageWallpaper (worker) Thread. - */ public void postRender() { + // This method should only be invoked from worker thread. Trace.beginSection("ImageWallpaper#postRender"); scheduleFinishRendering(); Trace.endSection(); @@ -444,7 +424,6 @@ public class ImageWallpaper extends WallpaperService { private void finishRendering() { Trace.beginSection("ImageWallpaper#finishRendering"); - finishChoreographerInternal(); if (mEglHelper != null) { mEglHelper.destroyEglSurface(); mEglHelper.destroyEglContext(); @@ -452,35 +431,6 @@ public class ImageWallpaper extends WallpaperService { Trace.endSection(); } - private void initChoreographer() { - if (!mWorker.getThreadHandler().hasCallbacks(mInitChoreographerTask) - && !mShouldScheduleFrame) { - mWorker.getThreadHandler().post(mInitChoreographerTask); - } - } - - /** - * Subscribes the engine to listen to Choreographer frame events. - * Important: this method should only be invoked from the ImageWallpaper (worker) Thread. - */ - private void initChoreographerInternal() { - if (!mShouldScheduleFrame) { - // Prepare EGL Context and Surface - preRender(); - mShouldScheduleFrame = true; - Choreographer.getInstance().postFrameCallback(GLEngine.this); - } - } - - /** - * Unsubscribe the engine from listening to Choreographer frame events. - * Important: this method should only be invoked from the ImageWallpaper (worker) Thread. - */ - private void finishChoreographerInternal() { - mShouldScheduleFrame = false; - Choreographer.getInstance().removeFrameCallback(GLEngine.this); - } - private boolean needSupportWideColorGamut() { return mRenderer.isWcgContent(); } @@ -500,17 +450,5 @@ public class ImageWallpaper extends WallpaperService { mEglHelper.dump(prefix, fd, out, args); mRenderer.dump(prefix, fd, out, args); } - - @Override - public void doFrame(long frameTimeNanos) { - if (mNewDozeValue) { - drawFrame(); - mNewDozeValue = false; - } - - if (mShouldScheduleFrame) { - Choreographer.getInstance().postFrameCallback(this); - } - } } } diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java index 48beea3804a4..ae16703405a5 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java @@ -30,7 +30,6 @@ import android.content.pm.ActivityInfo; import android.content.res.Resources; import android.graphics.Matrix; import android.graphics.PixelFormat; -import android.graphics.Point; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Region; @@ -80,7 +79,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold private final Context mContext; private final Resources mResources; private final Handler mHandler; - private final Point mDisplaySize = new Point(); + private Rect mWindowBounds; private final int mDisplayId; @Surface.Rotation @VisibleForTesting @@ -143,12 +142,13 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold mHandler = handler; mSfVsyncFrameProvider = sfVsyncFrameProvider; mWindowMagnifierCallback = callback; - Display display = mContext.getDisplay(); - display.getRealSize(mDisplaySize); + + final Display display = mContext.getDisplay(); mDisplayId = mContext.getDisplayId(); mRotation = display.getRotation(); mWm = context.getSystemService(WindowManager.class); + mWindowBounds = mWm.getCurrentWindowMetrics().getBounds(); mResources = mContext.getResources(); mScale = mResources.getInteger(R.integer.magnification_default_scale); @@ -225,7 +225,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold mNavGestureHeight = 0; return; } - mNavGestureHeight = (mDisplaySize.x > mDisplaySize.y) + mNavGestureHeight = (mWindowBounds.width() > mWindowBounds.height()) ? mResources.getDimensionPixelSize( com.android.internal.R.dimen.navigation_bar_height_landscape) : mResources.getDimensionPixelSize( @@ -295,7 +295,8 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold private void onRotate() { final Display display = mContext.getDisplay(); final int oldRotation = mRotation; - display.getRealSize(mDisplaySize); + mWindowBounds = mWm.getCurrentWindowMetrics().getBounds(); + setMagnificationFrameBoundary(); mRotation = display.getRotation(); updateNavigationBarDimensions(); @@ -309,9 +310,9 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold final Matrix matrix = new Matrix(); matrix.setRotate(rotationDegree); if (rotationDegree == 90) { - matrix.postTranslate(mDisplaySize.x, 0); + matrix.postTranslate(mWindowBounds.width(), 0); } else if (rotationDegree == 270) { - matrix.postTranslate(0, mDisplaySize.y); + matrix.postTranslate(0, mWindowBounds.height()); } else { Log.w(TAG, "Invalid rotation change. " + rotationDegree); return; @@ -409,10 +410,10 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold private void setInitialStartBounds() { // Sets the initial frame area for the mirror and places it in the center of the display. - final int initSize = Math.min(mDisplaySize.x, mDisplaySize.y) / 2 + final int initSize = Math.min(mWindowBounds.width(), mWindowBounds.height()) / 2 + 2 * mMirrorSurfaceMargin; - final int initX = mDisplaySize.x / 2 - initSize / 2; - final int initY = mDisplaySize.y / 2 - initSize / 2; + final int initX = mWindowBounds.width() / 2 - initSize / 2; + final int initY = mWindowBounds.height() / 2 - initSize / 2; mMagnificationFrame.set(initX, initY, initX + initSize, initY + initSize); } @@ -462,8 +463,9 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold if (!isWindowVisible()) { return; } - final int maxMirrorViewX = mDisplaySize.x - mMirrorView.getWidth(); - final int maxMirrorViewY = mDisplaySize.y - mMirrorView.getHeight() - mNavGestureHeight; + final int maxMirrorViewX = mWindowBounds.width() - mMirrorView.getWidth(); + final int maxMirrorViewY = + mWindowBounds.height() - mMirrorView.getHeight() - mNavGestureHeight; LayoutParams params = (LayoutParams) mMirrorView.getLayoutParams(); params.x = mMagnificationFrame.left - mMirrorSurfaceMargin; @@ -535,7 +537,7 @@ class WindowMagnificationController implements View.OnTouchListener, SurfaceHold final int exceededHeight = halfHeight - scaledHeight; mMagnificationFrameBoundary.set(-exceededWidth, -exceededHeight, - mDisplaySize.x + exceededWidth, mDisplaySize.y + exceededHeight); + mWindowBounds.width() + exceededWidth, mWindowBounds.height() + exceededHeight); } /** diff --git a/packages/SystemUI/src/com/android/systemui/classifier/Classifier.java b/packages/SystemUI/src/com/android/systemui/classifier/Classifier.java index 6a012ebdd1e7..6f70672dbb54 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/Classifier.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/Classifier.java @@ -42,6 +42,7 @@ public abstract class Classifier { public static final int QS_COLLAPSE = 12; public static final int UDFPS_AUTHENTICATION = 13; public static final int DISABLED_UDFPS_AFFORDANCE = 14; + public static final int QS_SWIPE = 15; @IntDef({ QUICK_SETTINGS, @@ -59,7 +60,8 @@ public abstract class Classifier { QS_COLLAPSE, BRIGHTNESS_SLIDER, UDFPS_AUTHENTICATION, - DISABLED_UDFPS_AFFORDANCE + DISABLED_UDFPS_AFFORDANCE, + QS_SWIPE }) @Retention(RetentionPolicy.SOURCE) public @interface InteractionType {} diff --git a/packages/SystemUI/src/com/android/systemui/classifier/DistanceClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/DistanceClassifier.java index a4e1637e0de0..229801074246 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/DistanceClassifier.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/DistanceClassifier.java @@ -155,7 +155,8 @@ class DistanceClassifier extends FalsingClassifier { || interactionType == SHADE_DRAG || interactionType == QS_COLLAPSE || interactionType == Classifier.UDFPS_AUTHENTICATION - || interactionType == Classifier.DISABLED_UDFPS_AFFORDANCE) { + || interactionType == Classifier.DISABLED_UDFPS_AFFORDANCE + || interactionType == Classifier.QS_SWIPE) { return Result.passed(0); } diff --git a/packages/SystemUI/src/com/android/systemui/classifier/ProximityClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/ProximityClassifier.java index 3bc24c734a60..72d4303dc0ef 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/ProximityClassifier.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/ProximityClassifier.java @@ -19,6 +19,7 @@ package com.android.systemui.classifier; import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.BRIGHTLINE_FALSING_PROXIMITY_PERCENT_COVERED_THRESHOLD; import static com.android.systemui.classifier.Classifier.BRIGHTNESS_SLIDER; import static com.android.systemui.classifier.Classifier.QS_COLLAPSE; +import static com.android.systemui.classifier.Classifier.QS_SWIPE; import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS; import android.provider.DeviceConfig; @@ -118,7 +119,7 @@ class ProximityClassifier extends FalsingClassifier { @Classifier.InteractionType int interactionType, double historyBelief, double historyConfidence) { if (interactionType == QUICK_SETTINGS || interactionType == BRIGHTNESS_SLIDER - || interactionType == QS_COLLAPSE) { + || interactionType == QS_COLLAPSE || interactionType == QS_SWIPE) { return Result.passed(0); } diff --git a/packages/SystemUI/src/com/android/systemui/classifier/TypeClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/TypeClassifier.java index 1042516ebecf..c2ad7e6387d6 100644 --- a/packages/SystemUI/src/com/android/systemui/classifier/TypeClassifier.java +++ b/packages/SystemUI/src/com/android/systemui/classifier/TypeClassifier.java @@ -24,6 +24,7 @@ import static com.android.systemui.classifier.Classifier.NOTIFICATION_DISMISS; import static com.android.systemui.classifier.Classifier.NOTIFICATION_DRAG_DOWN; import static com.android.systemui.classifier.Classifier.PULSE_EXPAND; import static com.android.systemui.classifier.Classifier.QS_COLLAPSE; +import static com.android.systemui.classifier.Classifier.QS_SWIPE; import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS; import static com.android.systemui.classifier.Classifier.RIGHT_AFFORDANCE; import static com.android.systemui.classifier.Classifier.SHADE_DRAG; @@ -85,6 +86,9 @@ public class TypeClassifier extends FalsingClassifier { case QS_COLLAPSE: wrongDirection = !vertical || !up; break; + case QS_SWIPE: + wrongDirection = vertical; + break; default: wrongDirection = true; break; diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageGLWallpaper.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageGLWallpaper.java index 58c41d582413..1a53c28c0fc5 100644 --- a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageGLWallpaper.java +++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageGLWallpaper.java @@ -29,7 +29,6 @@ import static android.opengl.GLES20.glDrawArrays; import static android.opengl.GLES20.glEnableVertexAttribArray; import static android.opengl.GLES20.glGenTextures; import static android.opengl.GLES20.glTexParameteri; -import static android.opengl.GLES20.glUniform1f; import static android.opengl.GLES20.glUniform1i; import static android.opengl.GLES20.glVertexAttribPointer; @@ -53,7 +52,6 @@ class ImageGLWallpaper { private static final String A_POSITION = "aPosition"; private static final String A_TEXTURE_COORDINATES = "aTextureCoordinates"; private static final String U_TEXTURE = "uTexture"; - private static final String U_EXPOSURE = "uExposure"; private static final int POSITION_COMPONENT_COUNT = 2; private static final int TEXTURE_COMPONENT_COUNT = 2; private static final int BYTES_PER_FLOAT = 4; @@ -85,7 +83,6 @@ class ImageGLWallpaper { private int mAttrPosition; private int mAttrTextureCoordinates; private int mUniTexture; - private int mUniExposure; private int mTextureId; ImageGLWallpaper(ImageGLProgram program) { @@ -128,7 +125,6 @@ class ImageGLWallpaper { private void setupUniforms() { mUniTexture = mProgram.getUniformHandle(U_TEXTURE); - mUniExposure = mProgram.getUniformHandle(U_EXPOSURE); } void draw() { @@ -175,10 +171,6 @@ class ImageGLWallpaper { glUniform1i(mUniTexture, 0); } - void setExposureValue(float exposureValue) { - glUniform1f(mUniExposure, exposureValue); - } - /** * Called to dump current state. * @param prefix prefix. diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java index cdf88f3898bb..01a353ce8f1f 100644 --- a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java +++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java @@ -46,7 +46,6 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer { private final ImageGLWallpaper mWallpaper; private final Rect mSurfaceSize = new Rect(); private final WallpaperTexture mTexture; - private float mExposureValue; public ImageWallpaperRenderer(Context context) { final WallpaperManager wpm = context.getSystemService(WallpaperManager.class); @@ -67,13 +66,6 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer { mTexture.use(c); } - /** - * @hide - */ - public void setExposureValue(float exposureValue) { - mExposureValue = exposureValue; - } - @Override public boolean isWcgContent() { return mTexture.isWcgContent(); @@ -102,7 +94,6 @@ public class ImageWallpaperRenderer implements GLWallpaperRenderer { public void onDrawFrame() { glClear(GL_COLOR_BUFFER_BIT); glViewport(0, 0, mSurfaceSize.width(), mSurfaceSize.height()); - mWallpaper.setExposureValue(mExposureValue); mWallpaper.useTexture(); mWallpaper.draw(); } diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java b/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java index de00d50b6e36..2e03d9a90f49 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/WakefulnessLifecycle.java @@ -17,10 +17,20 @@ package com.android.systemui.keyguard; import android.annotation.IntDef; +import android.app.IWallpaperManager; +import android.content.Context; +import android.content.res.Configuration; +import android.graphics.Point; +import android.os.Bundle; import android.os.PowerManager; +import android.os.RemoteException; import android.os.Trace; +import android.util.DisplayMetrics; + +import androidx.annotation.Nullable; import com.android.systemui.Dumpable; +import com.android.systemui.R; import com.android.systemui.dagger.SysUISingleton; import java.io.FileDescriptor; @@ -31,7 +41,7 @@ import java.lang.annotation.RetentionPolicy; import javax.inject.Inject; /** - * Tracks the wakefulness lifecycle. + * Tracks the wakefulness lifecycle, including why we're waking or sleeping. */ @SysUISingleton public class WakefulnessLifecycle extends Lifecycle<WakefulnessLifecycle.Observer> implements @@ -51,13 +61,32 @@ public class WakefulnessLifecycle extends Lifecycle<WakefulnessLifecycle.Observe public static final int WAKEFULNESS_AWAKE = 2; public static final int WAKEFULNESS_GOING_TO_SLEEP = 3; + private final Context mContext; + private final DisplayMetrics mDisplayMetrics; + + @Nullable + private final IWallpaperManager mWallpaperManagerService; + private int mWakefulness = WAKEFULNESS_ASLEEP; + private @PowerManager.WakeReason int mLastWakeReason = PowerManager.WAKE_REASON_UNKNOWN; + + @Nullable + private Point mLastWakeOriginLocation = null; + private @PowerManager.GoToSleepReason int mLastSleepReason = PowerManager.GO_TO_SLEEP_REASON_MIN; + @Nullable + private Point mLastSleepOriginLocation = null; + @Inject - public WakefulnessLifecycle() { + public WakefulnessLifecycle( + Context context, + @Nullable IWallpaperManager wallpaperManagerService) { + mContext = context; + mDisplayMetrics = context.getResources().getDisplayMetrics(); + mWallpaperManagerService = wallpaperManagerService; } public @Wakefulness int getWakefulness() { @@ -85,6 +114,17 @@ public class WakefulnessLifecycle extends Lifecycle<WakefulnessLifecycle.Observe } setWakefulness(WAKEFULNESS_WAKING); mLastWakeReason = pmWakeReason; + updateLastWakeOriginLocation(); + + if (mWallpaperManagerService != null) { + try { + mWallpaperManagerService.notifyWakingUp( + mLastWakeOriginLocation.x, mLastWakeOriginLocation.y, new Bundle()); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + dispatch(Observer::onStartedWakingUp); } @@ -102,6 +142,17 @@ public class WakefulnessLifecycle extends Lifecycle<WakefulnessLifecycle.Observe } setWakefulness(WAKEFULNESS_GOING_TO_SLEEP); mLastSleepReason = pmSleepReason; + updateLastSleepOriginLocation(); + + if (mWallpaperManagerService != null) { + try { + mWallpaperManagerService.notifyGoingToSleep( + mLastSleepOriginLocation.x, mLastSleepOriginLocation.y, new Bundle()); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + dispatch(Observer::onStartedGoingToSleep); } @@ -124,6 +175,60 @@ public class WakefulnessLifecycle extends Lifecycle<WakefulnessLifecycle.Observe Trace.traceCounter(Trace.TRACE_TAG_APP, "wakefulness", wakefulness); } + private void updateLastWakeOriginLocation() { + mLastWakeOriginLocation = null; + + switch (mLastWakeReason) { + case PowerManager.WAKE_REASON_POWER_BUTTON: + mLastWakeOriginLocation = getPowerButtonOrigin(); + break; + default: + mLastWakeOriginLocation = getDefaultWakeSleepOrigin(); + break; + } + } + + private void updateLastSleepOriginLocation() { + mLastSleepOriginLocation = null; + + switch (mLastSleepReason) { + case PowerManager.GO_TO_SLEEP_REASON_POWER_BUTTON: + mLastSleepOriginLocation = getPowerButtonOrigin(); + break; + default: + mLastSleepOriginLocation = getDefaultWakeSleepOrigin(); + break; + } + } + + /** + * Returns the point on the screen closest to the physical power button. + */ + private Point getPowerButtonOrigin() { + final boolean isPortrait = mContext.getResources().getConfiguration().orientation + == Configuration.ORIENTATION_PORTRAIT; + + if (isPortrait) { + return new Point( + mDisplayMetrics.widthPixels, + mContext.getResources().getDimensionPixelSize( + R.dimen.physical_power_button_center_screen_location_y)); + } else { + return new Point( + mContext.getResources().getDimensionPixelSize( + R.dimen.physical_power_button_center_screen_location_y), + mDisplayMetrics.heightPixels); + } + } + + /** + * Returns the point on the screen used as the default origin for wake/sleep events. This is the + * middle-bottom of the screen. + */ + private Point getDefaultWakeSleepOrigin() { + return new Point(mDisplayMetrics.widthPixels / 2, mDisplayMetrics.heightPixels); + } + public interface Observer { default void onStartedWakingUp() {} default void onFinishedWakingUp() {} diff --git a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt index 574ce0dffee0..5ba04a03a8d5 100644 --- a/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt +++ b/packages/SystemUI/src/com/android/systemui/media/MediaDataManager.kt @@ -227,7 +227,7 @@ class MediaDataManager( smartspaceSession = smartspaceManager.createSmartspaceSession( SmartspaceConfig.Builder(context, SMARTSPACE_UI_SURFACE_LABEL).build()) smartspaceSession?.let { - it.registerSmartspaceUpdates( + it.addOnTargetsAvailableListener( // Use a new thread listening to Smartspace updates instead of using the existing // backgroundExecutor. SmartspaceSession has scheduled routine updates which can be // unpredictable on test simulators, using the backgroundExecutor makes it's hard to @@ -235,7 +235,7 @@ class MediaDataManager( // Switch to use backgroundExecutor when SmartspaceSession has a good way to be // mocked. Executors.newCachedThreadPool(), - SmartspaceSession.Callback { targets -> + SmartspaceSession.OnTargetsAvailableListener { targets -> smartspaceMediaDataProvider.onTargetsAvailable(targets) }) } diff --git a/packages/SystemUI/src/com/android/systemui/people/NotificationHelper.java b/packages/SystemUI/src/com/android/systemui/people/NotificationHelper.java new file mode 100644 index 000000000000..68a829ca2e38 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/people/NotificationHelper.java @@ -0,0 +1,213 @@ +/* + * Copyright (C) 2021 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 com.android.systemui.people; + +import static android.Manifest.permission.READ_CONTACTS; +import static android.app.Notification.CATEGORY_MISSED_CALL; +import static android.app.Notification.EXTRA_MESSAGES; +import static android.app.Notification.EXTRA_PEOPLE_LIST; + +import android.annotation.Nullable; +import android.app.Notification; +import android.app.Person; +import android.content.pm.PackageManager; +import android.os.Parcelable; +import android.service.notification.StatusBarNotification; +import android.util.Log; + +import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.util.ArrayUtils; +import com.android.systemui.statusbar.notification.collection.NotificationEntry; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Objects; +import java.util.Set; + +/** Helper functions to handle notifications in People Tiles. */ +public class NotificationHelper { + private static final boolean DEBUG = PeopleSpaceUtils.DEBUG; + private static final String TAG = "PeopleNotificationHelper"; + + /** Returns the notification with highest priority to be shown in People Tiles. */ + public static NotificationEntry getHighestPriorityNotification( + Set<NotificationEntry> notificationEntries) { + if (notificationEntries == null || notificationEntries.isEmpty()) { + return null; + } + + return notificationEntries + .stream() + .filter(NotificationHelper::isMissedCallOrHasContent) + .sorted(notificationEntryComparator) + .findFirst().orElse(null); + } + + + /** Notification comparator, checking category and timestamps, in reverse order of priority. */ + public static Comparator<NotificationEntry> notificationEntryComparator = + new Comparator<NotificationEntry>() { + @Override + public int compare(NotificationEntry e1, NotificationEntry e2) { + Notification n1 = e1.getSbn().getNotification(); + Notification n2 = e2.getSbn().getNotification(); + + boolean missedCall1 = isMissedCall(n1); + boolean missedCall2 = isMissedCall(n2); + if (missedCall1 && !missedCall2) { + return -1; + } + if (!missedCall1 && missedCall2) { + return 1; + } + + // Get messages in reverse chronological order. + List<Notification.MessagingStyle.Message> messages1 = + getMessagingStyleMessages(n1); + List<Notification.MessagingStyle.Message> messages2 = + getMessagingStyleMessages(n2); + + if (messages1 != null && messages2 != null) { + Notification.MessagingStyle.Message message1 = messages1.get(0); + Notification.MessagingStyle.Message message2 = messages2.get(0); + return (int) (message2.getTimestamp() - message1.getTimestamp()); + } + + if (messages1 == null) { + return 1; + } + if (messages2 == null) { + return -1; + } + return (int) (n2.when - n1.when); + } + }; + + /** Returns whether {@code e} is a missed call notification. */ + public static boolean isMissedCall(NotificationEntry e) { + return e != null && e.getSbn().getNotification() != null + && isMissedCall(e.getSbn().getNotification()); + } + + /** Returns whether {@code notification} is a missed call notification. */ + public static boolean isMissedCall(Notification notification) { + return notification != null && Objects.equals(notification.category, CATEGORY_MISSED_CALL); + } + + private static boolean hasContent(NotificationEntry e) { + if (e == null) { + return false; + } + List<Notification.MessagingStyle.Message> messages = + getMessagingStyleMessages(e.getSbn().getNotification()); + return messages != null && !messages.isEmpty(); + } + + /** Returns whether {@code e} is a valid conversation notification. */ + public static boolean isValid(NotificationEntry e) { + return e != null && e.getRanking() != null + && e.getRanking().getConversationShortcutInfo() != null + && e.getSbn().getNotification() != null; + } + + /** Returns whether conversation notification should be shown in People Tile. */ + public static boolean isMissedCallOrHasContent(NotificationEntry e) { + return isMissedCall(e) || hasContent(e); + } + + /** Returns whether {@code sbn}'s package has permission to read contacts. */ + public static boolean hasReadContactsPermission( + PackageManager packageManager, StatusBarNotification sbn) { + return packageManager.checkPermission(READ_CONTACTS, + sbn.getPackageName()) == PackageManager.PERMISSION_GRANTED; + } + + /** + * Returns whether a notification should be matched to other Tiles by Uri. + * + * <p>Currently only matches missed calls. + */ + public static boolean shouldMatchNotificationByUri(StatusBarNotification sbn) { + Notification notification = sbn.getNotification(); + if (notification == null) { + if (DEBUG) Log.d(TAG, "Notification is null"); + return false; + } + boolean isMissedCall = isMissedCall(notification); + if (!isMissedCall) { + if (DEBUG) Log.d(TAG, "Not missed call"); + } + return isMissedCall; + } + + /** + * Try to retrieve a valid Uri via {@code sbn}, falling back to the {@code + * contactUriFromShortcut} if valid. + */ + @Nullable + public static String getContactUri(StatusBarNotification sbn) { + // First, try to get a Uri from the Person directly set on the Notification. + ArrayList<Person> people = sbn.getNotification().extras.getParcelableArrayList( + EXTRA_PEOPLE_LIST); + if (people != null && people.get(0) != null) { + String contactUri = people.get(0).getUri(); + if (contactUri != null && !contactUri.isEmpty()) { + return contactUri; + } + } + + // Then, try to get a Uri from the Person set on the Notification message. + List<Notification.MessagingStyle.Message> messages = + getMessagingStyleMessages(sbn.getNotification()); + if (messages != null && !messages.isEmpty()) { + Notification.MessagingStyle.Message message = messages.get(0); + Person sender = message.getSenderPerson(); + if (sender != null && sender.getUri() != null && !sender.getUri().isEmpty()) { + return sender.getUri(); + } + } + + return null; + } + + /** + * Returns {@link Notification.MessagingStyle.Message}s from the Notification in chronological + * order from most recent to least. + */ + @VisibleForTesting + @Nullable + public static List<Notification.MessagingStyle.Message> getMessagingStyleMessages( + Notification notification) { + if (notification == null) { + return null; + } + if (Notification.MessagingStyle.class.equals(notification.getNotificationStyle()) + && notification.extras != null) { + final Parcelable[] messages = notification.extras.getParcelableArray(EXTRA_MESSAGES); + if (!ArrayUtils.isEmpty(messages)) { + List<Notification.MessagingStyle.Message> sortedMessages = + Notification.MessagingStyle.Message.getMessagesFromBundleArray(messages); + sortedMessages.sort(Collections.reverseOrder( + Comparator.comparing(Notification.MessagingStyle.Message::getTimestamp))); + return sortedMessages; + } + } + return null; + } +} + diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleProvider.java b/packages/SystemUI/src/com/android/systemui/people/PeopleProvider.java index 41957bc91561..a9640566d531 100644 --- a/packages/SystemUI/src/com/android/systemui/people/PeopleProvider.java +++ b/packages/SystemUI/src/com/android/systemui/people/PeopleProvider.java @@ -16,36 +16,28 @@ package com.android.systemui.people; -import android.app.people.IPeopleManager; import android.content.ContentProvider; import android.content.ContentValues; -import android.content.Context; -import android.content.pm.LauncherApps; import android.content.pm.PackageManager; import android.database.Cursor; import android.net.Uri; import android.os.Binder; import android.os.Bundle; -import android.os.ServiceManager; import android.os.UserHandle; import android.util.Log; import android.widget.RemoteViews; -import com.android.systemui.Dependency; +import com.android.systemui.people.widget.PeopleSpaceWidgetManager; import com.android.systemui.shared.system.PeopleProviderUtils; -import com.android.systemui.statusbar.notification.NotificationEntryManager; /** API that returns a People Tile preview. */ public class PeopleProvider extends ContentProvider { - - LauncherApps mLauncherApps; - IPeopleManager mPeopleManager; - NotificationEntryManager mNotificationEntryManager; - private static final String TAG = "PeopleProvider"; private static final boolean DEBUG = PeopleSpaceUtils.DEBUG; private static final String EMPTY_STRING = ""; + PeopleSpaceWidgetManager mPeopleSpaceWidgetManager; + @Override public Bundle call(String method, String arg, Bundle extras) { if (!doesCallerHavePermission()) { @@ -83,17 +75,11 @@ public class PeopleProvider extends ContentProvider { throw new IllegalArgumentException("Null user handle"); } - // If services are not set as mocks in tests, fetch them now. - mPeopleManager = mPeopleManager != null ? mPeopleManager - : IPeopleManager.Stub.asInterface( - ServiceManager.getService(Context.PEOPLE_SERVICE)); - mLauncherApps = mLauncherApps != null ? mLauncherApps - : getContext().getSystemService(LauncherApps.class); - mNotificationEntryManager = mNotificationEntryManager != null ? mNotificationEntryManager - : Dependency.get(NotificationEntryManager.class); - - RemoteViews view = PeopleSpaceUtils.getPreview(getContext(), mPeopleManager, mLauncherApps, - mNotificationEntryManager, shortcutId, userHandle, packageName, extras); + if (mPeopleSpaceWidgetManager == null) { + mPeopleSpaceWidgetManager = new PeopleSpaceWidgetManager(getContext()); + } + RemoteViews view = + mPeopleSpaceWidgetManager.getPreview(shortcutId, userHandle, packageName, extras); if (view == null) { if (DEBUG) Log.d(TAG, "No preview available for shortcutId: " + shortcutId); return null; diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java index 38a6186ee7ea..ff14abe118ab 100644 --- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java +++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceActivity.java @@ -39,6 +39,7 @@ import android.widget.LinearLayout; import com.android.systemui.R; import com.android.systemui.people.widget.PeopleSpaceWidgetManager; +import com.android.systemui.people.widget.PeopleTileKey; import java.util.ArrayList; import java.util.List; @@ -136,14 +137,15 @@ public class PeopleSpaceActivity extends Activity { getSizeInDp(mContext, R.dimen.avatar_size_for_medium, mContext.getResources().getDisplayMetrics().density))); - tileView.setOnClickListener(v -> storeWidgetConfiguration(tile)); + PeopleTileKey key = new PeopleTileKey(tile); + tileView.setOnClickListener(v -> storeWidgetConfiguration(tile, key)); } catch (Exception e) { Log.e(TAG, "Couldn't retrieve shortcut information", e); } } /** Stores the user selected configuration for {@code mAppWidgetId}. */ - private void storeWidgetConfiguration(PeopleSpaceTile tile) { + private void storeWidgetConfiguration(PeopleSpaceTile tile, PeopleTileKey key) { if (PeopleSpaceUtils.DEBUG) { if (DEBUG) { Log.d(TAG, "Put " + tile.getUserName() + "'s shortcut ID: " @@ -151,7 +153,7 @@ public class PeopleSpaceActivity extends Activity { + mAppWidgetId); } } - mPeopleSpaceWidgetManager.addNewWidget(mAppWidgetId, tile); + mPeopleSpaceWidgetManager.addNewWidget(mAppWidgetId, key); finishActivity(); } diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java index c0a16e11df68..eefe5ca93793 100644 --- a/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java +++ b/packages/SystemUI/src/com/android/systemui/people/PeopleSpaceUtils.java @@ -16,8 +16,11 @@ package com.android.systemui.people; -import static android.app.Notification.CATEGORY_MISSED_CALL; -import static android.app.Notification.EXTRA_MESSAGES; +import static com.android.systemui.people.NotificationHelper.getContactUri; +import static com.android.systemui.people.NotificationHelper.getMessagingStyleMessages; +import static com.android.systemui.people.NotificationHelper.hasReadContactsPermission; +import static com.android.systemui.people.NotificationHelper.isMissedCall; +import static com.android.systemui.people.NotificationHelper.shouldMatchNotificationByUri; import android.app.Notification; import android.app.people.ConversationChannel; @@ -27,6 +30,7 @@ import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.LauncherApps; +import android.content.pm.PackageManager; import android.content.pm.ShortcutInfo; import android.database.Cursor; import android.database.SQLException; @@ -36,9 +40,6 @@ import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.net.Uri; import android.os.Bundle; -import android.os.Parcelable; -import android.os.ServiceManager; -import android.os.UserHandle; import android.os.UserManager; import android.provider.ContactsContract; import android.service.notification.StatusBarNotification; @@ -56,19 +57,16 @@ import com.android.settingslib.utils.ThreadUtils; import com.android.systemui.R; import com.android.systemui.people.widget.AppWidgetOptionsHelper; import com.android.systemui.people.widget.PeopleTileKey; -import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import java.text.SimpleDateFormat; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; +import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -185,73 +183,85 @@ public class PeopleSpaceUtils { editor.putStringSet(storageKey, storedWidgetIds); } - /** Augments a single {@link PeopleSpaceTile} with notification content, if one is present. */ - public static PeopleSpaceTile augmentSingleTileFromVisibleNotifications(Context context, - PeopleSpaceTile tile, NotificationEntryManager notificationEntryManager) { - List<PeopleSpaceTile> augmentedTile = augmentTilesFromVisibleNotifications( - context, Arrays.asList(tile), notificationEntryManager); - return augmentedTile.get(0); + /** Returns notifications that match provided {@code contactUri}. */ + public static List<NotificationEntry> getNotificationsByUri( + PackageManager packageManager, String contactUri, + Map<PeopleTileKey, Set<NotificationEntry>> notifications) { + if (DEBUG) Log.d(TAG, "Getting notifications by contact URI."); + if (TextUtils.isEmpty(contactUri)) { + return new ArrayList<>(); + } + return notifications.entrySet().stream().flatMap(e -> e.getValue().stream()) + .filter(e -> + hasReadContactsPermission(packageManager, e.getSbn()) + && shouldMatchNotificationByUri(e.getSbn()) + && Objects.equals(contactUri, getContactUri(e.getSbn())) + ) + .collect(Collectors.toList()); } - /** Adds to {@code tiles} any visible notifications. */ - public static List<PeopleSpaceTile> augmentTilesFromVisibleNotifications(Context context, - List<PeopleSpaceTile> tiles, NotificationEntryManager notificationEntryManager) { - if (notificationEntryManager == null) { - Log.w(TAG, "NotificationEntryManager is null"); - return tiles; - } - Map<PeopleTileKey, NotificationEntry> visibleNotifications = notificationEntryManager - .getVisibleNotifications() - .stream() - .filter(entry -> entry.getRanking() != null - && entry.getRanking().getConversationShortcutInfo() != null) - .collect(Collectors.toMap(PeopleTileKey::new, e -> e, - // Handle duplicate keys to avoid crashes. - (e1, e2) -> e1.getSbn().getNotification().when - > e2.getSbn().getNotification().when ? e1 : e2)); + /** Returns the total messages in {@code notificationEntries}.*/ + public static int getMessagesCount(Set<NotificationEntry> notificationEntries) { if (DEBUG) { - Log.d(TAG, "Number of visible notifications:" + visibleNotifications.size()); + Log.d(TAG, "Calculating messages count from " + notificationEntries.size() + + " notifications."); } - return tiles - .stream() - .map(entry -> augmentTileFromVisibleNotifications( - context, entry, visibleNotifications)) - .collect(Collectors.toList()); + int messagesCount = 0; + for (NotificationEntry entry : notificationEntries) { + Notification notification = entry.getSbn().getNotification(); + // Should not count messages from missed call notifications. + if (isMissedCall(notification)) { + continue; + } + + List<Notification.MessagingStyle.Message> messages = + getMessagingStyleMessages(notification); + if (messages != null) { + messagesCount += messages.size(); + } + } + return messagesCount; } - static PeopleSpaceTile augmentTileFromVisibleNotifications(Context context, - PeopleSpaceTile tile, Map<PeopleTileKey, NotificationEntry> visibleNotifications) { - PeopleTileKey key = new PeopleTileKey( - tile.getId(), getUserId(tile), tile.getPackageName()); - // TODO: Match missed calls with matching Uris in addition to keys. - if (!visibleNotifications.containsKey(key)) { - if (DEBUG) Log.d(TAG, "No existing notifications for key:" + key.toString()); - return tile; + /** Removes all notification related fields from {@code tile}. */ + public static PeopleSpaceTile removeNotificationFields(PeopleSpaceTile tile) { + if (DEBUG) { + Log.i(TAG, "Removing any notification stored for tile Id: " + tile.getId()); } - if (DEBUG) Log.d(TAG, "Augmenting tile from visible notifications, key:" + key.toString()); - return augmentTileFromNotification(context, tile, visibleNotifications.get(key).getSbn()); + return tile + .toBuilder() + // Reset notification content. + .setNotificationKey(null) + .setNotificationContent(null) + .setNotificationDataUri(null) + .setMessagesCount(0) + // Reset missed calls category. + .setNotificationCategory(null) + .build(); } - /** Augments {@code tile} with the notification content from {@code sbn}. */ + /** + * Augments {@code tile} with the notification content from {@code notificationEntry} and + * {@code messagesCount}. + */ public static PeopleSpaceTile augmentTileFromNotification(Context context, PeopleSpaceTile tile, - StatusBarNotification sbn) { - Notification notification = sbn.getNotification(); - if (notification == null) { + NotificationEntry notificationEntry, int messagesCount) { + if (notificationEntry == null || notificationEntry.getSbn().getNotification() == null) { if (DEBUG) Log.d(TAG, "Notification is null"); - return tile; + return removeNotificationFields(tile); } - boolean isMissedCall = Objects.equals(notification.category, CATEGORY_MISSED_CALL); + Notification notification = notificationEntry.getSbn().getNotification(); + boolean isMissedCall = isMissedCall(notification); List<Notification.MessagingStyle.Message> messages = getMessagingStyleMessages(notification); if (!isMissedCall && ArrayUtils.isEmpty(messages)) { if (DEBUG) Log.d(TAG, "Notification has no content"); - return tile; + return removeNotificationFields(tile); } // messages are in chronological order from most recent to least. Notification.MessagingStyle.Message message = messages != null ? messages.get(0) : null; - int messagesCount = messages != null ? messages.size() : 0; // If it's a missed call notification and it doesn't include content, use fallback value, // otherwise, use notification content. boolean hasMessageText = message != null && !TextUtils.isEmpty(message.getText()); @@ -262,7 +272,7 @@ public class PeopleSpaceUtils { return tile .toBuilder() - .setNotificationKey(sbn.getKey()) + .setNotificationKey(notificationEntry.getSbn().getKey()) .setNotificationCategory(notification.category) .setNotificationContent(content) .setNotificationDataUri(dataUri) @@ -270,30 +280,6 @@ public class PeopleSpaceUtils { .build(); } - /** - * Returns {@link Notification.MessagingStyle.Message}s from the Notification in chronological - * order from most recent to least. - */ - @VisibleForTesting - public static List<Notification.MessagingStyle.Message> getMessagingStyleMessages( - Notification notification) { - if (notification == null) { - return null; - } - if (Notification.MessagingStyle.class.equals(notification.getNotificationStyle()) - && notification.extras != null) { - final Parcelable[] messages = notification.extras.getParcelableArray(EXTRA_MESSAGES); - if (!ArrayUtils.isEmpty(messages)) { - List<Notification.MessagingStyle.Message> sortedMessages = - Notification.MessagingStyle.Message.getMessagesFromBundleArray(messages); - sortedMessages.sort(Collections.reverseOrder( - Comparator.comparing(Notification.MessagingStyle.Message::getTimestamp))); - return sortedMessages; - } - } - return null; - } - /** Returns a list sorted by ascending last interaction time from {@code stream}. */ public static List<PeopleSpaceTile> getSortedTiles(IPeopleManager peopleManager, LauncherApps launcherApps, UserManager userManager, @@ -467,7 +453,14 @@ public class PeopleSpaceUtils { /** Updates the current widget view with provided {@link PeopleSpaceTile}. */ public static void updateAppWidgetViews(AppWidgetManager appWidgetManager, Context context, int appWidgetId, PeopleSpaceTile tile, Bundle options) { - if (DEBUG) Log.d(TAG, "Widget: " + appWidgetId + ", " + tile.getUserName()); + if (tile == null) { + if (DEBUG) Log.d(TAG, "Widget: " + appWidgetId + ". Tile is null, skipping update"); + return; + } + if (DEBUG) { + Log.d(TAG, "Widget: " + appWidgetId + ", " + tile.getUserName() + ", " + + tile.getPackageName()); + } RemoteViews views = new PeopleTileViewHelper(context, tile, appWidgetId, options).getViews(); @@ -478,10 +471,24 @@ public class PeopleSpaceUtils { /** Updates tile in app widget options and the current view. */ public static void updateAppWidgetOptionsAndView(AppWidgetManager appWidgetManager, Context context, int appWidgetId, PeopleSpaceTile tile) { + if (tile == null) { + Log.d(TAG, "Tile is null, skipping storage and update."); + return; + } Bundle options = AppWidgetOptionsHelper.setPeopleTile(appWidgetManager, appWidgetId, tile); updateAppWidgetViews(appWidgetManager, context, appWidgetId, tile, options); } + /** Wrapper around {@link #updateAppWidgetOptionsAndView} with optional tile as a parameter. */ + public static void updateAppWidgetOptionsAndView(AppWidgetManager appWidgetManager, + Context context, int appWidgetId, Optional<PeopleSpaceTile> optionalTile) { + if (!optionalTile.isPresent()) { + Log.d(TAG, "Tile is null, skipping storage and update."); + return; + } + updateAppWidgetOptionsAndView(appWidgetManager, context, appWidgetId, optionalTile.get()); + } + /** * Returns lookup keys for all contacts with a birthday today. * @@ -523,42 +530,6 @@ public class PeopleSpaceUtils { return lookupKeysWithBirthdaysToday; } - /** - * Returns a {@link RemoteViews} preview of a Conversation's People Tile. Returns null if one - * is not available. - */ - public static RemoteViews getPreview(Context context, IPeopleManager peopleManager, - LauncherApps launcherApps, NotificationEntryManager notificationEntryManager, - String shortcutId, UserHandle userHandle, String packageName, Bundle options) { - peopleManager = (peopleManager != null) ? peopleManager : IPeopleManager.Stub.asInterface( - ServiceManager.getService(Context.PEOPLE_SERVICE)); - launcherApps = (launcherApps != null) ? launcherApps - : context.getSystemService(LauncherApps.class); - if (peopleManager == null || launcherApps == null) { - return null; - } - - ConversationChannel channel; - try { - channel = peopleManager.getConversation( - packageName, userHandle.getIdentifier(), shortcutId); - } catch (Exception e) { - Log.w(TAG, "Exception getting tiles: " + e); - return null; - } - PeopleSpaceTile tile = PeopleSpaceUtils.getTile(channel, launcherApps); - - if (tile == null) { - if (DEBUG) Log.i(TAG, "No tile was returned"); - return null; - } - PeopleSpaceTile augmentedTile = augmentSingleTileFromVisibleNotifications( - context, tile, notificationEntryManager); - - if (DEBUG) Log.i(TAG, "Returning tile preview for shortcutId: " + shortcutId); - return new PeopleTileViewHelper(context, augmentedTile, 0, options).getViews(); - } - /** Returns the userId associated with a {@link PeopleSpaceTile} */ public static int getUserId(PeopleSpaceTile tile) { return tile.getUserHandle().getIdentifier(); diff --git a/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java b/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java index 6b917c576fd8..dd89f749d1bc 100644 --- a/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java +++ b/packages/SystemUI/src/com/android/systemui/people/PeopleTileViewHelper.java @@ -71,7 +71,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; -class PeopleTileViewHelper { +/** Functions that help creating the People tile layouts. */ +public class PeopleTileViewHelper { /** Turns on debugging information about People Space. */ public static final boolean DEBUG = true; private static final String TAG = "PeopleTileView"; @@ -115,7 +116,7 @@ class PeopleTileViewHelper { private Locale mLocale; private NumberFormat mIntegerFormat; - PeopleTileViewHelper(Context context, PeopleSpaceTile tile, + public PeopleTileViewHelper(Context context, PeopleSpaceTile tile, int appWidgetId, Bundle options) { mContext = context; mTile = tile; @@ -346,6 +347,7 @@ class PeopleTileViewHelper { private RemoteViews createMissedCallRemoteViews() { RemoteViews views = getViewForContentLayout(); views.setViewVisibility(R.id.predefined_icon, View.VISIBLE); + views.setViewVisibility(R.id.messages_count, View.GONE); setMaxLines(views); views.setTextViewText(R.id.text_content, mTile.getNotificationContent()); views.setImageViewResource(R.id.predefined_icon, R.drawable.ic_phone_missed); @@ -546,7 +548,6 @@ class PeopleTileViewHelper { if (mLayoutSize == LAYOUT_SMALL) { views.setViewVisibility(R.id.predefined_icon, View.VISIBLE); views.setViewVisibility(R.id.name, View.GONE); - views.setViewVisibility(R.id.messages_count, View.GONE); } else { views.setViewVisibility(R.id.predefined_icon, View.GONE); views.setViewVisibility(R.id.name, View.VISIBLE); @@ -561,6 +562,7 @@ class PeopleTileViewHelper { views.setViewPadding(R.id.item, horizontalPadding, verticalPadding, horizontalPadding, verticalPadding); } + views.setViewVisibility(R.id.messages_count, View.GONE); return views; } diff --git a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java index fb0dcc2bc50a..f11c1bdc6bfb 100644 --- a/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java +++ b/packages/SystemUI/src/com/android/systemui/people/widget/PeopleSpaceWidgetManager.java @@ -17,24 +17,25 @@ package com.android.systemui.people.widget; import static android.Manifest.permission.READ_CONTACTS; -import static android.app.Notification.CATEGORY_MISSED_CALL; -import static android.app.Notification.EXTRA_PEOPLE_LIST; +import static com.android.systemui.people.NotificationHelper.getContactUri; +import static com.android.systemui.people.NotificationHelper.getHighestPriorityNotification; +import static com.android.systemui.people.NotificationHelper.shouldMatchNotificationByUri; import static com.android.systemui.people.PeopleSpaceUtils.EMPTY_STRING; import static com.android.systemui.people.PeopleSpaceUtils.INVALID_USER_ID; import static com.android.systemui.people.PeopleSpaceUtils.PACKAGE_NAME; import static com.android.systemui.people.PeopleSpaceUtils.SHORTCUT_ID; import static com.android.systemui.people.PeopleSpaceUtils.USER_ID; import static com.android.systemui.people.PeopleSpaceUtils.augmentTileFromNotification; -import static com.android.systemui.people.PeopleSpaceUtils.getMessagingStyleMessages; -import static com.android.systemui.people.PeopleSpaceUtils.getStoredWidgetIds; +import static com.android.systemui.people.PeopleSpaceUtils.getMessagesCount; +import static com.android.systemui.people.PeopleSpaceUtils.getNotificationsByUri; +import static com.android.systemui.people.PeopleSpaceUtils.removeNotificationFields; import static com.android.systemui.people.PeopleSpaceUtils.updateAppWidgetOptionsAndView; import static com.android.systemui.people.PeopleSpaceUtils.updateAppWidgetViews; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.INotificationManager; -import android.app.Notification; import android.app.NotificationChannel; import android.app.PendingIntent; import android.app.Person; @@ -49,6 +50,7 @@ import android.content.SharedPreferences; import android.content.pm.LauncherApps; import android.content.pm.PackageManager; import android.content.pm.ShortcutInfo; +import android.graphics.drawable.Icon; import android.net.Uri; import android.os.Bundle; import android.os.ServiceManager; @@ -67,10 +69,13 @@ import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.UiEventLoggerImpl; import com.android.settingslib.utils.ThreadUtils; import com.android.systemui.Dependency; +import com.android.systemui.people.NotificationHelper; import com.android.systemui.people.PeopleSpaceUtils; +import com.android.systemui.people.PeopleTileViewHelper; import com.android.systemui.statusbar.NotificationListener; import com.android.systemui.statusbar.NotificationListener.NotificationHandler; import com.android.systemui.statusbar.notification.NotificationEntryManager; +import com.android.systemui.statusbar.notification.collection.NotificationEntry; import java.util.ArrayList; import java.util.Collections; @@ -78,8 +83,10 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Objects; +import java.util.Optional; import java.util.Set; +import java.util.function.Function; +import java.util.stream.Collectors; import java.util.stream.Stream; import javax.inject.Inject; @@ -272,9 +279,10 @@ public class PeopleSpaceWidgetManager { private void updateWidgetsWithNotificationChangedInBackground(StatusBarNotification sbn, PeopleSpaceUtils.NotificationAction action) { try { - String sbnShortcutId = sbn.getShortcutId(); - if (sbnShortcutId == null) { - if (DEBUG) Log.d(TAG, "Sbn shortcut id is null"); + PeopleTileKey key = new PeopleTileKey( + sbn.getShortcutId(), sbn.getUser().getIdentifier(), sbn.getPackageName()); + if (!key.isValid()) { + Log.d(TAG, "Invalid key from sbn"); return; } int[] widgetIds = mAppWidgetManager.getAppWidgetIds( @@ -284,21 +292,15 @@ public class PeopleSpaceWidgetManager { Log.d(TAG, "No app widget ids returned"); return; } - PeopleTileKey key = new PeopleTileKey( - sbnShortcutId, - sbn.getUser().getIdentifier(), - sbn.getPackageName()); - if (!key.isValid()) { - Log.d(TAG, "Invalid key"); - return; - } synchronized (mLock) { - // First, update People Tiles associated with the Notification's package/shortcut. - Set<String> tilesUpdatedByKey = getStoredWidgetIds(mSharedPrefs, key); - updateWidgetIdsForNotificationAction(tilesUpdatedByKey, sbn, action); - - // Then, update People Tiles across other packages that use the same Uri. - updateTilesByUri(key, sbn, action); + Set<String> tilesUpdated = getMatchingKeyWidgetIds(key); + Set<String> tilesUpdatedByUri = getMatchingUriWidgetIds(sbn, action); + if (DEBUG) { + Log.d(TAG, "Widgets by key to be updated:" + tilesUpdated.toString()); + Log.d(TAG, "Widgets by URI to be updated:" + tilesUpdatedByUri.toString()); + } + tilesUpdated.addAll(tilesUpdatedByUri); + updateWidgetIdsBasedOnNotifications(tilesUpdated); } } catch (Exception e) { Log.e(TAG, "Throwing exception: " + e); @@ -306,36 +308,142 @@ public class PeopleSpaceWidgetManager { } /** Updates {@code widgetIdsToUpdate} with {@code action}. */ - private void updateWidgetIdsForNotificationAction(Set<String> widgetIdsToUpdate, - StatusBarNotification sbn, PeopleSpaceUtils.NotificationAction action) { - for (String widgetIdString : widgetIdsToUpdate) { - int widgetId = Integer.parseInt(widgetIdString); - PeopleSpaceTile storedTile = getTileForExistingWidget(widgetId); - if (storedTile == null) { - if (DEBUG) Log.d(TAG, "Could not find stored tile for notification"); - continue; + private void updateWidgetIdsBasedOnNotifications(Set<String> widgetIdsToUpdate) { + Log.d(TAG, "Fetching grouped notifications"); + try { + Map<PeopleTileKey, Set<NotificationEntry>> groupedNotifications = + getGroupedConversationNotifications(); + + widgetIdsToUpdate + .stream() + .map(Integer::parseInt) + .collect(Collectors.toMap( + Function.identity(), + id -> getAugmentedTileForExistingWidget(id, groupedNotifications))) + .forEach((id, tile) -> + updateAppWidgetOptionsAndView(mAppWidgetManager, mContext, id, tile)); + } catch (Exception e) { + Log.e(TAG, "Exception updating widgets: " + e); + } + } + + /** + * Augments {@code tile} based on notifications returned from {@code notificationEntryManager}. + */ + public PeopleSpaceTile augmentTileFromNotificationEntryManager(PeopleSpaceTile tile) { + Log.d(TAG, "Augmenting tile from NotificationEntryManager widget: " + tile.getId()); + Map<PeopleTileKey, Set<NotificationEntry>> notifications = + getGroupedConversationNotifications(); + String contactUri = null; + if (tile.getContactUri() != null) { + contactUri = tile.getContactUri().toString(); + } + return augmentTileFromNotifications(tile, contactUri, notifications); + } + + /** Returns active and pending notifications grouped by {@link PeopleTileKey}. */ + public Map<PeopleTileKey, Set<NotificationEntry>> getGroupedConversationNotifications() { + List<NotificationEntry> notifications = + new ArrayList<>(mNotificationEntryManager.getVisibleNotifications()); + Iterable<NotificationEntry> pendingNotifications = + mNotificationEntryManager.getPendingNotificationsIterator(); + for (NotificationEntry entry : pendingNotifications) { + notifications.add(entry); + } + if (DEBUG) Log.d(TAG, "Number of total notifications: " + notifications.size()); + Map<PeopleTileKey, Set<NotificationEntry>> groupedNotifications = + notifications + .stream() + .filter(entry -> NotificationHelper.isValid(entry) + && NotificationHelper.isMissedCallOrHasContent(entry)) + .collect(Collectors.groupingBy( + PeopleTileKey::new, + Collectors.mapping(Function.identity(), Collectors.toSet()))); + if (DEBUG) { + Log.d(TAG, "Number of grouped conversation notifications keys: " + + groupedNotifications.keySet().size()); + } + return groupedNotifications; + } + + /** Augments {@code tile} based on {@code notifications}, matching {@code contactUri}. */ + public PeopleSpaceTile augmentTileFromNotifications(PeopleSpaceTile tile, String contactUri, + Map<PeopleTileKey, Set<NotificationEntry>> notifications) { + if (DEBUG) Log.d(TAG, "Augmenting tile from notifications. Tile id: " + tile.getId()); + boolean hasReadContactsPermission = mPackageManager.checkPermission(READ_CONTACTS, + tile.getPackageName()) == PackageManager.PERMISSION_GRANTED; + + List<NotificationEntry> notificationsByUri = new ArrayList<>(); + if (hasReadContactsPermission) { + notificationsByUri = getNotificationsByUri(mPackageManager, contactUri, notifications); + if (!notificationsByUri.isEmpty()) { + if (DEBUG) { + Log.d(TAG, "Number of notifications matched by contact URI: " + + notificationsByUri.size()); + } } - if (DEBUG) Log.d(TAG, "Storing notification change, key:" + sbn.getKey()); - updateStorageAndViewWithNotificationData(sbn, action, widgetId, - storedTile); } + + PeopleTileKey key = new PeopleTileKey(tile); + Set<NotificationEntry> allNotifications = notifications.get(key); + if (allNotifications == null) { + allNotifications = new HashSet<>(); + } + if (allNotifications.isEmpty() && notificationsByUri.isEmpty()) { + if (DEBUG) Log.d(TAG, "No existing notifications for tile: " + key); + return removeNotificationFields(tile); + } + + // Merge notifications matched by key and by contact URI. + allNotifications.addAll(notificationsByUri); + if (DEBUG) Log.d(TAG, "Total notifications matching tile: " + allNotifications.size()); + + int messagesCount = getMessagesCount(allNotifications); + NotificationEntry highestPriority = getHighestPriorityNotification(allNotifications); + + if (DEBUG) Log.d(TAG, "Augmenting tile from notification, key: " + key.toString()); + return augmentTileFromNotification(mContext, tile, highestPriority, messagesCount); + } + + /** Returns an augmented tile for an existing widget. */ + @Nullable + public Optional<PeopleSpaceTile> getAugmentedTileForExistingWidget(int widgetId, + Map<PeopleTileKey, Set<NotificationEntry>> notifications) { + Log.d(TAG, "Augmenting tile for widget: " + widgetId); + PeopleSpaceTile tile = getTileForExistingWidget(widgetId); + if (tile == null) { + return Optional.empty(); + } + String contactUriString = mSharedPrefs.getString(String.valueOf(widgetId), null); + // Should never be null, but using ofNullable for extra safety. + return Optional.ofNullable( + augmentTileFromNotifications(tile, contactUriString, notifications)); + } + + /** Returns stored widgets for the conversation specified. */ + public Set<String> getMatchingKeyWidgetIds(PeopleTileKey key) { + if (!key.isValid()) { + return new HashSet<>(); + } + return new HashSet<>(mSharedPrefs.getStringSet(key.toString(), new HashSet<>())); } /** - * Updates tiles with matched Uris, dependent on the {@code action}. + * Updates in-memory map of tiles with matched Uris, dependent on the {@code action}. * * <p>If the notification was added, adds the notification based on the contact Uri within * {@code sbn}. * <p>If the notification was removed, removes the notification based on the in-memory map of * widgets previously updated by Uri (since the contact Uri is stripped from the {@code sbn}). */ - private void updateTilesByUri(PeopleTileKey key, StatusBarNotification sbn, + @Nullable + private Set<String> getMatchingUriWidgetIds(StatusBarNotification sbn, PeopleSpaceUtils.NotificationAction action) { if (action.equals(PeopleSpaceUtils.NotificationAction.POSTED)) { - Set<String> widgetIdsUpdatedByUri = supplementTilesByUri(sbn, action, key); + Set<String> widgetIdsUpdatedByUri = fetchMatchingUriWidgetIds(sbn); if (widgetIdsUpdatedByUri != null && !widgetIdsUpdatedByUri.isEmpty()) { - if (DEBUG) Log.d(TAG, "Added due to uri: " + widgetIdsUpdatedByUri); mNotificationKeyToWidgetIdsMatchedByUri.put(sbn.getKey(), widgetIdsUpdatedByUri); + return widgetIdsUpdatedByUri; } } else { // Remove the notification on any widgets where the notification was added @@ -343,21 +451,16 @@ public class PeopleSpaceWidgetManager { Set<String> widgetsPreviouslyUpdatedByUri = mNotificationKeyToWidgetIdsMatchedByUri.remove(sbn.getKey()); if (widgetsPreviouslyUpdatedByUri != null && !widgetsPreviouslyUpdatedByUri.isEmpty()) { - if (DEBUG) Log.d(TAG, "Remove due to uri: " + widgetsPreviouslyUpdatedByUri); - updateWidgetIdsForNotificationAction(widgetsPreviouslyUpdatedByUri, sbn, - action); + return widgetsPreviouslyUpdatedByUri; } } + return new HashSet<>(); } - /** - * Retrieves from storage any tiles with the same contact Uri as linked via the {@code sbn}. - * Supplements the tiles with the notification content only if they still have {@link - * android.Manifest.permission.READ_CONTACTS} permission. - */ + /** Fetches widget Ids that match the contact URI in {@code sbn}. */ @Nullable - private Set<String> supplementTilesByUri(StatusBarNotification sbn, - PeopleSpaceUtils.NotificationAction notificationAction, PeopleTileKey key) { + private Set<String> fetchMatchingUriWidgetIds(StatusBarNotification sbn) { + // Check if it's a missed call notification if (!shouldMatchNotificationByUri(sbn)) { if (DEBUG) Log.d(TAG, "Should not supplement conversation"); return null; @@ -377,80 +480,7 @@ public class PeopleSpaceWidgetManager { if (DEBUG) Log.d(TAG, "No tiles for contact"); return null; } - - if (mPackageManager.checkPermission(READ_CONTACTS, - sbn.getPackageName()) != PackageManager.PERMISSION_GRANTED) { - if (DEBUG) Log.d(TAG, "Notifying app missing permissions"); - return null; - } - - Set<String> widgetIdsUpdatedByUri = new HashSet<>(); - for (String widgetIdString : storedWidgetIdsByUri) { - int widgetId = Integer.parseInt(widgetIdString); - PeopleSpaceTile storedTile = getTileForExistingWidget(widgetId); - // Don't update a widget already updated. - if (key.equals(new PeopleTileKey(storedTile))) { - continue; - } - if (storedTile == null || mPackageManager.checkPermission(READ_CONTACTS, - storedTile.getPackageName()) != PackageManager.PERMISSION_GRANTED) { - if (DEBUG) Log.d(TAG, "Cannot supplement tile: " + storedTile.getUserName()); - continue; - } - if (DEBUG) Log.d(TAG, "Adding notification by uri: " + sbn.getKey()); - updateStorageAndViewWithNotificationData(sbn, notificationAction, - widgetId, storedTile); - widgetIdsUpdatedByUri.add(String.valueOf(widgetId)); - } - return widgetIdsUpdatedByUri; - } - - /** - * Try to retrieve a valid Uri via {@code sbn}, falling back to the {@code - * contactUriFromShortcut} if valid. - */ - @Nullable - private String getContactUri(StatusBarNotification sbn) { - // First, try to get a Uri from the Person directly set on the Notification. - ArrayList<Person> people = sbn.getNotification().extras.getParcelableArrayList( - EXTRA_PEOPLE_LIST); - if (people != null && people.get(0) != null) { - String contactUri = people.get(0).getUri(); - if (contactUri != null && !contactUri.isEmpty()) { - return contactUri; - } - } - - // Then, try to get a Uri from the Person set on the Notification message. - List<Notification.MessagingStyle.Message> messages = - getMessagingStyleMessages(sbn.getNotification()); - if (messages != null && !messages.isEmpty()) { - Notification.MessagingStyle.Message message = messages.get(0); - Person sender = message.getSenderPerson(); - if (sender != null && sender.getUri() != null && !sender.getUri().isEmpty()) { - return sender.getUri(); - } - } - - return null; - } - - /** - * Returns whether a notification should be matched to other Tiles by Uri. - * - * <p>Currently only matches missed calls. - */ - private boolean shouldMatchNotificationByUri(StatusBarNotification sbn) { - Notification notification = sbn.getNotification(); - if (notification == null) { - if (DEBUG) Log.d(TAG, "Notification is null"); - return false; - } - if (!Objects.equals(notification.category, CATEGORY_MISSED_CALL)) { - if (DEBUG) Log.d(TAG, "Not missed call"); - return false; - } - return true; + return storedWidgetIdsByUri; } /** @@ -461,7 +491,7 @@ public class PeopleSpaceWidgetManager { synchronized (mLock) { PeopleTileKey key = new PeopleTileKey( info.getId(), info.getUserId(), info.getPackage()); - Set<String> storedWidgetIds = getStoredWidgetIds(mSharedPrefs, key); + Set<String> storedWidgetIds = getMatchingKeyWidgetIds(key); for (String widgetIdString : storedWidgetIds) { if (DEBUG) { Log.d(TAG, @@ -469,7 +499,7 @@ public class PeopleSpaceWidgetManager { + info.getLabel()); } updateStorageAndViewWithConversationData(conversation, - Integer.valueOf(widgetIdString)); + Integer.parseInt(widgetIdString)); } } } @@ -484,52 +514,31 @@ public class PeopleSpaceWidgetManager { if (DEBUG) Log.d(TAG, "Could not find stored tile to add conversation to"); return; } + PeopleSpaceTile.Builder updatedTile = storedTile.toBuilder(); ShortcutInfo info = conversation.getShortcutInfo(); Uri uri = null; if (info.getPersons() != null && info.getPersons().length > 0) { Person person = info.getPersons()[0]; uri = person.getUri() == null ? null : Uri.parse(person.getUri()); } - storedTile = storedTile.toBuilder() - .setUserName(info.getLabel()) - .setUserIcon( - PeopleSpaceTile.convertDrawableToIcon(mLauncherApps.getShortcutIconDrawable( - info, 0))) + CharSequence label = info.getLabel(); + if (label != null) { + updatedTile.setUserName(label); + } + Icon icon = PeopleSpaceTile.convertDrawableToIcon(mLauncherApps.getShortcutIconDrawable( + info, 0)); + if (icon != null) { + updatedTile.setUserIcon(icon); + } + updatedTile .setContactUri(uri) .setStatuses(conversation.getStatuses()) .setLastInteractionTimestamp(conversation.getLastEventTimestamp()) .setIsImportantConversation(conversation.getParentNotificationChannel() != null && conversation.getParentNotificationChannel().isImportantConversation()) .build(); - updateAppWidgetOptionsAndView(mAppWidgetManager, mContext, appWidgetId, storedTile); - } - - /** - * Update {@code appWidgetId} with the new data provided by {@code sbn}. - */ - private void updateStorageAndViewWithNotificationData( - StatusBarNotification sbn, - PeopleSpaceUtils.NotificationAction notificationAction, - int appWidgetId, PeopleSpaceTile storedTile) { - if (notificationAction == PeopleSpaceUtils.NotificationAction.POSTED) { - if (DEBUG) Log.i(TAG, "Adding notification to storage, appWidgetId: " + appWidgetId); - storedTile = augmentTileFromNotification(mContext, storedTile, sbn); - } else if (Objects.equals(storedTile.getNotificationKey(), sbn.getKey())) { - if (DEBUG) { - Log.i(TAG, "Removing notification from storage, appWidgetId: " + appWidgetId); - } - storedTile = storedTile - .toBuilder() - // Reset notification content. - .setNotificationKey(null) - .setNotificationContent(null) - .setNotificationDataUri(null) - .setMessagesCount(0) - // Reset missed calls category. - .setNotificationCategory(null) - .build(); - } - updateAppWidgetOptionsAndView(mAppWidgetManager, mContext, appWidgetId, storedTile); + updateAppWidgetOptionsAndView(mAppWidgetManager, mContext, appWidgetId, + updatedTile.build()); } /** @@ -615,22 +624,10 @@ public class PeopleSpaceWidgetManager { public void addNewWidget(int appWidgetId, PeopleTileKey key) { if (DEBUG) Log.d(TAG, "addNewWidget called with key for appWidgetId: " + appWidgetId); PeopleSpaceTile tile = getTileFromPersistentStorage(key); - tile = PeopleSpaceUtils.augmentSingleTileFromVisibleNotifications( - mContext, tile, mNotificationEntryManager); - if (tile != null) { - addNewWidget(appWidgetId, tile); - } - } - - /** - * Adds a widget based on {@code tile} mapped to {@code appWidgetId}. - * The tile provided should already be augmented. - */ - public void addNewWidget(int appWidgetId, PeopleSpaceTile tile) { - if (DEBUG) Log.d(TAG, "addNewWidget called for appWidgetId: " + appWidgetId); if (tile == null) { return; } + tile = augmentTileFromNotificationEntryManager(tile); PeopleTileKey existingKeyIfStored; synchronized (mLock) { @@ -648,7 +645,6 @@ public class PeopleSpaceWidgetManager { synchronized (mLock) { if (DEBUG) Log.d(TAG, "Add storage for : " + tile.getId()); - PeopleTileKey key = new PeopleTileKey(tile); PeopleSpaceUtils.setSharedPreferencesStorageForTile(mContext, key, appWidgetId, tile.getContactUri()); } @@ -780,8 +776,7 @@ public class PeopleSpaceWidgetManager { public boolean requestPinAppWidget(ShortcutInfo shortcutInfo, Bundle options) { if (DEBUG) Log.d(TAG, "Requesting pin widget, shortcutId: " + shortcutInfo.getId()); - RemoteViews widgetPreview = PeopleSpaceUtils.getPreview(mContext, mIPeopleManager, - mLauncherApps, mNotificationEntryManager, shortcutInfo.getId(), + RemoteViews widgetPreview = getPreview(shortcutInfo.getId(), shortcutInfo.getUserHandle(), shortcutInfo.getPackage(), options); if (widgetPreview == null) { Log.w(TAG, "Skipping pinning widget: no tile for shortcutId: " + shortcutInfo.getId()); @@ -811,8 +806,6 @@ public class PeopleSpaceWidgetManager { List<PeopleSpaceTile> priorityTiles = PeopleSpaceUtils.getSortedTiles(mIPeopleManager, mLauncherApps, mUserManager, priorityConversations); - priorityTiles = PeopleSpaceUtils.augmentTilesFromVisibleNotifications( - mContext, priorityTiles, mNotificationEntryManager); return priorityTiles; } @@ -839,9 +832,33 @@ public class PeopleSpaceWidgetManager { List<PeopleSpaceTile> recentTiles = PeopleSpaceUtils.getSortedTiles(mIPeopleManager, mLauncherApps, mUserManager, mergedStream); - - recentTiles = PeopleSpaceUtils.augmentTilesFromVisibleNotifications( - mContext, recentTiles, mNotificationEntryManager); return recentTiles; } + + /** + * Returns a {@link RemoteViews} preview of a Conversation's People Tile. Returns null if one + * is not available. + */ + public RemoteViews getPreview(String shortcutId, UserHandle userHandle, String packageName, + Bundle options) { + PeopleSpaceTile tile; + ConversationChannel channel; + try { + channel = mIPeopleManager.getConversation( + packageName, userHandle.getIdentifier(), shortcutId); + tile = PeopleSpaceUtils.getTile(channel, mLauncherApps); + } catch (Exception e) { + Log.w(TAG, "Exception getting tiles: " + e); + return null; + } + if (tile == null) { + if (DEBUG) Log.i(TAG, "No tile was returned"); + return null; + } + + PeopleSpaceTile augmentedTile = augmentTileFromNotificationEntryManager(tile); + + if (DEBUG) Log.i(TAG, "Returning tile preview for shortcutId: " + shortcutId); + return new PeopleTileViewHelper(mContext, augmentedTile, 0, options).getViews(); + } } diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt index dc22dc17cb85..9e8f6b82c182 100644 --- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt +++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyDialog.kt @@ -119,7 +119,7 @@ class PrivacyDialog( } else { app } - val firstLine = context.getString(stringId, appName, element.type.getName(context)) + val firstLine = context.getString(stringId, appName) val finalText = element.attribution?.let { TextUtils.concat( firstLine, diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java index bf9acc27ebf6..6b09e2eb7b8b 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSContainerImpl.java @@ -206,6 +206,12 @@ public class QSContainerImpl extends FrameLayout { layoutParams.topMargin = mContext.getResources().getDimensionPixelSize( com.android.internal.R.dimen.quick_qs_offset_height); mQSPanelContainer.setLayoutParams(layoutParams); + mQSPanelContainer.setPaddingRelative( + mQSPanelContainer.getPaddingStart(), + mQSPanelContainer.getPaddingTop(), + mQSPanelContainer.getPaddingEnd(), + mContext.getResources().getDimensionPixelSize(R.dimen.qs_container_bottom_padding) + ); mSideMargins = getResources().getDimensionPixelSize(R.dimen.notification_side_paddings); int padding = getResources().getDimensionPixelSize( @@ -237,6 +243,8 @@ public class QSContainerImpl extends FrameLayout { int scrollBottom = calculateContainerBottom(); setBottom(getTop() + height); mQSDetail.setBottom(getTop() + scrollBottom); + int qsDetailBottomMargin = ((MarginLayoutParams) mQSDetail.getLayoutParams()).bottomMargin; + mQSDetail.setBottom(getTop() + scrollBottom - qsDetailBottomMargin); mBackground.setTop(mQSPanelContainer.getTop()); updateBackgroundBottom(scrollBottom, animate); } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java index 980024eefa08..05197e46fb25 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSDetail.java @@ -150,6 +150,12 @@ public class QSDetail extends LinearLayout { public void updateResources() { updateDetailText(); + MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams(); + lp.topMargin = mContext.getResources().getDimensionPixelSize( + com.android.internal.R.dimen.quick_qs_offset_height); + lp.bottomMargin = mContext.getResources().getDimensionPixelSize( + R.dimen.qs_container_bottom_padding); + setLayoutParams(lp); } public boolean isClosingDetail() { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java index 5b6b5dfd123d..93ccfc7288e7 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java @@ -16,12 +16,14 @@ package com.android.systemui.qs; +import static com.android.systemui.classifier.Classifier.QS_SWIPE; import static com.android.systemui.media.dagger.MediaModule.QS_PANEL; import static com.android.systemui.qs.QSPanel.QS_SHOW_BRIGHTNESS; import static com.android.systemui.qs.dagger.QSFragmentModule.QS_USING_MEDIA_PLAYER; import android.annotation.NonNull; import android.content.res.Configuration; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; @@ -31,6 +33,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.systemui.dump.DumpManager; import com.android.systemui.media.MediaHierarchyManager; import com.android.systemui.media.MediaHost; +import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.qs.DetailAdapter; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.qs.customize.QSCustomizerController; @@ -58,6 +61,7 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> { private final TunerService mTunerService; private final QSCustomizerController mQsCustomizerController; private final QSTileRevealController.Factory mQsTileRevealControllerFactory; + private final FalsingManager mFalsingManager; private final BrightnessController mBrightnessController; private final BrightnessSlider.Factory mBrightnessSliderFactory; private final BrightnessSlider mBrightnessSlider; @@ -81,6 +85,16 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> { private final BrightnessMirrorController.BrightnessMirrorListener mBrightnessMirrorListener = mirror -> updateBrightnessMirror(); + private View.OnTouchListener mTileLayoutTouchListener = new View.OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + if (event.getActionMasked() == MotionEvent.ACTION_UP) { + mFalsingManager.isFalseTouch(QS_SWIPE); + } + return false; + } + }; + @Inject QSPanelController(QSPanel view, QSSecurityFooter qsSecurityFooter, TunerService tunerService, QSTileHost qstileHost, QSCustomizerController qsCustomizerController, @@ -89,7 +103,7 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> { QSTileRevealController.Factory qsTileRevealControllerFactory, DumpManager dumpManager, MetricsLogger metricsLogger, UiEventLogger uiEventLogger, QSLogger qsLogger, BrightnessController.Factory brightnessControllerFactory, - BrightnessSlider.Factory brightnessSliderFactory, + BrightnessSlider.Factory brightnessSliderFactory, FalsingManager falsingManager, FeatureFlags featureFlags) { super(view, qstileHost, qsCustomizerController, usingMediaPlayer, mediaHost, metricsLogger, uiEventLogger, qsLogger, dumpManager, featureFlags); @@ -97,6 +111,7 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> { mTunerService = tunerService; mQsCustomizerController = qsCustomizerController; mQsTileRevealControllerFactory = qsTileRevealControllerFactory; + mFalsingManager = falsingManager; mQsSecurityFooter.setHostEnvironment(qstileHost); mBrightnessSliderFactory = brightnessSliderFactory; @@ -133,6 +148,9 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> { if (mBrightnessMirrorController != null) { mBrightnessMirrorController.addCallback(mBrightnessMirrorListener); } + + ((PagedTileLayout) mView.createRegularTileLayout()) + .setOnTouchListener(mTileLayoutTouchListener); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java index 3f063125ef85..e3f00f42d2ca 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java @@ -85,10 +85,13 @@ public class QuickStatusBarHeader extends FrameLayout { private int mTopViewMeasureHeight; private final String mMobileSlotName; + private final String mCallStrengthSlotName; public QuickStatusBarHeader(Context context, AttributeSet attrs) { super(context, attrs); mMobileSlotName = context.getString(com.android.internal.R.string.status_bar_no_calling); + mCallStrengthSlotName = + context.getString(com.android.internal.R.string.status_bar_call_strength); } /** @@ -218,22 +221,38 @@ public class QuickStatusBarHeader extends FrameLayout { } private void updateAlphaAnimator() { - StatusBarIconView icon = + StatusBarIconView noCallingIcon = ((StatusBarIconView) mIconContainer.getViewForSlot(mMobileSlotName)); + StatusBarIconView callStrengthIcon = + ((StatusBarIconView) mIconContainer.getViewForSlot(mCallStrengthSlotName)); TouchAnimator.Builder builder = new TouchAnimator.Builder() .addFloat(mQSCarriers, "alpha", 0, 1) .addFloat(mDatePrivacyView, "alpha", 0, mDatePrivacyAlpha); - if (icon != null) { - builder.addFloat(icon, "alpha", 1, 0); + if (noCallingIcon != null || callStrengthIcon != null) { + if (noCallingIcon != null) { + builder.addFloat(noCallingIcon, "alpha", 1, 0); + } + if (callStrengthIcon != null) { + builder.addFloat(callStrengthIcon, "alpha", 1, 0); + } builder.setListener(new TouchAnimator.ListenerAdapter() { @Override public void onAnimationAtEnd() { mIconContainer.addIgnoredSlot(mMobileSlotName); + mIconContainer.addIgnoredSlot(mCallStrengthSlotName); } @Override public void onAnimationStarted() { mIconContainer.removeIgnoredSlot(mMobileSlotName); + mIconContainer.removeIgnoredSlot(mCallStrengthSlotName); + } + + @Override + public void onAnimationAtStart() { + super.onAnimationAtStart(); + mIconContainer.removeIgnoredSlot(mMobileSlotName); + mIconContainer.removeIgnoredSlot(mCallStrengthSlotName); } }); } diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java index 3ba46460be43..0f97e43c466b 100644 --- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java +++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessDialog.java @@ -16,12 +16,17 @@ package com.android.systemui.settings.brightness; +import static android.view.ViewGroup.LayoutParams.MATCH_PARENT; +import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT; + import android.app.Activity; import android.os.Bundle; import android.view.Gravity; import android.view.KeyEvent; +import android.view.View; import android.view.Window; import android.view.WindowManager; +import android.widget.FrameLayout; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; @@ -62,10 +67,15 @@ public class BrightnessDialog extends Activity { window.setLayout( WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT); - BrightnessSlider controller = mToggleSliderFactory.create(this, null); + setContentView(R.layout.brightness_mirror_container); + FrameLayout frame = findViewById(R.id.brightness_mirror_container); + // The brightness mirror container is INVISIBLE by default. + frame.setVisibility(View.VISIBLE); + + BrightnessSlider controller = mToggleSliderFactory.create(this, frame); controller.init(); - setContentView(controller.getRootView()); - controller.getRootView().setBackgroundResource(R.drawable.brightness_mirror_background); + frame.addView(controller.getRootView(), MATCH_PARENT, WRAP_CONTENT); + mBrightnessController = new BrightnessController(this, controller, mBroadcastDispatcher); } diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSlider.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSlider.java index db8205783173..0ff6216ea87e 100644 --- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSlider.java +++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSlider.java @@ -44,11 +44,10 @@ import javax.inject.Inject; * * @see BrightnessMirrorController */ -public class BrightnessSlider extends ViewController<View> implements ToggleSlider { +public class BrightnessSlider extends ViewController<BrightnessSliderView> implements ToggleSlider { private Listener mListener; private ToggleSlider mMirror; - private final BrightnessSliderView mBrightnessSliderView; private BrightnessMirrorController mMirrorController; private boolean mTracking; private final FalsingManager mFalsingManager; @@ -71,11 +70,9 @@ public class BrightnessSlider extends ViewController<View> implements ToggleSlid }; BrightnessSlider( - View rootView, BrightnessSliderView brightnessSliderView, FalsingManager falsingManager) { - super(rootView); - mBrightnessSliderView = brightnessSliderView; + super(brightnessSliderView); mFalsingManager = falsingManager; } @@ -86,21 +83,18 @@ public class BrightnessSlider extends ViewController<View> implements ToggleSlid return mView; } - private void enableSlider(boolean enable) { - mBrightnessSliderView.enableSlider(enable); - } @Override protected void onViewAttached() { - mBrightnessSliderView.setOnSeekBarChangeListener(mSeekListener); - mBrightnessSliderView.setOnInterceptListener(mOnInterceptListener); + mView.setOnSeekBarChangeListener(mSeekListener); + mView.setOnInterceptListener(mOnInterceptListener); } @Override protected void onViewDetached() { - mBrightnessSliderView.setOnSeekBarChangeListener(null); - mBrightnessSliderView.setOnDispatchTouchEventListener(null); - mBrightnessSliderView.setOnInterceptListener(null); + mView.setOnSeekBarChangeListener(null); + mView.setOnDispatchTouchEventListener(null); + mView.setOnInterceptListener(null); } @Override @@ -109,7 +103,7 @@ public class BrightnessSlider extends ViewController<View> implements ToggleSlid return copyEventToMirror(ev); } else { // We are the mirror, so we have to dispatch the event - return mBrightnessSliderView.dispatchTouchEvent(ev); + return mView.dispatchTouchEvent(ev); } } @@ -122,19 +116,19 @@ public class BrightnessSlider extends ViewController<View> implements ToggleSlid @Override public void setEnforcedAdmin(RestrictedLockUtils.EnforcedAdmin admin) { - mBrightnessSliderView.setEnforcedAdmin(admin); + mView.setEnforcedAdmin(admin); } private void setMirror(ToggleSlider toggleSlider) { mMirror = toggleSlider; if (mMirror != null) { - mMirror.setMax(mBrightnessSliderView.getMax()); - mMirror.setValue(mBrightnessSliderView.getValue()); - mBrightnessSliderView.setOnDispatchTouchEventListener(this::mirrorTouchEvent); + mMirror.setMax(mView.getMax()); + mMirror.setValue(mView.getValue()); + mView.setOnDispatchTouchEventListener(this::mirrorTouchEvent); } else { // If there's no mirror, we may be the ones dispatching, events but we should not mirror // them - mBrightnessSliderView.setOnDispatchTouchEventListener(null); + mView.setOnDispatchTouchEventListener(null); } } @@ -151,7 +145,7 @@ public class BrightnessSlider extends ViewController<View> implements ToggleSlid } else { // If there's no mirror, we may be the ones dispatching, events but we should not mirror // them - mBrightnessSliderView.setOnDispatchTouchEventListener(null); + mView.setOnDispatchTouchEventListener(null); } } @@ -162,7 +156,7 @@ public class BrightnessSlider extends ViewController<View> implements ToggleSlid @Override public void setMax(int max) { - mBrightnessSliderView.setMax(max); + mView.setMax(max); if (mMirror != null) { mMirror.setMax(max); } @@ -170,12 +164,12 @@ public class BrightnessSlider extends ViewController<View> implements ToggleSlid @Override public int getMax() { - return mBrightnessSliderView.getMax(); + return mView.getMax(); } @Override public void setValue(int value) { - mBrightnessSliderView.setValue(value); + mView.setValue(value); if (mMirror != null) { mMirror.setValue(value); } @@ -183,7 +177,7 @@ public class BrightnessSlider extends ViewController<View> implements ToggleSlid @Override public int getValue() { - return mBrightnessSliderView.getValue(); + return mView.getValue(); } private final SeekBar.OnSeekBarChangeListener mSeekListener = @@ -205,7 +199,7 @@ public class BrightnessSlider extends ViewController<View> implements ToggleSlid if (mMirrorController != null) { mMirrorController.showMirror(); - mMirrorController.setLocation((View) mBrightnessSliderView.getParent()); + mMirrorController.setLocationAndSize(mView); } } @@ -244,15 +238,9 @@ public class BrightnessSlider extends ViewController<View> implements ToggleSlid */ public BrightnessSlider create(Context context, @Nullable ViewGroup viewRoot) { int layout = getLayout(); - ViewGroup root = (ViewGroup) LayoutInflater.from(context) + BrightnessSliderView root = (BrightnessSliderView) LayoutInflater.from(context) .inflate(layout, viewRoot, false); - return fromTree(root); - } - - private BrightnessSlider fromTree(ViewGroup root) { - BrightnessSliderView v = root.requireViewById(R.id.brightness_slider); - - return new BrightnessSlider(root, v, mFalsingManager); + return new BrightnessSlider(root, mFalsingManager); } /** Get the layout to inflate based on what slider to use */ diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java index 20383feff9bc..fad748021559 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java @@ -24,6 +24,7 @@ import com.android.internal.statusbar.IStatusBarService; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.media.MediaDataManager; +import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.ActionClickLogger; import com.android.systemui.statusbar.CommandQueue; @@ -237,9 +238,11 @@ public interface StatusBarDependenciesModule { static OngoingCallController provideOngoingCallController( CommonNotifCollection notifCollection, FeatureFlags featureFlags, - SystemClock systemClock) { + SystemClock systemClock, + ActivityStarter activityStarter) { OngoingCallController ongoingCallController = - new OngoingCallController(notifCollection, featureFlags, systemClock); + new OngoingCallController( + notifCollection, featureFlags, systemClock, activityStarter); ongoingCallController.init(); return ongoingCallController; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt index b85d0310092c..46a971b4cbd1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/events/SystemStatusAnimationScheduler.kt @@ -23,6 +23,7 @@ import android.animation.ValueAnimator import android.annotation.IntDef import android.content.Context import android.os.Process +import android.provider.DeviceConfig import android.util.Log import android.view.View @@ -62,6 +63,14 @@ class SystemStatusAnimationScheduler @Inject constructor( @Main private val executor: DelayableExecutor ) : CallbackController<SystemStatusAnimationCallback> { + companion object { + private const val PROPERTY_ENABLE_IMMERSIVE_INDICATOR = "enable_immersive_indicator" + } + private fun isImmersiveIndicatorEnabled(): Boolean { + return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_PRIVACY, + PROPERTY_ENABLE_IMMERSIVE_INDICATOR, false) + } + /** True from the time a scheduled event starts until it's animation finishes */ var isActive = false private set @@ -83,7 +92,7 @@ class SystemStatusAnimationScheduler @Inject constructor( fun onStatusEvent(event: StatusEvent) { // Ignore any updates until the system is up and running - if (isTooEarly()) { + if (isTooEarly() || !isImmersiveIndicatorEnabled()) { return } @@ -106,7 +115,7 @@ class SystemStatusAnimationScheduler @Inject constructor( } fun setShouldShowPersistentPrivacyIndicator(should: Boolean) { - if (hasPersistentDot == should) { + if (hasPersistentDot == should || !isImmersiveIndicatorEnabled()) { return } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java index 3bf0ddb1985b..298d4f07a8df 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java @@ -19,6 +19,7 @@ package com.android.systemui.statusbar.notification.row; import android.annotation.ColorInt; import android.content.Context; import android.content.res.Configuration; +import android.content.res.Resources; import android.util.AttributeSet; import android.view.View; @@ -93,14 +94,16 @@ public class FooterView extends StackScrollerDecorView { @Override protected void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); + int textColor = getResources().getColor(R.color.notif_pill_text); + Resources.Theme theme = getContext().getTheme(); mDismissButton.setBackground( - getResources().getDrawable(R.drawable.notif_footer_btn_background)); - mDismissButton.setTextColor(getResources().getColor(R.color.notif_pill_text)); + getResources().getDrawable(R.drawable.notif_footer_btn_background, theme)); + mDismissButton.setTextColor(textColor); mManageButton.setBackground( - getResources().getDrawable(R.drawable.notif_footer_btn_background)); - mManageButton.setTextColor(getResources().getColor(R.color.notif_pill_text)); + getResources().getDrawable(R.drawable.notif_footer_btn_background, theme)); mManageButton = findViewById(R.id.manage_text); mDismissButton.setText(R.string.clear_all_notifications_text); + mManageButton.setTextColor(textColor); mDismissButton.setContentDescription( mContext.getString(R.string.accessibility_clear_all)); showHistory(mShowHistory); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java index a0b0b3dc57bd..a90e76bf1515 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentView.java @@ -16,7 +16,6 @@ package com.android.systemui.statusbar.notification.row; - import android.annotation.NonNull; import android.annotation.Nullable; import android.app.Notification; @@ -59,6 +58,7 @@ import com.android.systemui.statusbar.policy.RemoteInputView; import com.android.systemui.statusbar.policy.SmartReplyConstants; import com.android.systemui.statusbar.policy.SmartReplyStateInflaterKt; import com.android.systemui.statusbar.policy.SmartReplyView; +import com.android.systemui.wmshell.BubblesManager; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -1315,11 +1315,6 @@ public class NotificationContentView extends FrameLayout { applyBubbleAction(mExpandedChild, entry); } - private boolean isBubblesEnabled() { - return Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.NOTIFICATION_BUBBLES, 0) == 1; - } - /** * Setup icon buttons provided by System UI. */ @@ -1340,7 +1335,7 @@ public class NotificationContentView extends FrameLayout { boolean isPersonWithShortcut = mPeopleIdentifier.getPeopleNotificationType(entry) >= PeopleNotificationIdentifier.TYPE_FULL_PERSON; - boolean showButton = isBubblesEnabled() + boolean showButton = BubblesManager.areBubblesEnabled(mContext, entry.getSbn().getUser()) && isPersonWithShortcut && entry.getBubbleMetadata() != null; if (showButton) { @@ -1481,18 +1476,26 @@ public class NotificationContentView extends FrameLayout { return null; } - SmartReplyView smartReplyView = null; - if (smartReplyContainer.getChildCount() == 1 - && smartReplyContainer.getChildAt(0) instanceof SmartReplyView) { + // Search for an existing SmartReplyView + int index = 0; + final int childCount = smartReplyContainer.getChildCount(); + for (; index < childCount; index++) { + View child = smartReplyContainer.getChildAt(index); + if (child.getId() == R.id.smart_reply_view && child instanceof SmartReplyView) { + break; + } + } + + if (index < childCount) { // If we already have a SmartReplyView - replace it with the newly inflated one. The // newly inflated one is connected to the new inflated smart reply/action buttons. - smartReplyContainer.removeAllViews(); + smartReplyContainer.removeViewAt(index); } - if (smartReplyContainer.getChildCount() == 0 - && inflatedSmartReplyViewHolder != null + SmartReplyView smartReplyView = null; + if (inflatedSmartReplyViewHolder != null && inflatedSmartReplyViewHolder.getSmartReplyView() != null) { smartReplyView = inflatedSmartReplyViewHolder.getSmartReplyView(); - smartReplyContainer.addView(smartReplyView); + smartReplyContainer.addView(smartReplyView, index); } if (smartReplyView != null) { smartReplyView.resetSmartSuggestions(smartReplyContainer); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java index 3434f67fa271..40be4bfa47dc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java @@ -22,7 +22,6 @@ import static android.app.NotificationManager.BUBBLE_PREFERENCE_SELECTED; import static android.app.NotificationManager.IMPORTANCE_DEFAULT; import static android.app.NotificationManager.IMPORTANCE_LOW; import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED; -import static android.provider.Settings.Global.NOTIFICATION_BUBBLES; import static com.android.systemui.animation.Interpolators.FAST_OUT_SLOW_IN; @@ -48,7 +47,6 @@ import android.os.Bundle; import android.os.Handler; import android.os.RemoteException; import android.os.UserHandle; -import android.provider.Settings; import android.service.notification.StatusBarNotification; import android.text.TextUtils; import android.transition.ChangeBounds; @@ -573,8 +571,7 @@ public class NotificationConversationInfo extends LinearLayout implements boolean showAsBubble = mBubbleMetadata != null && mBubbleMetadata.getAutoExpandBubble() - && Settings.Global.getInt(mContext.getContentResolver(), - NOTIFICATION_BUBBLES, 0) == 1; + && BubblesManager.areBubblesEnabled(mContext, mSbn.getUser()); Drawable person = mIconFactory.getBaseIconDrawable(mShortcutInfo); if (person == null) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java index 3e1a7816c2b2..6cacec71db39 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java @@ -272,13 +272,15 @@ public class StackScrollAlgorithm { currentY += mGapHeight; } - // Save index of first view in the shelf - final float shelfStart = ambientState.getStackEndHeight() - - ambientState.getShelf().getIntrinsicHeight(); - if (currentY >= shelfStart - && !(view instanceof FooterView) - && state.firstViewInShelf == null) { - state.firstViewInShelf = view; + if (ambientState.getShelf() != null) { + // Save index of first view in the shelf + final float shelfStart = ambientState.getStackEndHeight() + - ambientState.getShelf().getIntrinsicHeight(); + if (currentY >= shelfStart + && !(view instanceof FooterView) + && state.firstViewInShelf == null) { + state.firstViewInShelf = view; + } } // Record y position when fully expanded @@ -298,10 +300,14 @@ public class StackScrollAlgorithm { float sectionEnd = state.expansionData.get(sectionEndView).fullyExpandedY + sectionEndView.getIntrinsicHeight(); - // If we show the shelf, trim section end to shelf start - // This means section end > start for views in the shelf - if (state.firstViewInShelf != null && sectionEnd > shelfStart) { - sectionEnd = shelfStart; + if (ambientState.getShelf() != null) { + // If we show the shelf, trim section end to shelf start + // This means section end > start for views in the shelf + final float shelfStart = ambientState.getStackEndHeight() + - ambientState.getShelf().getIntrinsicHeight(); + if (state.firstViewInShelf != null && sectionEnd > shelfStart) { + sectionEnd = shelfStart; + } } // Update section bounds of every view in the previous section @@ -460,7 +466,7 @@ public class StackScrollAlgorithm { && i >= algorithmState.visibleChildren.indexOf( algorithmState.firstViewInShelf) && !(view instanceof FooterView); - } else { + } else if (ambientState.getShelf() != null) { // When pulsing (incoming notification on AOD), innerHeight is 0; clamp all // to shelf start, thereby hiding all notifications (except the first one, which we // later unhide in updatePulsingState) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java index 4e57e44f38d7..48c7b89f50c1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java @@ -158,10 +158,12 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue mDarkIconManager.setShouldLog(true); mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_volume)); mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_alarm_clock)); + mBlockedIcons.add(getString(com.android.internal.R.string.status_bar_call_strength)); mDarkIconManager.setBlockList(mBlockedIcons); Dependency.get(StatusBarIconController.class).addIconGroup(mDarkIconManager); mSystemIconArea = mStatusBar.findViewById(R.id.system_icon_area); mClockView = mStatusBar.findViewById(R.id.clock); + mOngoingCallChip = mStatusBar.findViewById(R.id.ongoing_call_chip); showSystemIconArea(false); showClock(false); initEmergencyCryptkeeperText(); @@ -182,7 +184,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue super.onResume(); mCommandQueue.addCallback(this); mStatusBarStateController.addCallback(this); - mOngoingCallController.addCallback(mOngoingCallListener); + initOngoingCallChip(); } @Override @@ -221,8 +223,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue } statusBarCenteredIconArea.addView(mCenteredIconArea); - initOngoingCallChip(); - // Default to showing until we know otherwise. showNotificationIconArea(false); } @@ -273,7 +273,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue state |= DISABLE_CLOCK; } - if (mOngoingCallController.getHasOngoingCall()) { + if (mOngoingCallController.hasOngoingCall()) { state |= DISABLE_NOTIFICATION_ICONS; } @@ -448,7 +448,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue } private void initOngoingCallChip() { - mOngoingCallChip = mStatusBar.findViewById(R.id.ongoing_call_chip); + mOngoingCallController.addCallback(mOngoingCallListener); mOngoingCallController.setChipView(mOngoingCallChip); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java index c22fec97db01..0c4bec2c2c65 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java @@ -200,6 +200,7 @@ public class KeyguardStatusBarView extends RelativeLayout implements Resources r = getResources(); mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_volume)); mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_alarm_clock)); + mBlockedIcons.add(r.getString(com.android.internal.R.string.status_bar_call_strength)); } private void updateVisibilities() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java index 72f7ff87ed2d..5b09c726d473 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java @@ -161,7 +161,7 @@ public class NotificationShadeWindowViewController { mNotificationStackScrollLayoutController = notificationStackScrollLayoutController; // This view is not part of the newly inflated expanded status bar. - mBrightnessMirror = mView.findViewById(R.id.brightness_mirror); + mBrightnessMirror = mView.findViewById(R.id.brightness_mirror_container); } /** Inflates the {@link R.layout#status_bar_expanded} layout and sets it up. */ @@ -392,7 +392,7 @@ public class NotificationShadeWindowViewController { mView.setOnHierarchyChangeListener(new ViewGroup.OnHierarchyChangeListener() { @Override public void onChildViewAdded(View parent, View child) { - if (child.getId() == R.id.brightness_mirror) { + if (child.getId() == R.id.brightness_mirror_container) { mBrightnessMirror = child; } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java index 89e701606c1a..93b83d3cbcbd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java @@ -74,6 +74,10 @@ public interface StatusBarIconController { /** * Display the no calling & SMS icons. */ + void setCallStrengthIcons(String slot, List<CallIndicatorIconState> states); + /** + * Display the no calling & SMS icons. + */ void setNoCallingIcons(String slot, List<CallIndicatorIconState> states); public void setIconVisibility(String slot, boolean b); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java index 068ded32bbdb..75900a2bffa1 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java @@ -224,6 +224,33 @@ public class StatusBarIconControllerImpl extends StatusBarIconList implements Tu } /** + * Accept a list of CallIndicatorIconStates, and show the call strength icons. + * @param slot StatusBar slot for the call strength icons + * @param states All of the no Calling & SMS icon states + */ + @Override + public void setCallStrengthIcons(String slot, List<CallIndicatorIconState> states) { + Slot callStrengthSlot = getSlot(slot); + int callStrengthSlotIndex = getSlotIndex(slot); + Collections.reverse(states); + for (CallIndicatorIconState state : states) { + if (!state.isNoCalling) { + StatusBarIconHolder holder = callStrengthSlot.getHolderForTag(state.subId); + if (holder == null) { + holder = StatusBarIconHolder.fromCallIndicatorState(mContext, state); + setIcon(callStrengthSlotIndex, holder); + } else { + holder.setIcon(new StatusBarIcon(UserHandle.SYSTEM, mContext.getPackageName(), + Icon.createWithResource(mContext, state.callStrengthResId), 0, 0, + state.callStrengthDescription)); + setIcon(callStrengthSlotIndex, holder); + } + } + setIconVisibility(slot, !state.isNoCalling, state.subId); + } + } + + /** * Accept a list of CallIndicatorIconStates, and show the no calling icons. * @param slot StatusBar slot for the no calling icons * @param states All of the no Calling & SMS icon states diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java index 4ca71f081c0e..af342dd31a76 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.java @@ -86,9 +86,11 @@ public class StatusBarIconHolder { Context context, CallIndicatorIconState state) { StatusBarIconHolder holder = new StatusBarIconHolder(); + int resId = state.isNoCalling ? state.noCallingResId : state.callStrengthResId; + String contentDescription = state.isNoCalling + ? state.noCallingDescription : state.callStrengthDescription; holder.mIcon = new StatusBarIcon(UserHandle.SYSTEM, context.getPackageName(), - Icon.createWithResource(context, state.noCallingResId), - 0, 0, state.noCallingDescription); + Icon.createWithResource(context, resId), 0, 0, contentDescription); holder.mTag = state.subId; return holder; } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java index b57d8766854e..3445826eefbe 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java @@ -22,6 +22,7 @@ import android.telephony.SubscriptionInfo; import android.util.ArraySet; import android.util.Log; +import com.android.settingslib.mobile.TelephonyIcons; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.statusbar.policy.NetworkController; @@ -49,6 +50,7 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba private final String mSlotEthernet; private final String mSlotVpn; private final String mSlotNoCalling; + private final String mSlotCallStrength; private final Context mContext; private final StatusBarIconController mIconController; @@ -82,6 +84,8 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba mSlotEthernet = mContext.getString(com.android.internal.R.string.status_bar_ethernet); mSlotVpn = mContext.getString(com.android.internal.R.string.status_bar_vpn); mSlotNoCalling = mContext.getString(com.android.internal.R.string.status_bar_no_calling); + mSlotCallStrength = + mContext.getString(com.android.internal.R.string.status_bar_call_strength); mActivityEnabled = mContext.getResources().getBoolean(R.bool.config_showActivity); mIconController = iconController; @@ -207,9 +211,14 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba if (statusIcon.icon == R.drawable.ic_qs_no_calling_sms) { state.isNoCalling = statusIcon.visible; state.noCallingDescription = statusIcon.contentDescription; - mIconController.setNoCallingIcons(mSlotNoCalling, - CallIndicatorIconState.copyStates(mCallIndicatorStates)); + } else { + state.callStrengthResId = statusIcon.icon; + state.callStrengthDescription = statusIcon.contentDescription; } + mIconController.setCallStrengthIcons(mSlotCallStrength, + CallIndicatorIconState.copyStates(mCallIndicatorStates)); + mIconController.setNoCallingIcons(mSlotNoCalling, + CallIndicatorIconState.copyStates(mCallIndicatorStates)); } @Override @@ -296,6 +305,7 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba mIconController.removeAllIconsForSlot(mSlotMobile); mIconController.removeAllIconsForSlot(mSlotNoCalling); + mIconController.removeAllIconsForSlot(mSlotCallStrength); mMobileStates.clear(); List<CallIndicatorIconState> noCallingStates = new ArrayList<CallIndicatorIconState>(); noCallingStates.addAll(mCallIndicatorStates); @@ -410,12 +420,15 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba public static class CallIndicatorIconState { public boolean isNoCalling; public int noCallingResId; + public int callStrengthResId; public int subId; public String noCallingDescription; + public String callStrengthDescription; private CallIndicatorIconState(int subId) { this.subId = subId; this.noCallingResId = R.drawable.ic_qs_no_calling_sms; + this.callStrengthResId = TelephonyIcons.MOBILE_CALL_STRENGTH_ICONS[0]; } @Override @@ -427,21 +440,26 @@ public class StatusBarSignalPolicy implements NetworkControllerImpl.SignalCallba CallIndicatorIconState that = (CallIndicatorIconState) o; return isNoCalling == that.isNoCalling && noCallingResId == that.noCallingResId + && callStrengthResId == that.callStrengthResId && subId == that.subId - && noCallingDescription == that.noCallingDescription; + && noCallingDescription == that.noCallingDescription + && callStrengthDescription == that.callStrengthDescription; } @Override public int hashCode() { - return Objects.hash(isNoCalling, noCallingResId, subId, noCallingDescription); + return Objects.hash(isNoCalling, noCallingResId, + callStrengthResId, subId, noCallingDescription, callStrengthDescription); } private void copyTo(CallIndicatorIconState other) { other.isNoCalling = isNoCalling; other.noCallingResId = noCallingResId; + other.callStrengthResId = callStrengthResId; other.subId = subId; other.noCallingDescription = noCallingDescription; + other.callStrengthDescription = callStrengthDescription; } private static List<CallIndicatorIconState> copyStates( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt index b55db6fd1e7d..96473c2a961c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallController.kt @@ -18,11 +18,14 @@ package com.android.systemui.statusbar.phone.ongoingcall import android.app.Notification import android.app.Notification.CallStyle.CALL_TYPE_ONGOING +import android.content.Intent import android.util.Log import android.view.ViewGroup import android.widget.Chronometer import com.android.systemui.R +import com.android.systemui.animation.ActivityLaunchAnimator import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.plugins.ActivityStarter import com.android.systemui.statusbar.FeatureFlags import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection @@ -38,11 +41,12 @@ import javax.inject.Inject class OngoingCallController @Inject constructor( private val notifCollection: CommonNotifCollection, private val featureFlags: FeatureFlags, - private val systemClock: SystemClock + private val systemClock: SystemClock, + private val activityStarter: ActivityStarter ) : CallbackController<OngoingCallListener> { - var hasOngoingCall = false - private set + /** Null if there's no ongoing call. */ + private var ongoingCallInfo: OngoingCallInfo? = null private var chipView: ViewGroup? = null private val mListeners: MutableList<OngoingCallListener> = mutableListOf() @@ -50,25 +54,16 @@ class OngoingCallController @Inject constructor( private val notifListener = object : NotifCollectionListener { override fun onEntryUpdated(entry: NotificationEntry) { if (isOngoingCallNotification(entry)) { - val timeView = chipView?.findViewById<Chronometer>(R.id.ongoing_call_chip_time) - if (timeView != null) { - hasOngoingCall = true - val callStartTime = entry.sbn.notification.`when` - timeView.base = callStartTime - - System.currentTimeMillis() + - systemClock.elapsedRealtime() - timeView.start() - mListeners.forEach { l -> l.onOngoingCallStarted(animate = true) } - } else if (DEBUG) { - Log.w(TAG, "Ongoing call chip view could not be found; " + - "Not displaying chip in status bar") - } + ongoingCallInfo = OngoingCallInfo( + entry.sbn.notification.`when`, + entry.sbn.notification.contentIntent.intent) + updateChip() } } override fun onEntryRemoved(entry: NotificationEntry, reason: Int) { if (isOngoingCallNotification(entry)) { - hasOngoingCall = false + ongoingCallInfo = null mListeners.forEach { l -> l.onOngoingCallEnded(animate = true) } } } @@ -80,10 +75,23 @@ class OngoingCallController @Inject constructor( } } - fun setChipView(chipView: ViewGroup?) { + /** + * Sets the chip view that will contain ongoing call information. + * + * Should only be called from [CollapedStatusBarFragment]. + */ + fun setChipView(chipView: ViewGroup) { this.chipView = chipView + if (hasOngoingCall()) { + updateChip() + } } + /** + * Returns true if there's an active ongoing call that can be displayed in a status bar chip. + */ + fun hasOngoingCall(): Boolean = ongoingCallInfo != null + override fun addCallback(listener: OngoingCallListener) { synchronized(mListeners) { if (!mListeners.contains(listener)) { @@ -97,6 +105,43 @@ class OngoingCallController @Inject constructor( mListeners.remove(listener) } } + + private fun updateChip() { + val currentOngoingCallInfo = ongoingCallInfo ?: return + + val currentChipView = chipView + val timeView = + currentChipView?.findViewById<Chronometer>(R.id.ongoing_call_chip_time) + + if (currentChipView != null && timeView != null) { + timeView.base = currentOngoingCallInfo.callStartTime - + System.currentTimeMillis() + + systemClock.elapsedRealtime() + timeView.start() + + currentChipView.setOnClickListener { + activityStarter.postStartActivityDismissingKeyguard( + currentOngoingCallInfo.intent, 0, + ActivityLaunchAnimator.Controller.fromView(it)) + } + + mListeners.forEach { l -> l.onOngoingCallStarted(animate = true) } + } else { + // If we failed to update the chip, don't store the ongoing call info. Then + // [hasOngoingCall] will return false and we fall back to typical notification handling. + ongoingCallInfo = null + + if (DEBUG) { + Log.w(TAG, "Ongoing call chip view could not be found; " + + "Not displaying chip in status bar") + } + } + } + + private class OngoingCallInfo( + val callStartTime: Long, + val intent: Intent + ) } private fun isOngoingCallNotification(entry: NotificationEntry): Boolean { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java index 07d3f0122aa0..a0edc7c494bc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java @@ -19,7 +19,6 @@ package com.android.systemui.statusbar.policy; import android.annotation.NonNull; import android.content.Context; import android.content.res.Resources; -import android.graphics.drawable.Drawable; import android.util.ArraySet; import android.view.LayoutInflater; import android.view.View; @@ -51,6 +50,8 @@ public class BrightnessMirrorController private BrightnessSlider mToggleSliderController; private final int[] mInt2Cache = new int[2]; private FrameLayout mBrightnessMirror; + private int mBrightnessMirrorBackgroundPadding; + private int mLastBrightnessSliderWidth = -1; public BrightnessMirrorController(NotificationShadeWindowView statusBarWindow, NotificationPanelViewController notificationPanelViewController, @@ -59,7 +60,7 @@ public class BrightnessMirrorController @NonNull Consumer<Boolean> visibilityCallback) { mStatusBarWindow = statusBarWindow; mToggleSliderFactory = factory; - mBrightnessMirror = statusBarWindow.findViewById(R.id.brightness_mirror); + mBrightnessMirror = statusBarWindow.findViewById(R.id.brightness_mirror_container); mToggleSliderController = setMirrorLayout(); mNotificationPanel = notificationPanelViewController; mDepthController = notificationShadeDepthController; @@ -82,20 +83,32 @@ public class BrightnessMirrorController mDepthController.setBrightnessMirrorVisible(false); } - public void setLocation(View original) { + /** + * Set the location and size of the mirror container to match that of the slider in QS + * @param original the original view in QS + */ + public void setLocationAndSize(View original) { original.getLocationInWindow(mInt2Cache); // Original is slightly larger than the mirror, so make sure to use the center for the // positioning. - int originalX = mInt2Cache[0] + original.getWidth() / 2; - int originalY = mInt2Cache[1] + original.getHeight() / 2; + int originalX = mInt2Cache[0] - mBrightnessMirrorBackgroundPadding; + int originalY = mInt2Cache[1] - mBrightnessMirrorBackgroundPadding; mBrightnessMirror.setTranslationX(0); mBrightnessMirror.setTranslationY(0); mBrightnessMirror.getLocationInWindow(mInt2Cache); - int mirrorX = mInt2Cache[0] + mBrightnessMirror.getWidth() / 2; - int mirrorY = mInt2Cache[1] + mBrightnessMirror.getHeight() / 2; + int mirrorX = mInt2Cache[0]; + int mirrorY = mInt2Cache[1]; mBrightnessMirror.setTranslationX(originalX - mirrorX); mBrightnessMirror.setTranslationY(originalY - mirrorY); + + // Set the brightness mirror container to be the width of the mirror + 2 times the padding + int newWidth = original.getMeasuredWidth() + 2 * mBrightnessMirrorBackgroundPadding; + if (newWidth != mLastBrightnessSliderWidth) { + ViewGroup.LayoutParams lp = mBrightnessMirror.getLayoutParams(); + lp.width = newWidth; + mBrightnessMirror.setLayoutParams(lp); + } } public ToggleSlider getToggleSlider() { @@ -103,13 +116,15 @@ public class BrightnessMirrorController } public void updateResources() { - FrameLayout.LayoutParams lp = - (FrameLayout.LayoutParams) mBrightnessMirror.getLayoutParams(); Resources r = mBrightnessMirror.getResources(); - lp.width = r.getDimensionPixelSize(R.dimen.qs_panel_width); - lp.height = r.getDimensionPixelSize(R.dimen.brightness_mirror_height); - lp.gravity = r.getInteger(R.integer.notification_panel_layout_gravity); - mBrightnessMirror.setLayoutParams(lp); + mBrightnessMirrorBackgroundPadding = r + .getDimensionPixelSize(R.dimen.rounded_slider_background_padding); + mBrightnessMirror.setPadding( + mBrightnessMirrorBackgroundPadding, + mBrightnessMirrorBackgroundPadding, + mBrightnessMirrorBackgroundPadding, + mBrightnessMirrorBackgroundPadding + ); } public void onOverlayChanged() { @@ -124,19 +139,9 @@ public class BrightnessMirrorController Context context = mBrightnessMirror.getContext(); BrightnessSlider controller = mToggleSliderFactory.create(context, mBrightnessMirror); controller.init(); - Drawable mirrorBackground = context.getDrawable(R.drawable.brightness_mirror_background); - - View rootView = controller.getRootView(); - rootView.setBackground(mirrorBackground); - ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) rootView.getLayoutParams(); - lp.height = ViewGroup.LayoutParams.MATCH_PARENT; - lp.width = ViewGroup.LayoutParams.MATCH_PARENT; - int margin = context.getResources() - .getDimensionPixelSize(R.dimen.notification_side_paddings); - lp.leftMargin = margin; - lp.rightMargin = margin; - mBrightnessMirror.addView(rootView, lp); + mBrightnessMirror.addView(controller.getRootView(), ViewGroup.LayoutParams.MATCH_PARENT, + ViewGroup.LayoutParams.WRAP_CONTENT); return controller; } @@ -145,7 +150,7 @@ public class BrightnessMirrorController int index = mStatusBarWindow.indexOfChild(mBrightnessMirror); mStatusBarWindow.removeView(mBrightnessMirror); mBrightnessMirror = (FrameLayout) LayoutInflater.from(mBrightnessMirror.getContext()) - .inflate(R.layout.brightness_mirror, mStatusBarWindow, false); + .inflate(R.layout.brightness_mirror_container, mStatusBarWindow, false); mToggleSliderController = setMirrorLayout(); mStatusBarWindow.addView(mBrightnessMirror, index); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java index f2a0e3786885..a3fd92f8e186 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/RemoteInputView.java @@ -25,21 +25,18 @@ import android.app.ActivityManager; import android.app.Notification; import android.app.PendingIntent; import android.app.RemoteInput; -import android.content.ClipData; -import android.content.ClipDescription; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.pm.ShortcutManager; import android.content.res.ColorStateList; import android.content.res.TypedArray; +import android.graphics.BlendMode; import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.Rect; import android.graphics.drawable.ColorDrawable; -import android.graphics.drawable.Drawable; import android.graphics.drawable.GradientDrawable; -import android.graphics.drawable.LayerDrawable; import android.net.Uri; import android.os.Bundle; import android.os.ServiceManager; @@ -47,7 +44,9 @@ import android.os.SystemClock; import android.os.UserHandle; import android.text.Editable; import android.text.SpannedString; +import android.text.TextUtils; import android.text.TextWatcher; +import android.util.ArraySet; import android.util.AttributeSet; import android.util.Log; import android.util.Pair; @@ -68,6 +67,7 @@ import android.view.inputmethod.InputConnection; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.ImageButton; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; @@ -81,7 +81,6 @@ import com.android.internal.statusbar.IStatusBarService; import com.android.internal.util.ContrastColorUtil; import com.android.systemui.Dependency; import com.android.systemui.R; -import com.android.systemui.animation.Interpolators; import com.android.systemui.statusbar.NotificationRemoteInputManager; import com.android.systemui.statusbar.RemoteInputController; import com.android.systemui.statusbar.notification.collection.NotificationEntry; @@ -89,6 +88,7 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry. import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper; import com.android.systemui.statusbar.notification.stack.StackStateAnimator; import com.android.systemui.statusbar.phone.LightBarController; +import com.android.wm.shell.animation.Interpolators; import java.util.ArrayList; import java.util.Collection; @@ -114,6 +114,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene private final List<OnFocusChangeListener> mEditTextFocusChangeListeners = new ArrayList<>(); private RemoteEditText mEditText; private ImageButton mSendButton; + private GradientDrawable mContentBackground; private ProgressBar mProgressBar; private PendingIntent mPendingIntent; private RemoteInput[] mRemoteInputs; @@ -130,6 +131,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene private int mRevealCx; private int mRevealCy; private int mRevealR; + private ContentInfo mAttachment; private boolean mColorized; private int mTint; @@ -138,6 +140,9 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene private NotificationViewWrapper mWrapper; private Consumer<Boolean> mOnVisibilityChangedListener; private NotificationRemoteInputManager.BouncerChecker mBouncerChecker; + private LinearLayout mContentView; + private ImageView mDelete; + private ImageView mDeleteBg; public RemoteInputView(Context context, AttributeSet attrs) { super(context, attrs); @@ -149,7 +154,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene ServiceManager.getService(Context.STATUS_BAR_SERVICE)); TypedArray ta = getContext().getTheme().obtainStyledAttributes(new int[]{ com.android.internal.R.attr.colorAccent, - com.android.internal.R.attr.colorBackgroundFloating, + com.android.internal.R.attr.colorSurface, }); mTint = ta.getColor(0, 0); ta.recycle(); @@ -165,14 +170,20 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene mColorized = colorized; mTint = backgroundColor; final int editBgColor; + final int alternateBgColor; + final int alternateTextColor; final int accentColor; final int textColor; final int hintTextColor; + final int stroke = mContext.getResources().getDimensionPixelSize( + R.dimen.remote_input_view_text_stroke); if (colorized) { final boolean dark = !ContrastColorUtil.isColorLight(backgroundColor); final int foregroundColor = dark ? Color.WHITE : Color.BLACK; editBgColor = backgroundColor; accentColor = foregroundColor; + alternateBgColor = foregroundColor; + alternateTextColor = backgroundColor; textColor = foregroundColor; hintTextColor = ColorUtils.setAlphaComponent(foregroundColor, 0x99); } else { @@ -180,10 +191,14 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene hintTextColor = mContext.getColor(R.color.remote_input_hint); try (TypedArray ta = getContext().getTheme().obtainStyledAttributes(new int[]{ com.android.internal.R.attr.colorAccent, - com.android.internal.R.attr.colorBackgroundFloating, + com.android.internal.R.attr.colorSurface, + com.android.internal.R.attr.colorSurfaceVariant, + com.android.internal.R.attr.textColorPrimary })) { accentColor = ta.getColor(0, textColor); editBgColor = ta.getColor(1, backgroundColor); + alternateBgColor = ta.getColor(2, textColor); + alternateTextColor = ta.getColor(3, backgroundColor); } } mEditText.setAllColors(backgroundColor, editBgColor, @@ -195,11 +210,15 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene accentColor, accentColor & 0x4DFFFFFF // %30 opacity }); + mContentBackground.setColor(editBgColor); + mContentBackground.setStroke(stroke, accentTint); + mDelete.setImageTintList(ColorStateList.valueOf(alternateTextColor)); + mDeleteBg.setImageTintList(ColorStateList.valueOf(alternateBgColor)); mSendButton.setImageTintList(accentTint); mProgressBar.setProgressTintList(accentTint); mProgressBar.setIndeterminateTintList(accentTint); mProgressBar.setSecondaryProgressTintList(accentTint); - setBackgroundColor(backgroundColor); + setBackgroundColor(editBgColor); } @Override @@ -209,8 +228,16 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene mProgressBar = findViewById(R.id.remote_input_progress); mSendButton = findViewById(R.id.remote_input_send); mSendButton.setOnClickListener(this); - - mEditText = (RemoteEditText) getChildAt(0); + mContentBackground = (GradientDrawable) + mContext.getDrawable(R.drawable.remote_input_view_text_bg).mutate(); + mDelete = findViewById(R.id.remote_input_delete); + mDeleteBg = findViewById(R.id.remote_input_delete_bg); + mDeleteBg.setImageTintBlendMode(BlendMode.SRC_IN); + mDelete.setImageTintBlendMode(BlendMode.SRC_IN); + mDelete.setOnClickListener(v -> setAttachment(null)); + mContentView = findViewById(R.id.remote_input_content); + mContentView.setBackground(mContentBackground); + mEditText = findViewById(R.id.remote_input_text); mEditText.setInnerFocusable(false); mEditText.setWindowInsetsAnimationCallback( new WindowInsetsAnimation.Callback(DISPATCH_MODE_STOP) { @@ -220,7 +247,6 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene @NonNull List<WindowInsetsAnimation> runningAnimations) { return insets; } - @Override public void onEnd(@NonNull WindowInsetsAnimation animation) { super.onEnd(animation); @@ -235,7 +261,43 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene }); } - protected Intent prepareRemoteInputFromText() { + private void setAttachment(ContentInfo item) { + if (mAttachment != null) { + // We need to release permissions when sending the attachment to the target + // app or if it is deleted by the user. When sending to the target app, we + // can safely release permissions as soon as the call to + // `mController.grantInlineReplyUriPermission` is made (ie, after the grant + // to the target app has been created). + mAttachment.releasePermissions(); + } + mAttachment = item; + View attachment = findViewById(R.id.remote_input_content_container); + ImageView iconView = findViewById(R.id.remote_input_attachment_image); + iconView.setImageDrawable(null); + if (item == null) { + attachment.setVisibility(GONE); + return; + } + iconView.setImageURI(item.getClip().getItemAt(0).getUri()); + if (iconView.getDrawable() == null) { + attachment.setVisibility(GONE); + } else { + attachment.setVisibility(VISIBLE); + } + } + + /** + * Reply intent + * @return returns intent with granted URI permissions that should be used immediately + */ + private Intent prepareRemoteInput() { + if (mAttachment == null) return prepareRemoteInputFromText(); + return prepareRemoteInputFromData( + mAttachment.getClip().getDescription().getMimeType(0), + mAttachment.getClip().getItemAt(0).getUri()); + } + + private Intent prepareRemoteInputFromText() { Bundle results = new Bundle(); results.putString(mRemoteInput.getResultKey(), mEditText.getText().toString()); Intent fillInIntent = new Intent().addFlags(Intent.FLAG_RECEIVER_FOREGROUND); @@ -255,17 +317,40 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene return fillInIntent; } - protected Intent prepareRemoteInputFromData(String contentType, Uri data) { + private Intent prepareRemoteInputFromData(String contentType, Uri data) { HashMap<String, Uri> results = new HashMap<>(); results.put(contentType, data); + // grant for the target app. mController.grantInlineReplyUriPermission(mEntry.getSbn(), data); Intent fillInIntent = new Intent().addFlags(Intent.FLAG_RECEIVER_FOREGROUND); RemoteInput.addDataResultToIntent(mRemoteInput, fillInIntent, results); - mEntry.remoteInputText = mContext.getString(R.string.remote_input_image_insertion_text); + Bundle bundle = new Bundle(); + bundle.putString(mRemoteInput.getResultKey(), mEditText.getText().toString()); + RemoteInput.addResultsToIntent(mRemoteInputs, fillInIntent, + bundle); + + CharSequence attachmentText = mAttachment.getClip().getDescription().getLabel(); + + CharSequence attachmentLabel = TextUtils.isEmpty(attachmentText) + ? mContext.getString(R.string.remote_input_image_insertion_text) + : attachmentText; + // add content description to reply text for context + CharSequence fullText = TextUtils.isEmpty(mEditText.getText()) + ? attachmentLabel + : "\"" + attachmentLabel + "\" " + mEditText.getText(); + + mEntry.remoteInputText = fullText; mEntry.remoteInputMimeType = contentType; mEntry.remoteInputUri = data; + // mirror prepareRemoteInputFromText for text input + if (mEntry.editedSuggestionInfo == null) { + RemoteInput.setResultsSource(fillInIntent, RemoteInput.SOURCE_FREE_FORM_INPUT); + } else if (mAttachment == null) { + RemoteInput.setResultsSource(fillInIntent, RemoteInput.SOURCE_CHOICE); + } + return fillInIntent; } @@ -303,6 +388,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene MetricsLogger.action(mContext, MetricsProto.MetricsEvent.ACTION_REMOTE_INPUT_FAIL, mEntry.getSbn().getPackageName()); } + setAttachment(null); } public CharSequence getText() { @@ -327,7 +413,7 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene @Override public void onClick(View v) { if (v == mSendButton) { - sendRemoteInput(prepareRemoteInputFromText()); + sendRemoteInput(prepareRemoteInput()); } } @@ -682,8 +768,8 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene && event.getAction() == KeyEvent.ACTION_DOWN; if (isSoftImeEvent || isKeyboardEnterKey) { - if (mEditText.length() > 0) { - sendRemoteInput(prepareRemoteInputFromText()); + if (mEditText.length() > 0 || mAttachment != null) { + sendRemoteInput(prepareRemoteInput()); } // Consume action to prevent IME from closing. return true; @@ -716,21 +802,18 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene private final OnReceiveContentListener mOnReceiveContentListener = this::onReceiveContent; private RemoteInputView mRemoteInputView; - private GradientDrawable mTextBackground; - private ColorDrawable mBackgroundColor; - private LayerDrawable mBackground; + private ColorDrawable mBackground; boolean mShowImeOnInputConnection; private LightBarController mLightBarController; private InputMethodManager mInputMethodManager; + private ArraySet<String> mSupportedMimes = new ArraySet<>(); UserHandle mUser; public RemoteEditText(Context context, AttributeSet attrs) { super(context, attrs); mLightBarController = Dependency.get(LightBarController.class); - mTextBackground = (GradientDrawable) - context.getDrawable(R.drawable.remote_input_view_text_bg).mutate(); - mBackgroundColor = new ColorDrawable(); - mBackground = new LayerDrawable(new Drawable[] {mBackgroundColor, mTextBackground}); + + mBackground = new ColorDrawable(); } void setSupportedMimeTypes(@Nullable Collection<String> mimeTypes) { @@ -741,6 +824,8 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene listener = mOnReceiveContentListener; } setOnReceiveContentListener(types, listener); + mSupportedMimes.clear(); + mSupportedMimes.addAll(mimeTypes); } private void hideIme() { @@ -899,36 +984,15 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene ContentInfo uriItems = split.first; ContentInfo remainingItems = split.second; if (uriItems != null) { - ClipData clip = uriItems.getClip(); - ClipDescription description = clip.getDescription(); - if (clip.getItemCount() > 1 - || description.getMimeTypeCount() < 1 - || remainingItems != null) { - // Direct-reply in notifications currently only supports only one uri item - // at a time and requires the MIME type to be set. - Log.w(TAG, "Invalid payload: " + payload); - return payload; - } - Uri contentUri = clip.getItemAt(0).getUri(); - String mimeType = description.getMimeType(0); - Intent dataIntent = - mRemoteInputView.prepareRemoteInputFromData(mimeType, contentUri); - // We can release the uri permissions granted to us as soon as we've created the - // grant for the target app in the call above. - payload.releasePermissions(); - mRemoteInputView.sendRemoteInput(dataIntent); + mRemoteInputView.setAttachment(uriItems); } return remainingItems; } protected void setAllColors(int backgroundColor, int editBackgroundColor, int accentColor, int textColor, int hintTextColor) { - setBackgroundColor(backgroundColor); - mBackgroundColor.setColor(backgroundColor); - mTextBackground.setColor(editBackgroundColor); - int stroke = getContext().getResources() - .getDimensionPixelSize(R.dimen.remote_input_view_text_stroke); - mTextBackground.setStroke(stroke, accentColor); + setBackgroundColor(editBackgroundColor); + mBackground.setColor(editBackgroundColor); setTextColor(textColor); setHintTextColor(hintTextColor); getTextCursorDrawable().setColorFilter(accentColor, PorterDuff.Mode.SRC_IN); diff --git a/packages/SystemUI/src/com/android/systemui/util/Utils.java b/packages/SystemUI/src/com/android/systemui/util/Utils.java index fd3641cfdaa0..f3a95f711b7c 100644 --- a/packages/SystemUI/src/com/android/systemui/util/Utils.java +++ b/packages/SystemUI/src/com/android/systemui/util/Utils.java @@ -21,8 +21,10 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.res.Resources; +import android.content.res.TypedArray; import android.provider.Settings; import android.text.TextUtils; +import android.view.ContextThemeWrapper; import android.view.View; import com.android.systemui.R; @@ -177,4 +179,23 @@ public class Utils { && resources.getBoolean(R.bool.config_use_split_notification_shade); } + /** + * Returns the color provided at the specified {@param attrIndex} in {@param a} if it exists, + * otherwise, returns the color from the private attribute {@param privAttrId}. + */ + public static int getPrivateAttrColorIfUnset(ContextThemeWrapper ctw, TypedArray a, + int attrIndex, int defColor, int privAttrId) { + // If the index is specified, use that value + if (a.hasValue(attrIndex)) { + return a.getColor(attrIndex, defColor); + } + + // Otherwise fallback to the value of the private attribute + int[] customAttrs = { privAttrId }; + a = ctw.obtainStyledAttributes(customAttrs); + int color = a.getColor(0, defColor); + a.recycle(); + return color; + } + } diff --git a/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java b/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java index db7736620c26..b823534c2813 100644 --- a/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java +++ b/packages/SystemUI/src/com/android/systemui/wmshell/BubblesManager.java @@ -18,6 +18,7 @@ package com.android.systemui.wmshell; import static android.app.NotificationManager.BUBBLE_PREFERENCE_NONE; import static android.app.NotificationManager.BUBBLE_PREFERENCE_SELECTED; +import static android.provider.Settings.Secure.NOTIFICATION_BUBBLES; import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL; import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL_ALL; import static android.service.notification.NotificationListenerService.REASON_CANCEL; @@ -37,14 +38,18 @@ import android.app.Notification; import android.app.NotificationChannel; import android.app.NotificationManager; import android.content.Context; +import android.content.pm.UserInfo; import android.content.res.Configuration; import android.os.RemoteException; import android.os.ServiceManager; +import android.os.UserHandle; +import android.provider.Settings; import android.service.notification.NotificationListenerService.RankingMap; import android.service.notification.ZenModeConfig; import android.util.ArraySet; import android.util.Log; import android.util.Pair; +import android.util.SparseArray; import android.view.View; import androidx.annotation.NonNull; @@ -244,6 +249,12 @@ public class BubblesManager implements Dumpable { public void onUserChanged(int userId) { mBubbles.onUserChanged(userId); } + + @Override + public void onCurrentProfilesChanged(SparseArray<UserInfo> currentProfiles) { + mBubbles.onCurrentProfilesChanged(currentProfiles); + } + }); mSysuiProxy = new Bubbles.SysuiProxy() { @@ -727,6 +738,17 @@ public class BubblesManager implements Dumpable { mBubbles.dump(fd, pw, args); } + /** Checks whether bubbles are enabled for this user, handles negative userIds. */ + public static boolean areBubblesEnabled(@NonNull Context context, @NonNull UserHandle user) { + if (user.getIdentifier() < 0) { + return Settings.Secure.getInt(context.getContentResolver(), + NOTIFICATION_BUBBLES, 0) == 1; + } else { + return Settings.Secure.getIntForUser(context.getContentResolver(), + NOTIFICATION_BUBBLES, 0, user.getIdentifier()) == 1; + } + } + static BubbleEntry notifToBubbleEntry(NotificationEntry e) { return new BubbleEntry(e.getSbn(), e.getRanking(), e.isClearable(), e.shouldSuppressNotificationDot(), e.shouldSuppressNotificationList(), diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java index 4d4acd987f85..263a75c0928a 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardClockSwitchControllerTest.java @@ -262,5 +262,7 @@ public class KeyguardClockSwitchControllerTest extends SysuiTestCase { public void registerDataProvider(BcSmartspaceDataPlugin plugin) { } public void setPrimaryTextColor(int color) { } + + public void setDozeAmount(float amount) { } } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java b/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java index daa896cc6a8b..e1ddaada44cf 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java @@ -41,7 +41,6 @@ import android.view.DisplayInfo; import android.view.SurfaceHolder; import com.android.systemui.glwallpaper.ImageWallpaperRenderer; -import com.android.systemui.plugins.statusbar.StatusBarStateController; import org.junit.Before; import org.junit.Ignore; @@ -100,7 +99,7 @@ public class ImageWallpaperTest extends SysuiTestCase { } private ImageWallpaper createImageWallpaper() { - return new ImageWallpaper(mock(StatusBarStateController.class)) { + return new ImageWallpaper() { @Override public Engine onCreateEngine() { return new GLEngine(mHandler) { diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java index d3a2d2e3b5cc..7d617db6cc0e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java @@ -97,6 +97,9 @@ public class WindowMagnificationControllerTest extends SysuiTestCase { doAnswer(invocation -> wm.getMaximumWindowMetrics() ).when(mWindowManager).getMaximumWindowMetrics(); + doAnswer(invocation -> + wm.getCurrentWindowMetrics() + ).when(mWindowManager).getCurrentWindowMetrics(); mContext.addMockSystemService(Context.WINDOW_SERVICE, mWindowManager); doAnswer(invocation -> { mMirrorView = invocation.getArgument(0); @@ -200,7 +203,6 @@ public class WindowMagnificationControllerTest extends SysuiTestCase { mInstrumentation.runOnMainSync(() -> { mWindowMagnificationController.enableWindowMagnification(Float.NaN, Float.NaN, Float.NaN); - Mockito.reset(mWindowManager); }); mInstrumentation.runOnMainSync(() -> { diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/DistanceClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/DistanceClassifierTest.java index c9124194839f..8e00d10a7d39 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/DistanceClassifierTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/DistanceClassifierTest.java @@ -17,6 +17,7 @@ package com.android.systemui.classifier; import static com.android.systemui.classifier.Classifier.BRIGHTNESS_SLIDER; +import static com.android.systemui.classifier.Classifier.QS_SWIPE; import static com.google.common.truth.Truth.assertThat; @@ -103,4 +104,11 @@ public class DistanceClassifierTest extends ClassifierTest { assertThat(mClassifier.classifyGesture(BRIGHTNESS_SLIDER, 0.5, 1).isFalse()) .isFalse(); } + + @Test + public void testPass_QsSwipeAlwaysPasses() { + mClassifier.onTouchEvent(appendDownEvent(1, 1)); + assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 1).isFalse()) + .isFalse(); + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/TypeClassifierTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/TypeClassifierTest.java index 32537b45fd02..1d61e29cad35 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/classifier/TypeClassifierTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/TypeClassifierTest.java @@ -22,6 +22,7 @@ import static com.android.systemui.classifier.Classifier.LEFT_AFFORDANCE; import static com.android.systemui.classifier.Classifier.NOTIFICATION_DISMISS; import static com.android.systemui.classifier.Classifier.NOTIFICATION_DRAG_DOWN; import static com.android.systemui.classifier.Classifier.PULSE_EXPAND; +import static com.android.systemui.classifier.Classifier.QS_SWIPE; import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS; import static com.android.systemui.classifier.Classifier.RIGHT_AFFORDANCE; import static com.android.systemui.classifier.Classifier.UNLOCK; @@ -320,4 +321,46 @@ public class TypeClassifierTest extends ClassifierTest { when(mDataProvider.isRight()).thenReturn(true); assertThat(mClassifier.classifyGesture(BRIGHTNESS_SLIDER, 0.5, 0).isFalse()).isTrue(); } + + @Test + public void testPass_QsSwipe() { + when(mDataProvider.isVertical()).thenReturn(false); + + when(mDataProvider.isUp()).thenReturn(false); // up and right should cause no effect. + when(mDataProvider.isRight()).thenReturn(false); + assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse(); + + when(mDataProvider.isUp()).thenReturn(true); + when(mDataProvider.isRight()).thenReturn(false); + assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse(); + + when(mDataProvider.isUp()).thenReturn(false); + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse(); + + when(mDataProvider.isUp()).thenReturn(true); + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isFalse(); + } + + @Test + public void testFalse_QsSwipe() { + when(mDataProvider.isVertical()).thenReturn(true); + + when(mDataProvider.isUp()).thenReturn(false); // up and right should cause no effect. + when(mDataProvider.isRight()).thenReturn(false); + assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue(); + + when(mDataProvider.isUp()).thenReturn(true); + when(mDataProvider.isRight()).thenReturn(false); + assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue(); + + when(mDataProvider.isUp()).thenReturn(false); + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue(); + + when(mDataProvider.isUp()).thenReturn(true); + when(mDataProvider.isRight()).thenReturn(true); + assertThat(mClassifier.classifyGesture(QS_SWIPE, 0.5, 0).isFalse()).isTrue(); + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java index 42e88b0f393d..63ce98a170a6 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/WakefulnessLifecycleTest.java @@ -22,6 +22,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; +import android.app.IWallpaperManager; import android.os.PowerManager; import android.testing.AndroidTestingRunner; @@ -43,9 +44,12 @@ public class WakefulnessLifecycleTest extends SysuiTestCase { private WakefulnessLifecycle mWakefulness; private WakefulnessLifecycle.Observer mWakefulnessObserver; + private IWallpaperManager mWallpaperManager; + @Before public void setUp() throws Exception { - mWakefulness = new WakefulnessLifecycle(); + mWallpaperManager = mock(IWallpaperManager.class); + mWakefulness = new WakefulnessLifecycle(mContext, mWallpaperManager); mWakefulnessObserver = mock(WakefulnessLifecycle.Observer.class); mWakefulness.addObserver(mWakefulnessObserver); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/NotificationHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/NotificationHelperTest.java new file mode 100644 index 000000000000..7cddc3f8e82d --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/people/NotificationHelperTest.java @@ -0,0 +1,205 @@ +/* + * Copyright (C) 2021 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 com.android.systemui.people; + +import static android.app.Notification.CATEGORY_MISSED_CALL; + +import static com.android.systemui.people.NotificationHelper.getHighestPriorityNotification; +import static com.android.systemui.people.NotificationHelper.getMessagingStyleMessages; +import static com.android.systemui.people.NotificationHelper.isMissedCall; +import static com.android.systemui.people.NotificationHelper.isMissedCallOrHasContent; +import static com.android.systemui.people.PeopleSpaceUtils.PACKAGE_NAME; + +import static com.google.common.truth.Truth.assertThat; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import android.app.Notification; +import android.app.Person; +import android.content.pm.ShortcutInfo; +import android.net.Uri; +import android.os.UserHandle; +import android.service.notification.StatusBarNotification; +import android.testing.AndroidTestingRunner; + +import androidx.test.filters.SmallTest; + +import com.android.internal.util.ArrayUtils; +import com.android.systemui.SysuiTestCase; +import com.android.systemui.statusbar.SbnBuilder; +import com.android.systemui.statusbar.notification.collection.NotificationEntry; +import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; + +import org.junit.Test; +import org.junit.runner.RunWith; + +import java.util.List; +import java.util.Set; + +@RunWith(AndroidTestingRunner.class) +@SmallTest +public class NotificationHelperTest extends SysuiTestCase { + private static final String SHORTCUT_ID_1 = "101"; + private static final String SHORTCUT_ID_2 = "102"; + + private static final String NOTIFICATION_TEXT_1 = "notification_text_1"; + private static final String NOTIFICATION_TEXT_2 = "notification_text_2"; + private static final String NOTIFICATION_TEXT_3 = "notification_text_3"; + private static final Uri URI = Uri.parse("fake_uri"); + private static final Person PERSON = new Person.Builder() + .setName("name") + .setKey("abc") + .setUri(URI.toString()) + .setBot(false) + .build(); + + private final Notification mNotification1 = new Notification.Builder(mContext, "test") + .setContentTitle("TEST_TITLE") + .setContentText("TEST_TEXT") + .setShortcutId(SHORTCUT_ID_1) + .setStyle(new Notification.MessagingStyle(PERSON) + .addMessage(new Notification.MessagingStyle.Message( + NOTIFICATION_TEXT_1, 0, PERSON)) + .addMessage(new Notification.MessagingStyle.Message( + NOTIFICATION_TEXT_2, 20, PERSON)) + .addMessage(new Notification.MessagingStyle.Message( + NOTIFICATION_TEXT_3, 10, PERSON)) + ) + .build(); + + private final Notification mNotification2 = new Notification.Builder(mContext, "test") + .setContentTitle("TEST_TITLE") + .setContentText("TEST_TEXT") + .setShortcutId(SHORTCUT_ID_1) + .setStyle(new Notification.MessagingStyle(PERSON) + .addMessage(new Notification.MessagingStyle.Message( + NOTIFICATION_TEXT_1, 0, PERSON)) + ) + .build(); + + private final Notification mNoContentNotification = new Notification.Builder(mContext, "test") + .setContentTitle("TEST_TITLE") + .setContentText("TEST_TEXT") + .setShortcutId(SHORTCUT_ID_1) + .setStyle(new Notification.MessagingStyle(PERSON)) + .build(); + + private final Notification mMissedCallNotification = new Notification.Builder(mContext, "test") + .setContentTitle("TEST_TITLE") + .setContentText("TEST_TEXT") + .setShortcutId(SHORTCUT_ID_2) + .setCategory(CATEGORY_MISSED_CALL) + .setStyle(new Notification.MessagingStyle(PERSON)) + .build(); + + private final NotificationEntry mNotificationEntry1 = new NotificationEntryBuilder() + .setNotification(mNotification1) + .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build()) + .setUser(UserHandle.of(0)) + .setPkg(PACKAGE_NAME) + .build(); + + private final NotificationEntry mNotificationEntry2 = new NotificationEntryBuilder() + .setNotification(mNotification2) + .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build()) + .setUser(UserHandle.of(0)) + .setPkg(PACKAGE_NAME) + .build(); + + + private final NotificationEntry mMissedCallNotificationEntry = new NotificationEntryBuilder() + .setNotification(mMissedCallNotification) + .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build()) + .setUser(UserHandle.of(0)) + .setPkg(PACKAGE_NAME) + .build(); + + private final NotificationEntry mNoContentNotificationEntry = new NotificationEntryBuilder() + .setNotification(mNoContentNotification) + .setShortcutInfo(new ShortcutInfo.Builder(mContext, SHORTCUT_ID_1).build()) + .setUser(UserHandle.of(0)) + .setPkg(PACKAGE_NAME) + .build(); + + @Test + public void testGetMessagingStyleMessagesNoMessage() { + Notification notification = new Notification.Builder(mContext, "test") + .setContentTitle("TEST_TITLE") + .setContentText("TEST_TEXT") + .setShortcutId(SHORTCUT_ID_1) + .build(); + StatusBarNotification sbn = new SbnBuilder() + .setNotification(notification) + .build(); + + List<Notification.MessagingStyle.Message> messages = + getMessagingStyleMessages(sbn.getNotification()); + + assertThat(ArrayUtils.isEmpty(messages)).isTrue(); + } + + @Test + public void testGetMessagingStyleMessages() { + StatusBarNotification sbn = new SbnBuilder() + .setNotification(mNotification1) + .build(); + + List<Notification.MessagingStyle.Message> messages = + getMessagingStyleMessages(sbn.getNotification()); + + assertThat(messages.size()).isEqualTo(3); + assertThat(messages.get(0).getText().toString()).isEqualTo(NOTIFICATION_TEXT_2); + } + + @Test + public void testIsMissedCall_notMissedCall() { + assertFalse(isMissedCall(mNotificationEntry1)); + } + + @Test + public void testIsMissedCall_missedCall() { + assertTrue(isMissedCall(mMissedCallNotificationEntry)); + } + + @Test + public void testisMissedCallOrHasContent_NoContent() { + assertFalse(isMissedCallOrHasContent(mNoContentNotificationEntry)); + } + + @Test + public void testisMissedCallOrHasContent_Hasontent() { + assertTrue(isMissedCallOrHasContent(mNotificationEntry1)); + } + + @Test + public void testGetHighestPriorityNotification_missedCallHigherPriority() { + Set<NotificationEntry> notifications = Set.of( + mNotificationEntry1, mMissedCallNotificationEntry); + + assertThat(getHighestPriorityNotification(notifications)) + .isEqualTo(mMissedCallNotificationEntry); + } + + @Test + public void testGetHighestPriorityNotification_moreRecentLastMessage() { + Set<NotificationEntry> notifications = Set.of( + mNotificationEntry1, mNotificationEntry2); + + assertThat(getHighestPriorityNotification(notifications)) + .isEqualTo(mNotificationEntry1); + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java index 24a63e7a2c73..50ab1c73227e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTest.java @@ -18,12 +18,11 @@ package com.android.systemui.people; import static com.google.common.truth.Truth.assertThat; +import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import android.app.people.ConversationChannel; -import android.app.people.IPeopleManager; -import android.content.pm.LauncherApps; import android.content.pm.PackageManager; import android.content.pm.ShortcutInfo; import android.net.Uri; @@ -36,8 +35,8 @@ import android.widget.RemoteViews; import androidx.test.filters.SmallTest; import com.android.systemui.SysuiTestCase; +import com.android.systemui.people.widget.PeopleSpaceWidgetManager; import com.android.systemui.shared.system.PeopleProviderUtils; -import com.android.systemui.statusbar.notification.NotificationEntryManager; import junit.framework.Assert; @@ -69,13 +68,11 @@ public class PeopleProviderTest extends SysuiTestCase { private Bundle mExtras = new Bundle(); @Mock - private LauncherApps mLauncherApps; - @Mock private PackageManager mPackageManager; @Mock - private IPeopleManager mPeopleManager; + private PeopleSpaceWidgetManager mPeopleSpaceWidgetManager; @Mock - private NotificationEntryManager mNotificationEntryManager; + private RemoteViews mRemoteViews; @Before public void setUp() throws Exception { @@ -85,9 +82,7 @@ public class PeopleProviderTest extends SysuiTestCase { PeopleProviderTestable provider = new PeopleProviderTestable(); provider.initializeForTesting( mContext, PeopleProviderUtils.PEOPLE_PROVIDER_AUTHORITY); - provider.setLauncherApps(mLauncherApps); - provider.setPeopleManager(mPeopleManager); - provider.setNotificationEntryManager(mNotificationEntryManager); + provider.setPeopleSpaceWidgetManager(mPeopleSpaceWidgetManager); mContext.getContentResolver().addProvider( PeopleProviderUtils.PEOPLE_PROVIDER_AUTHORITY, provider); @@ -95,9 +90,9 @@ public class PeopleProviderTest extends SysuiTestCase { PeopleProviderUtils.GET_PEOPLE_TILE_PREVIEW_PERMISSION, PackageManager.PERMISSION_GRANTED); - when(mPeopleManager.getConversation( - eq(PACKAGE_NAME_A), eq(USER_HANDLE_A.getIdentifier()), eq(SHORTCUT_ID_A))) - .thenReturn(mConversationChannel); + when(mPeopleSpaceWidgetManager.getPreview( + eq(SHORTCUT_ID_A), eq(USER_HANDLE_A), eq(PACKAGE_NAME_A), any())) + .thenReturn(mRemoteViews); mExtras.putString(PeopleProviderUtils.EXTRAS_KEY_SHORTCUT_ID, SHORTCUT_ID_A); mExtras.putString(PeopleProviderUtils.EXTRAS_KEY_PACKAGE_NAME, PACKAGE_NAME_A); @@ -146,8 +141,8 @@ public class PeopleProviderTest extends SysuiTestCase { @Test public void testPermissionGrantedNoConversationForShortcutReturnsNull() throws RemoteException { - when(mPeopleManager.getConversation( - eq(PACKAGE_NAME_A), eq(USER_HANDLE_A.getIdentifier()), eq(SHORTCUT_ID_A))) + when(mPeopleSpaceWidgetManager.getPreview( + eq(SHORTCUT_ID_A), eq(USER_HANDLE_A), eq(PACKAGE_NAME_A), any())) .thenReturn(null); try { Bundle result = mContext.getContentResolver().call( diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTestable.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTestable.java index 6834fa54a084..3e6d6746a997 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTestable.java +++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleProviderTestable.java @@ -16,12 +16,10 @@ package com.android.systemui.people; -import android.app.people.IPeopleManager; import android.content.Context; -import android.content.pm.LauncherApps; import android.content.pm.ProviderInfo; -import com.android.systemui.statusbar.notification.NotificationEntryManager; +import com.android.systemui.people.widget.PeopleSpaceWidgetManager; public class PeopleProviderTestable extends PeopleProvider { @@ -32,15 +30,7 @@ public class PeopleProviderTestable extends PeopleProvider { attachInfoForTesting(context, info); } - void setLauncherApps(LauncherApps launcherApps) { - mLauncherApps = launcherApps; - } - - void setPeopleManager(IPeopleManager peopleManager) { - mPeopleManager = peopleManager; - } - - void setNotificationEntryManager(NotificationEntryManager notificationEntryManager) { - mNotificationEntryManager = notificationEntryManager; + void setPeopleSpaceWidgetManager(PeopleSpaceWidgetManager peopleSpaceWidgetManager) { + mPeopleSpaceWidgetManager = peopleSpaceWidgetManager; } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java index 81ca4c898290..c929073d9a09 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/people/PeopleSpaceUtilsTest.java @@ -51,19 +51,15 @@ import android.net.Uri; import android.os.Bundle; import android.os.UserHandle; import android.provider.ContactsContract; -import android.service.notification.StatusBarNotification; import android.testing.AndroidTestingRunner; import android.util.DisplayMetrics; import androidx.test.filters.SmallTest; import com.android.internal.appwidget.IAppWidgetService; -import com.android.internal.util.ArrayUtils; import com.android.systemui.R; import com.android.systemui.SysuiTestCase; -import com.android.systemui.people.widget.PeopleTileKey; import com.android.systemui.statusbar.NotificationListener; -import com.android.systemui.statusbar.SbnBuilder; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; @@ -228,41 +224,7 @@ public class PeopleSpaceUtilsTest extends SysuiTestCase { } @Test - public void testGetMessagingStyleMessagesNoMessage() { - Notification notification = new Notification.Builder(mContext, "test") - .setContentTitle("TEST_TITLE") - .setContentText("TEST_TEXT") - .setShortcutId(SHORTCUT_ID_1) - .build(); - StatusBarNotification sbn = new SbnBuilder() - .setNotification(notification) - .build(); - - List<Notification.MessagingStyle.Message> messages = - PeopleSpaceUtils.getMessagingStyleMessages(sbn.getNotification()); - - assertThat(ArrayUtils.isEmpty(messages)).isTrue(); - } - - @Test - public void testGetMessagingStyleMessages() { - StatusBarNotification sbn = new SbnBuilder() - .setNotification(mNotification1) - .build(); - - List<Notification.MessagingStyle.Message> messages = - PeopleSpaceUtils.getMessagingStyleMessages(sbn.getNotification()); - - assertThat(messages.size()).isEqualTo(3); - assertThat(messages.get(0).getText().toString()).isEqualTo(NOTIFICATION_TEXT_2); - } - - @Test public void testAugmentTileFromNotification() { - StatusBarNotification sbn = new SbnBuilder() - .setNotification(mNotification1) - .build(); - PeopleSpaceTile tile = new PeopleSpaceTile .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent()) @@ -270,17 +232,13 @@ public class PeopleSpaceUtilsTest extends SysuiTestCase { .setUserHandle(new UserHandle(0)) .build(); PeopleSpaceTile actual = PeopleSpaceUtils - .augmentTileFromNotification(mContext, tile, sbn); + .augmentTileFromNotification(mContext, tile, mNotificationEntry1, 0); assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_TEXT_2); } @Test public void testAugmentTileFromNotificationNoContent() { - StatusBarNotification sbn = new SbnBuilder() - .setNotification(mNotification3) - .build(); - PeopleSpaceTile tile = new PeopleSpaceTile .Builder(SHORTCUT_ID_3, "userName", ICON, new Intent()) @@ -288,107 +246,12 @@ public class PeopleSpaceUtilsTest extends SysuiTestCase { .setUserHandle(new UserHandle(0)) .build(); PeopleSpaceTile actual = PeopleSpaceUtils - .augmentTileFromNotification(mContext, tile, sbn); + .augmentTileFromNotification(mContext, tile, mNotificationEntry3, 0); assertThat(actual.getNotificationContent()).isEqualTo(null); } @Test - public void testAugmentTileFromVisibleNotifications() { - PeopleSpaceTile tile = - new PeopleSpaceTile - .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent()) - .setPackageName(PACKAGE_NAME) - .setUserHandle(new UserHandle(0)) - .build(); - PeopleSpaceTile actual = PeopleSpaceUtils - .augmentTileFromVisibleNotifications(mContext, tile, - Map.of(new PeopleTileKey(mNotificationEntry1), mNotificationEntry1)); - - assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_TEXT_2); - } - - @Test - public void testAugmentTileFromVisibleNotificationsDifferentShortcutId() { - PeopleSpaceTile tile = - new PeopleSpaceTile - .Builder(SHORTCUT_ID_4, "userName", ICON, new Intent()) - .setPackageName(PACKAGE_NAME) - .setUserHandle(new UserHandle(0)) - .build(); - PeopleSpaceTile actual = PeopleSpaceUtils - .augmentTileFromVisibleNotifications(mContext, tile, - Map.of(new PeopleTileKey(mNotificationEntry1), mNotificationEntry1)); - - assertThat(actual.getNotificationContent()).isEqualTo(null); - } - - @Test - public void testAugmentTilesFromVisibleNotificationsSingleTile() { - PeopleSpaceTile tile = - new PeopleSpaceTile - .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent()) - .setPackageName(PACKAGE_NAME) - .setUserHandle(new UserHandle(0)) - .build(); - List<PeopleSpaceTile> actualList = PeopleSpaceUtils - .augmentTilesFromVisibleNotifications( - mContext, List.of(tile), mNotificationEntryManager); - - assertThat(actualList.size()).isEqualTo(1); - assertThat(actualList.get(0).getNotificationContent().toString()) - .isEqualTo(NOTIFICATION_TEXT_2); - - verify(mNotificationEntryManager, times(1)).getVisibleNotifications(); - } - - @Test - public void testAugmentTilesFromVisibleNotificationsMultipleTiles() { - PeopleSpaceTile tile1 = - new PeopleSpaceTile - .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent()) - .setPackageName(PACKAGE_NAME) - .setUserHandle(new UserHandle(0)) - .build(); - PeopleSpaceTile tile2 = - new PeopleSpaceTile - .Builder(SHORTCUT_ID_2, "userName2", ICON, new Intent()) - .setPackageName(PACKAGE_NAME) - .setUserHandle(new UserHandle(0)) - .build(); - List<PeopleSpaceTile> actualList = PeopleSpaceUtils - .augmentTilesFromVisibleNotifications(mContext, List.of(tile1, tile2), - mNotificationEntryManager); - - assertThat(actualList.size()).isEqualTo(2); - assertThat(actualList.get(0).getNotificationContent().toString()) - .isEqualTo(NOTIFICATION_TEXT_2); - assertThat(actualList.get(1).getNotificationContent().toString()) - .isEqualTo(NOTIFICATION_TEXT_4); - - verify(mNotificationEntryManager, times(1)).getVisibleNotifications(); - } - - @Test - public void testAugmentSingleTileFromVisibleNotificationsSingleTile() { - PeopleSpaceTile tile = - new PeopleSpaceTile - .Builder(SHORTCUT_ID_1, "userName", ICON, new Intent()) - .setPackageName(PACKAGE_NAME) - .setUserHandle(new UserHandle(0)) - .build(); - PeopleSpaceTile augmentedTile = PeopleSpaceUtils - .augmentSingleTileFromVisibleNotifications( - mContext, tile, mNotificationEntryManager); - - assertThat(augmentedTile).isNotNull(); - assertThat(augmentedTile.getNotificationContent().toString()) - .isEqualTo(NOTIFICATION_TEXT_2); - - verify(mNotificationEntryManager, times(1)).getVisibleNotifications(); - } - - @Test public void testDoNotUpdateSingleConversationAppWidgetWhenNotBirthday() { int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT}; when(mMockCursor.moveToNext()).thenReturn(true, false); diff --git a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java index 1ab5d341ab90..725e5d4523a7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/people/widget/PeopleSpaceWidgetManagerTest.java @@ -68,6 +68,7 @@ import android.content.pm.ShortcutInfo; import android.graphics.drawable.Icon; import android.net.Uri; import android.os.Bundle; +import android.os.RemoteException; import android.os.UserHandle; import android.os.UserManager; import android.service.notification.ConversationChannelWrapper; @@ -86,6 +87,7 @@ import com.android.systemui.statusbar.SbnBuilder; import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.collection.NoManSimulator; import com.android.systemui.statusbar.notification.collection.NoManSimulator.NotifEvent; +import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; import com.android.systemui.util.time.FakeSystemClock; @@ -99,8 +101,10 @@ import org.mockito.MockitoAnnotations; import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.HashSet; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.stream.Collectors; @@ -124,7 +128,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { private static final String SHORTCUT_ID = "101"; private static final String OTHER_SHORTCUT_ID = "102"; private static final String NOTIFICATION_KEY = "0|com.android.systemui.tests|0|null|0"; - private static final String NOTIFICATION_CONTENT = "message text"; + private static final String NOTIFICATION_CONTENT_1 = "message text 1"; private static final Uri URI = Uri.parse("fake_uri"); private static final Icon ICON = Icon.createWithResource("package", R.drawable.ic_android); private static final PeopleTileKey KEY = new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A); @@ -140,7 +144,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { .setPackageName(TEST_PACKAGE_A) .setUserHandle(new UserHandle(0)) .setNotificationKey(NOTIFICATION_KEY + "1") - .setNotificationContent(NOTIFICATION_CONTENT) + .setNotificationContent(NOTIFICATION_CONTENT_1) .setNotificationDataUri(URI) .setContactUri(URI) .build(); @@ -154,8 +158,8 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { // Same contact uri. .setContactUri(URI) .build(); - private final ShortcutInfo mShortcutInfo = new ShortcutInfo.Builder(mContext, - SHORTCUT_ID).setLongLabel("name").build(); + private ShortcutInfo mShortcutInfo; + private NotificationEntry mNotificationEntry; private PeopleSpaceWidgetManager mManager; @@ -215,6 +219,17 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { when(mAppWidgetManager.getAppWidgetOptions(eq(WIDGET_ID_WITHOUT_SHORTCUT))) .thenReturn(new Bundle()); when(mUserManager.isQuietModeEnabled(any())).thenReturn(false); + + when(mMockContext.getPackageName()).thenReturn(TEST_PACKAGE_A); + when(mMockContext.getUserId()).thenReturn(0); + mShortcutInfo = new ShortcutInfo.Builder(mMockContext, + SHORTCUT_ID).setLongLabel("name").build(); + mNotificationEntry = new NotificationEntryBuilder() + .setSbn(createNotification( + SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ false)) + .setId(1) + .setShortcutInfo(mShortcutInfo) + .build(); } @Test @@ -490,7 +505,8 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { ACTIVITY_GAME).setDescription("Playing a game!").build(); ConversationStatus status2 = new ConversationStatus.Builder(OTHER_SHORTCUT_ID, ACTIVITY_BIRTHDAY).build(); - ConversationChannel conversationChannel = getConversationWithShortcutId(OTHER_SHORTCUT_ID, + ConversationChannel conversationChannel = getConversationWithShortcutId( + new PeopleTileKey(OTHER_SHORTCUT_ID, 0, TEST_PACKAGE_A), Arrays.asList(status1, status2)); mManager.updateWidgetsWithConversationChanged(conversationChannel); mClock.advanceTime(MIN_LINGER_DURATION); @@ -508,7 +524,8 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { ConversationStatus status = new ConversationStatus.Builder(SHORTCUT_ID, ACTIVITY_GAME).setDescription("Playing a game!").build(); - ConversationChannel conversationChannel = getConversationWithShortcutId(SHORTCUT_ID, + ConversationChannel conversationChannel = getConversationWithShortcutId( + new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A), Arrays.asList(status)); mManager.updateWidgetsWithConversationChanged(conversationChannel); mClock.advanceTime(MIN_LINGER_DURATION); @@ -529,8 +546,8 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { ConversationStatus status = new ConversationStatus.Builder(SHORTCUT_ID, ACTIVITY_ANNIVERSARY).build(); - ConversationChannel conversationChannel = getConversationWithShortcutId(SHORTCUT_ID, - Arrays.asList(status)); + ConversationChannel conversationChannel = getConversationWithShortcutId( + new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A), Arrays.asList(status)); mManager.updateWidgetsWithConversationChanged(conversationChannel); mClock.advanceTime(MIN_LINGER_DURATION); @@ -550,11 +567,15 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { public void testUpdateNotificationPostedIfExistingTile() throws Exception { int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT}; when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray); - - NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder() + NotificationEntryBuilder builder = new NotificationEntryBuilder() .setSbn(createNotification( SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ false)) - .setId(1)); + .setShortcutInfo(mShortcutInfo) + .setId(1); + NotificationEntry entry = builder.build(); + when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry)); + + NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); verify(mAppWidgetManager, times(1)) @@ -563,7 +584,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { Bundle bundle = mBundleArgumentCaptor.getValue(); PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE); assertThat(tile.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); - assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT); + assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); } @@ -620,11 +641,15 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { throws Exception { int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT}; when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray); - - NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder() + NotificationEntryBuilder builder = new NotificationEntryBuilder() .setSbn(createNotification( SHORTCUT_ID, /* isMessagingStyle = */ false, /* isMissedCall = */ true)) - .setId(1)); + .setShortcutInfo(mShortcutInfo) + .setId(1); + NotificationEntry entry = builder.build(); + when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry)); + + NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); verify(mAppWidgetManager, times(1)) @@ -645,11 +670,15 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { throws Exception { int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT}; when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray); - - NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder() + NotificationEntryBuilder builder = new NotificationEntryBuilder() .setSbn(createNotification( SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true)) - .setId(1)); + .setShortcutInfo(mShortcutInfo) + .setId(1); + NotificationEntry entry = builder.build(); + when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry)); + + NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); verify(mAppWidgetManager, times(1)) @@ -659,7 +688,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { PeopleSpaceTile tile = bundle.getParcelable(OPTIONS_PEOPLE_TILE); assertThat(tile.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); - assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT); + assertThat(tile.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); } @@ -670,11 +699,15 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI}; when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray); - - NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder() + NotificationEntryBuilder builder = new NotificationEntryBuilder() .setSbn(createNotification( SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true)) - .setId(1)); + .setShortcutInfo(mShortcutInfo) + .setId(1); + NotificationEntry entry = builder.build(); + when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry)); + + NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); verify(mAppWidgetManager, times(1)) @@ -684,7 +717,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE); assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo( - NOTIFICATION_CONTENT); + NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); verify(mAppWidgetManager, times(1)) @@ -693,7 +726,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { Bundle bundleForSameUriTile = requireNonNull(mBundleArgumentCaptor.getValue()); PeopleSpaceTile tileWithSameUri = bundleForSameUriTile.getParcelable(OPTIONS_PEOPLE_TILE); assertThat(tileWithSameUri.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); - assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT); + assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI), any()); } @@ -704,12 +737,19 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI}; when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray); - - NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder() + NotificationEntryBuilder builder = new NotificationEntryBuilder() .setSbn(createNotification( SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true)) - .setId(1)); + .setShortcutInfo(mShortcutInfo) + .setId(1); + + NotificationEntry entry = builder.build(); + when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry)); + + NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); + + when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of()); NotifEvent notif1b = mNoMan.retractNotif(notif1.sbn.cloneLight(), 0); mClock.advanceTime(MIN_LINGER_DURATION); @@ -733,45 +773,11 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { } @Test - public void testDoNotRemoveMissedCallIfMatchingUriTileMissingReadContactsPermissionWhenPosted() - throws Exception { - when(mPackageManager.checkPermission(any(), - eq(PERSON_TILE_WITH_SAME_URI.getPackageName()))).thenReturn( - PERMISSION_HARD_DENIED); - int[] widgetIdsArray = - {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI}; - when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray); - - NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder() - .setSbn(createNotification( - SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true)) - .setId(1)); - mClock.advanceTime(MIN_LINGER_DURATION); - // We should only try to remove the notification if the Missed Call was added when posted. - NotifEvent notif1b = mNoMan.retractNotif(notif1.sbn.cloneLight(), 0); - mClock.advanceTime(MIN_LINGER_DURATION); - - verify(mAppWidgetManager, times(2)).updateAppWidgetOptions(eq(WIDGET_ID_WITH_SHORTCUT), - mBundleArgumentCaptor.capture()); - Bundle bundle = mBundleArgumentCaptor.getValue(); - PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE); - assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(null); - assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo(null); - verify(mAppWidgetManager, times(2)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), - any()); - verify(mAppWidgetManager, times(0)) - .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SAME_URI), any()); - verify(mAppWidgetManager, times(0)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI), - any()); - } - - @Test public void testUpdateMissedCallNotificationWithContentPostedIfMatchingUriTileFromSender() throws Exception { int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI}; when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray); - Notification notificationWithPersonOnlyInSender = createMessagingStyleNotificationWithoutExtras( SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ @@ -782,9 +788,15 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { .setUid(0) .setUser(new UserHandle(0)) .build(); - NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder() + NotificationEntryBuilder builder = new NotificationEntryBuilder() + .setRank(1) + .setShortcutInfo(mShortcutInfo) .setSbn(sbn) - .setId(1)); + .setId(1); + NotificationEntry entry = builder.build(); + when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry)); + + NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); verify(mAppWidgetManager, times(1)) @@ -794,7 +806,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE); assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo( - NOTIFICATION_CONTENT); + NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); verify(mAppWidgetManager, times(1)) @@ -803,7 +815,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { Bundle bundleForSameUriTile = requireNonNull(mBundleArgumentCaptor.getValue()); PeopleSpaceTile tileWithSameUri = bundleForSameUriTile.getParcelable(OPTIONS_PEOPLE_TILE); assertThat(tileWithSameUri.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); - assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT); + assertThat(tileWithSameUri.getNotificationContent()).isEqualTo(NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI), any()); } @@ -814,14 +826,13 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI}; when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray); - // Notification posted without any Person attached. Notification notificationWithoutPersonObject = createMessagingStyleNotificationWithoutExtras( SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true).setStyle(new Notification.MessagingStyle("sender") .addMessage( - new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT, 10, + new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT_1, 10, "sender")) ).build(); StatusBarNotification sbn = new SbnBuilder() @@ -830,9 +841,15 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { .setUid(0) .setUser(new UserHandle(0)) .build(); - NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder() + NotificationEntryBuilder builder = new NotificationEntryBuilder() .setSbn(sbn) - .setId(1)); + .setShortcutInfo(mShortcutInfo) + .setId(1); + NotificationEntry entry = builder.build(); + when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry)); + + NotifEvent notif1 = mNoMan.postNotif(builder); + mClock.advanceTime(MIN_LINGER_DURATION); verify(mAppWidgetManager, times(1)) @@ -842,7 +859,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE); assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo( - NOTIFICATION_CONTENT); + NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); // Do not update since notification doesn't include a Person reference. @@ -863,11 +880,15 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_DIFFERENT_URI}; when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray); - - NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder() + NotificationEntryBuilder builder = new NotificationEntryBuilder() .setSbn(createNotification( SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true)) - .setId(1)); + .setShortcutInfo(mShortcutInfo) + .setId(1); + NotificationEntry entry = builder.build(); + when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry)); + + NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); verify(mAppWidgetManager, times(1)) @@ -877,7 +898,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE); assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo( - NOTIFICATION_CONTENT); + NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); // Do not update since missing permission to read contacts. @@ -897,11 +918,15 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { int[] widgetIdsArray = {WIDGET_ID_WITH_SHORTCUT, WIDGET_ID_WITHOUT_SHORTCUT, WIDGET_ID_WITH_SAME_URI}; when(mAppWidgetManager.getAppWidgetIds(any())).thenReturn(widgetIdsArray); - - NotifEvent notif1 = mNoMan.postNotif(new NotificationEntryBuilder() + NotificationEntryBuilder builder = new NotificationEntryBuilder() .setSbn(createNotification( SHORTCUT_ID, /* isMessagingStyle = */ true, /* isMissedCall = */ true)) - .setId(1)); + .setShortcutInfo(mShortcutInfo) + .setId(1); + NotificationEntry entry = builder.build(); + when(mNotificationEntryManager.getVisibleNotifications()).thenReturn(List.of(entry)); + + NotifEvent notif1 = mNoMan.postNotif(builder); mClock.advanceTime(MIN_LINGER_DURATION); verify(mAppWidgetManager, times(1)) @@ -911,14 +936,18 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { PeopleSpaceTile tileWithMissedCallOrigin = bundle.getParcelable(OPTIONS_PEOPLE_TILE); assertThat(tileWithMissedCallOrigin.getNotificationKey()).isEqualTo(NOTIFICATION_KEY); assertThat(tileWithMissedCallOrigin.getNotificationContent()).isEqualTo( - NOTIFICATION_CONTENT); + NOTIFICATION_CONTENT_1); verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SHORTCUT), any()); // Do not update since missing permission to read contacts. - verify(mAppWidgetManager, times(0)) + verify(mAppWidgetManager, times(1)) .updateAppWidgetOptions(eq(WIDGET_ID_WITH_SAME_URI), - any()); - verify(mAppWidgetManager, times(0)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI), + mBundleArgumentCaptor.capture()); + Bundle noNotificationBundle = requireNonNull(mBundleArgumentCaptor.getValue()); + PeopleSpaceTile tileNoNotification = + noNotificationBundle.getParcelable(OPTIONS_PEOPLE_TILE); + assertThat(tileNoNotification.getNotificationKey()).isNull(); + verify(mAppWidgetManager, times(1)).updateAppWidget(eq(WIDGET_ID_WITH_SAME_URI), any()); } @@ -952,7 +981,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { public void testAddThenReconfigureWidgetsUpdatesStorageCacheAndListeners() throws Exception { clearStorage(); - mManager.addNewWidget(WIDGET_ID_WITH_SHORTCUT, PERSON_TILE); + mManager.addNewWidget(WIDGET_ID_WITH_SHORTCUT, new PeopleTileKey(PERSON_TILE)); // Check storage. SharedPreferences widgetSp = mContext.getSharedPreferences( String.valueOf(WIDGET_ID_WITH_SHORTCUT), @@ -971,7 +1000,8 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { eq(LauncherApps.FLAG_CACHE_PEOPLE_TILE_SHORTCUTS)); // Reconfigure WIDGET_ID_WITH_SHORTCUT from PERSON_TILE to PERSON_TILE_WITH_SAME_URI - mManager.addNewWidget(WIDGET_ID_WITH_SHORTCUT, PERSON_TILE_WITH_SAME_URI); + mManager.addNewWidget( + WIDGET_ID_WITH_SHORTCUT, new PeopleTileKey(PERSON_TILE_WITH_SAME_URI)); // Check listener is removed and shortcut is uncached. verify(mPeopleManager).unregisterConversationListener(any()); @@ -1120,26 +1150,28 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { @Test public void testGetPeopleTileFromPersistentStorageExistingConversation() throws Exception { - when(mIPeopleManager.getConversation(PACKAGE_NAME, 0, SHORTCUT_ID)).thenReturn( - getConversationWithShortcutId(SHORTCUT_ID)); - PeopleTileKey key = new PeopleTileKey(SHORTCUT_ID, 0, PACKAGE_NAME); + ConversationChannel channel = getConversationWithShortcutId( + new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A)); + when(mIPeopleManager.getConversation(TEST_PACKAGE_A, 0, SHORTCUT_ID)).thenReturn(channel); + PeopleTileKey key = new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A); PeopleSpaceTile tile = mManager.getTileFromPersistentStorage(key); assertThat(tile.getId()).isEqualTo(key.getShortcutId()); } @Test - public void testGetPeopleTileFromPersistentStorageNoConversation() { - PeopleTileKey key = new PeopleTileKey(SHORTCUT_ID, 0, PACKAGE_NAME); + public void testGetPeopleTileFromPersistentStorageNoConversation() throws RemoteException { + when(mIPeopleManager.getConversation(TEST_PACKAGE_A, 0, SHORTCUT_ID)).thenReturn(null); + PeopleTileKey key = new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A); PeopleSpaceTile tile = mManager.getTileFromPersistentStorage(key); assertThat(tile).isNull(); } @Test public void testRequestPinAppWidgetExistingConversation() throws Exception { - when(mMockContext.getPackageName()).thenReturn(PACKAGE_NAME); - when(mMockContext.getUserId()).thenReturn(0); - when(mIPeopleManager.getConversation(PACKAGE_NAME, 0, SHORTCUT_ID)) - .thenReturn(getConversationWithShortcutId(SHORTCUT_ID)); + ConversationChannel channel = getConversationWithShortcutId( + new PeopleTileKey(SHORTCUT_ID, 0, TEST_PACKAGE_A)); + when(mIPeopleManager.getConversation(TEST_PACKAGE_A, 0, SHORTCUT_ID)) + .thenReturn(channel); when(mAppWidgetManager.requestPinAppWidget(any(), any(), any())).thenReturn(true); ShortcutInfo info = new ShortcutInfo.Builder(mMockContext, SHORTCUT_ID).build(); @@ -1152,9 +1184,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { @Test public void testRequestPinAppWidgetNoConversation() throws Exception { - when(mMockContext.getPackageName()).thenReturn(PACKAGE_NAME); - when(mMockContext.getUserId()).thenReturn(0); - when(mIPeopleManager.getConversation(PACKAGE_NAME, 0, SHORTCUT_ID)).thenReturn(null); + when(mIPeopleManager.getConversation(TEST_PACKAGE_A, 0, SHORTCUT_ID)).thenReturn(null); ShortcutInfo info = new ShortcutInfo.Builder(mMockContext, SHORTCUT_ID).build(); boolean valid = mManager.requestPinAppWidget(info, new Bundle()); @@ -1163,6 +1193,57 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { verify(mAppWidgetManager, never()).requestPinAppWidget(any(), any(), any()); } + @Test + public void testAugmentTileFromNotifications() { + PeopleSpaceTile tile = + new PeopleSpaceTile + .Builder(SHORTCUT_ID, "userName", ICON, new Intent()) + .setPackageName(TEST_PACKAGE_A) + .setUserHandle(new UserHandle(0)) + .build(); + PeopleSpaceTile actual = mManager.augmentTileFromNotifications(tile, EMPTY_STRING, + Map.of(new PeopleTileKey(mNotificationEntry), + new HashSet<>(Collections.singleton(mNotificationEntry)))); + + assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_CONTENT_1); + } + + @Test + public void testAugmentTileFromNotificationsDifferentShortcutId() { + PeopleSpaceTile tile = + new PeopleSpaceTile + .Builder(OTHER_SHORTCUT_ID, "userName", ICON, new Intent()) + .setPackageName(TEST_PACKAGE_A) + .setUserHandle(new UserHandle(0)) + .build(); + PeopleSpaceTile actual = mManager + .augmentTileFromNotifications(tile, EMPTY_STRING, + Map.of(new PeopleTileKey(mNotificationEntry), + new HashSet<>(Collections.singleton(mNotificationEntry)))); + + assertThat(actual.getNotificationContent()).isEqualTo(null); + } + + @Test + public void testAugmentTileFromNotificationEntryManager() { + PeopleSpaceTile tile = + new PeopleSpaceTile + .Builder(SHORTCUT_ID, "userName", ICON, new Intent()) + .setPackageName(TEST_PACKAGE_A) + .setUserHandle(new UserHandle(0)) + .build(); + when(mNotificationEntryManager.getVisibleNotifications()) + .thenReturn(List.of(mNotificationEntry)); + + PeopleSpaceTile actual = + mManager.augmentTileFromNotificationEntryManager(tile); + + assertThat(actual.getNotificationContent().toString()).isEqualTo(NOTIFICATION_CONTENT_1); + + verify(mNotificationEntryManager, times(1)) + .getVisibleNotifications(); + } + /** * Adds another widget for {@code PERSON_TILE} with widget ID: {@code * SECOND_WIDGET_ID_WITH_SHORTCUT}. @@ -1179,10 +1260,11 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { setStorageForTile(tile.getId(), tile.getPackageName(), widgetId, tile.getContactUri()); Bundle options = new Bundle(); options.putParcelable(OPTIONS_PEOPLE_TILE, tile); + ConversationChannel channel = getConversationWithShortcutId(new PeopleTileKey(tile)); when(mAppWidgetManager.getAppWidgetOptions(eq(widgetId))) .thenReturn(options); - when(mIPeopleManager.getConversation(tile.getPackageName(), 0, tile.getId())).thenReturn( - getConversationWithShortcutId(tile.getId())); + when(mIPeopleManager.getConversation(tile.getPackageName(), 0, tile.getId())) + .thenReturn(channel); when(mPackageManager.checkPermission(any(), eq(tile.getPackageName()))).thenReturn( PERMISSION_GRANTED); } @@ -1190,17 +1272,19 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { /** * Returns a single conversation associated with {@code shortcutId}. */ - private ConversationChannel getConversationWithShortcutId(String shortcutId) throws Exception { - return getConversationWithShortcutId(shortcutId, Arrays.asList()); + private ConversationChannel getConversationWithShortcutId(PeopleTileKey key) throws Exception { + return getConversationWithShortcutId(key, Arrays.asList()); } /** * Returns a single conversation associated with {@code shortcutId} and {@code statuses}. */ - private ConversationChannel getConversationWithShortcutId(String shortcutId, + private ConversationChannel getConversationWithShortcutId(PeopleTileKey key, List<ConversationStatus> statuses) throws Exception { - ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mContext, shortcutId).setLongLabel( - "name").setPerson(PERSON).build(); + when(mMockContext.getPackageName()).thenReturn(key.getPackageName()); + when(mMockContext.getUserId()).thenReturn(key.getUserId()); + ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(mMockContext, key.getShortcutId()) + .setLongLabel("name").setPerson(PERSON).build(); ConversationChannel convo = new ConversationChannel(shortcutInfo, 0, null, null, 0L, false, false, statuses); return convo; @@ -1220,7 +1304,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { if (isMessagingStyle) { builder.setStyle(new Notification.MessagingStyle(PERSON) .addMessage( - new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT, 10, + new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT_1, 10, PERSON)) ); } @@ -1239,7 +1323,7 @@ public class PeopleSpaceWidgetManagerTest extends SysuiTestCase { if (isMessagingStyle) { builder.setStyle(new Notification.MessagingStyle(PERSON) .addMessage( - new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT, 10, + new Notification.MessagingStyle.Message(NOTIFICATION_CONTENT_1, 10, PERSON)) ); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java index bacc4930815b..53eae8c46d2f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.java @@ -32,6 +32,7 @@ import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEventLogger; import com.android.internal.logging.testing.UiEventLoggerFake; import com.android.systemui.SysuiTestCase; +import com.android.systemui.classifier.FalsingManagerFake; import com.android.systemui.dump.DumpManager; import com.android.systemui.media.MediaHost; import com.android.systemui.plugins.qs.QSTileView; @@ -94,6 +95,7 @@ public class QSPanelControllerTest extends SysuiTestCase { QSTileView mQSTileView; @Mock PagedTileLayout mPagedTileLayout; + FalsingManagerFake mFalsingManager = new FalsingManagerFake(); @Mock FeatureFlags mFeatureFlags; @@ -121,7 +123,7 @@ public class QSPanelControllerTest extends SysuiTestCase { mQSTileHost, mQSCustomizerController, true, mMediaHost, mQSTileRevealControllerFactory, mDumpManager, mMetricsLogger, mUiEventLogger, mQSLogger, mBrightnessControllerFactory, mToggleSliderViewControllerFactory, - mFeatureFlags + mFalsingManager, mFeatureFlags ); mController.init(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/settings/brightness/BrightnessSliderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/settings/brightness/BrightnessSliderTest.kt index 3ed8ecf1d809..e0187bdf6ada 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/settings/brightness/BrightnessSliderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/settings/brightness/BrightnessSliderTest.kt @@ -18,8 +18,6 @@ package com.android.systemui.settings.brightness import android.testing.AndroidTestingRunner import android.view.MotionEvent -import android.view.View -import android.view.ViewGroup import android.widget.SeekBar import androidx.test.filters.SmallTest import com.android.settingslib.RestrictedLockUtils @@ -39,7 +37,6 @@ import org.mockito.ArgumentMatchers.anyBoolean import org.mockito.Captor import org.mockito.Mock import org.mockito.Mockito.isNull -import org.mockito.Mockito.mock import org.mockito.Mockito.never import org.mockito.Mockito.notNull import org.mockito.Mockito.verify @@ -51,8 +48,6 @@ import org.mockito.Mockito.`when` as whenever class BrightnessSliderTest : SysuiTestCase() { @Mock - private lateinit var rootView: View - @Mock private lateinit var brightnessSliderView: BrightnessSliderView @Mock private lateinit var enforcedAdmin: RestrictedLockUtils.EnforcedAdmin @@ -80,7 +75,7 @@ class BrightnessSliderTest : SysuiTestCase() { whenever(mirrorController.toggleSlider).thenReturn(mirror) whenever(motionEvent.copy()).thenReturn(motionEvent) - mController = BrightnessSlider(rootView, brightnessSliderView, mFalsingManager) + mController = BrightnessSlider(brightnessSliderView, mFalsingManager) mController.init() mController.setOnChangedListener(listener) } @@ -203,9 +198,7 @@ class BrightnessSliderTest : SysuiTestCase() { @Test fun testSeekBarTrackingStarted() { - val parent = mock(ViewGroup::class.java) whenever(brightnessSliderView.value).thenReturn(42) - whenever(brightnessSliderView.parent).thenReturn(parent) mController.onViewAttached() mController.setMirrorControllerAndMirror(mirrorController) @@ -215,7 +208,7 @@ class BrightnessSliderTest : SysuiTestCase() { verify(listener).onChanged(eq(true), eq(42), eq(false)) verify(mirrorController).showMirror() - verify(mirrorController).setLocation(parent) + verify(mirrorController).setLocationAndSize(brightnessSliderView) } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java index b4a3393ab5db..0bb66fc14553 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java @@ -239,51 +239,87 @@ public class NotificationTestHelper { /** * Returns an {@link ExpandableNotificationRow} that should be shown as a bubble. */ - public ExpandableNotificationRow createBubbleInGroup() + public ExpandableNotificationRow createBubble() throws Exception { - return createBubble(makeBubbleMetadata(null), PKG, true); + Notification n = createNotification(false /* isGroupSummary */, + null /* groupKey */, makeBubbleMetadata(null)); + n.flags |= FLAG_BUBBLE; + ExpandableNotificationRow row = generateRow(n, PKG, UID, USER_HANDLE, + 0 /* extraInflationFlags */, IMPORTANCE_HIGH); + modifyRanking(row.getEntry()) + .setCanBubble(true) + .build(); + return row; } /** - * Returns an {@link ExpandableNotificationRow} that should be shown as a bubble. + * Returns an {@link ExpandableNotificationRow} that should be shown as a bubble and is part + * of a group of notifications. */ - public ExpandableNotificationRow createBubble() + public ExpandableNotificationRow createBubbleInGroup() throws Exception { - return createBubble(makeBubbleMetadata(null), PKG, false); + Notification n = createNotification(false /* isGroupSummary */, + GROUP_KEY /* groupKey */, makeBubbleMetadata(null)); + n.flags |= FLAG_BUBBLE; + ExpandableNotificationRow row = generateRow(n, PKG, UID, USER_HANDLE, + 0 /* extraInflationFlags */, IMPORTANCE_HIGH); + modifyRanking(row.getEntry()) + .setCanBubble(true) + .build(); + return row; } /** - * Returns an {@link ExpandableNotificationRow} that should be shown as a bubble. + * Returns an {@link NotificationEntry} that should be shown as a bubble. * * @param deleteIntent the intent to assign to {@link BubbleMetadata#deleteIntent} */ - public ExpandableNotificationRow createBubble(@Nullable PendingIntent deleteIntent) - throws Exception { - return createBubble(makeBubbleMetadata(deleteIntent), PKG, false); + public NotificationEntry createBubble(@Nullable PendingIntent deleteIntent) { + return createBubble(makeBubbleMetadata(deleteIntent), USER_HANDLE); } /** - * Returns an {@link ExpandableNotificationRow} that should be shown as a bubble. + * Returns an {@link NotificationEntry} that should be shown as a bubble. * - * @param bubbleMetadata the {@link BubbleMetadata} to use + * @param handle the user to associate with this bubble. */ - public ExpandableNotificationRow createBubble(BubbleMetadata bubbleMetadata, String pkg) - throws Exception { - return createBubble(bubbleMetadata, pkg, false); + public NotificationEntry createBubble(UserHandle handle) { + return createBubble(makeBubbleMetadata(null), handle); } - private ExpandableNotificationRow createBubble(BubbleMetadata bubbleMetadata, String pkg, - boolean inGroup) - throws Exception { - Notification n = createNotification(false /* isGroupSummary */, - inGroup ? GROUP_KEY : null /* groupKey */, bubbleMetadata); + /** + * Returns an {@link NotificationEntry} that should be shown as a bubble. + * + * @param userHandle the user to associate with this notification. + */ + private NotificationEntry createBubble(BubbleMetadata metadata, UserHandle userHandle) { + Notification n = createNotification(false /* isGroupSummary */, null /* groupKey */, + metadata); n.flags |= FLAG_BUBBLE; - ExpandableNotificationRow row = generateRow(n, pkg, UID, USER_HANDLE, - 0 /* extraInflationFlags */, IMPORTANCE_HIGH); - modifyRanking(row.getEntry()) + + final NotificationChannel channel = + new NotificationChannel( + n.getChannelId(), + n.getChannelId(), + IMPORTANCE_HIGH); + channel.setBlockable(true); + + NotificationEntry entry = new NotificationEntryBuilder() + .setPkg(PKG) + .setOpPkg(PKG) + .setId(mId++) + .setUid(UID) + .setInitialPid(2000) + .setNotification(n) + .setUser(userHandle) + .setPostTime(System.currentTimeMillis()) + .setChannel(channel) + .build(); + + modifyRanking(entry) .setCanBubble(true) .build(); - return row; + return entry; } /** diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java index 929a7e1543fb..0e3e0cc8ea97 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java @@ -184,7 +184,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { Mockito.verify(mOngoingCallController).addCallback(ongoingCallListenerCaptor.capture()); OngoingCallListener listener = Objects.requireNonNull(ongoingCallListenerCaptor.getValue()); - when(mOngoingCallController.getHasOngoingCall()).thenReturn(true); + when(mOngoingCallController.hasOngoingCall()).thenReturn(true); listener.onOngoingCallStarted(/* animate= */ false); assertEquals(View.VISIBLE, @@ -205,7 +205,7 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { Mockito.verify(mOngoingCallController).addCallback(ongoingCallListenerCaptor.capture()); OngoingCallListener listener = Objects.requireNonNull(ongoingCallListenerCaptor.getValue()); - when(mOngoingCallController.getHasOngoingCall()).thenReturn(false); + when(mOngoingCallController.hasOngoingCall()).thenReturn(false); listener.onOngoingCallEnded(/* animate= */ false); assertEquals(View.GONE, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java index 3989dfa55991..11f96c87c0e5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java @@ -38,6 +38,7 @@ import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.app.IWallpaperManager; import android.app.Notification; import android.app.StatusBarManager; import android.app.trust.TrustManager; @@ -269,6 +270,7 @@ public class StatusBarTest extends SysuiTestCase { @Mock private PrivacyDotViewController mDotViewController; @Mock private TunerService mTunerService; @Mock private FeatureFlags mFeatureFlags; + @Mock private IWallpaperManager mWallpaperManager; private ShadeController mShadeController; private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock()); private InitController mInitController = new InitController(); @@ -327,7 +329,8 @@ public class StatusBarTest extends SysuiTestCase { when(mRemoteInputManager.getController()).thenReturn(mRemoteInputController); - WakefulnessLifecycle wakefulnessLifecycle = new WakefulnessLifecycle(); + WakefulnessLifecycle wakefulnessLifecycle = + new WakefulnessLifecycle(mContext, mWallpaperManager); wakefulnessLifecycle.dispatchStartedWakingUp(PowerManager.WAKE_REASON_UNKNOWN); wakefulnessLifecycle.dispatchFinishedWakingUp(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt index d87d1d1b92db..c244290fdacd 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ongoingcall/OngoingCallControllerTest.kt @@ -19,14 +19,16 @@ package com.android.systemui.statusbar.phone.ongoingcall import android.app.Notification import android.app.PendingIntent import android.app.Person +import android.content.Intent import android.service.notification.NotificationListenerService.REASON_USER_STOPPED -import androidx.test.filters.SmallTest import android.testing.AndroidTestingRunner import android.testing.TestableLooper import android.view.LayoutInflater import android.widget.LinearLayout +import androidx.test.filters.SmallTest import com.android.systemui.R import com.android.systemui.SysuiTestCase +import com.android.systemui.plugins.ActivityStarter import com.android.systemui.statusbar.FeatureFlags import com.android.systemui.statusbar.notification.collection.NotificationEntry import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder @@ -43,6 +45,7 @@ import org.mockito.Mock import org.mockito.Mockito.mock import org.mockito.Mockito.verify import org.mockito.Mockito.never +import org.mockito.Mockito.times import org.mockito.Mockito.`when` import org.mockito.MockitoAnnotations @@ -55,6 +58,7 @@ class OngoingCallControllerTest : SysuiTestCase() { private lateinit var notifCollectionListener: NotifCollectionListener @Mock private lateinit var mockOngoingCallListener: OngoingCallListener + @Mock private lateinit var mockActivityStarter: ActivityStarter private lateinit var chipView: LinearLayout @@ -71,7 +75,8 @@ class OngoingCallControllerTest : SysuiTestCase() { `when`(featureFlags.isOngoingCallStatusBarChipEnabled).thenReturn(true) val notificationCollection = mock(CommonNotifCollection::class.java) - controller = OngoingCallController(notificationCollection, featureFlags, FakeSystemClock()) + controller = OngoingCallController( + notificationCollection, featureFlags, FakeSystemClock(), mockActivityStarter) controller.init() controller.addCallback(mockOngoingCallListener) controller.setChipView(chipView) @@ -111,22 +116,24 @@ class OngoingCallControllerTest : SysuiTestCase() { @Test fun hasOngoingCall_noOngoingCallNotifSent_returnsFalse() { - assertThat(controller.hasOngoingCall).isFalse() + assertThat(controller.hasOngoingCall()).isFalse() } @Test fun hasOngoingCall_ongoingCallNotifSentAndChipViewSet_returnsTrue() { notifCollectionListener.onEntryUpdated(createOngoingCallNotifEntry()) - assertThat(controller.hasOngoingCall).isTrue() + assertThat(controller.hasOngoingCall()).isTrue() } @Test - fun hasOngoingCall_ongoingCallNotifSentButNoChipView_returnsFalse() { - controller.setChipView(null) + fun hasOngoingCall_ongoingCallNotifSentButInvalidChipView_returnsFalse() { + val invalidChipView = LinearLayout(context) + controller.setChipView(invalidChipView) + notifCollectionListener.onEntryUpdated(createOngoingCallNotifEntry()) - assertThat(controller.hasOngoingCall).isFalse() + assertThat(controller.hasOngoingCall()).isFalse() } @Test @@ -136,12 +143,42 @@ class OngoingCallControllerTest : SysuiTestCase() { notifCollectionListener.onEntryUpdated(ongoingCallNotifEntry) notifCollectionListener.onEntryRemoved(ongoingCallNotifEntry, REASON_USER_STOPPED) - assertThat(controller.hasOngoingCall).isFalse() + assertThat(controller.hasOngoingCall()).isFalse() + } + + /** + * This test fakes a theme change during an ongoing call. + * + * When a theme change happens, [CollapsedStatusBarFragment] and its views get re-created, so + * [OngoingCallController.setChipView] gets called with a new view. If there's an active ongoing + * call when the theme changes, the new view needs to be updated with the call information. + */ + @Test + fun setChipView_whenHasOngoingCallIsTrue_listenerNotifiedWithNewView() { + // Start an ongoing call. + notifCollectionListener.onEntryUpdated(createOngoingCallNotifEntry()) + + lateinit var newChipView: LinearLayout + TestableLooper.get(this).runWithLooper { + newChipView = LayoutInflater.from(mContext) + .inflate(R.layout.ongoing_call_chip, null) as LinearLayout + } + + // Change the chip view associated with the controller. + controller.setChipView(newChipView) + + // Verify the listener was notified once for the initial call and again when the new view + // was set. + verify(mockOngoingCallListener, times(2)).onOngoingCallStarted(anyBoolean()) } private fun createOngoingCallNotifEntry(): NotificationEntry { val notificationEntryBuilder = NotificationEntryBuilder() notificationEntryBuilder.modifyNotification(context).style = ongoingCallStyle + + val contentIntent = mock(PendingIntent::class.java) + `when`(contentIntent.intent).thenReturn(mock(Intent::class.java)) + notificationEntryBuilder.modifyNotification(context).setContentIntent(contentIntent) return notificationEntryBuilder.build() } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java index 40439a2bebb2..f33c9e88c347 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java @@ -129,7 +129,6 @@ public class NetworkControllerBaseTest extends SysuiTestCase { protected int mSubId; private NetworkCapabilities mNetCapabilities; - private Network mNetwork; private ConnectivityManager.NetworkCallback mDefaultCallbackInWifiTracker; private ConnectivityManager.NetworkCallback mDefaultCallbackInNetworkController; private ConnectivityManager.NetworkCallback mNetworkCallback; @@ -174,10 +173,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase { mMockCm = mock(ConnectivityManager.class); mMockBd = mock(BroadcastDispatcher.class); mMockNsm = mock(NetworkScoreManager.class); - mNetwork = mock(Network.class); mMockSubDefaults = mock(SubscriptionDefaults.class); mNetCapabilities = new NetworkCapabilities(); - when(mNetwork.getNetId()).thenReturn(0); when(mMockTm.isDataCapable()).thenReturn(true); when(mMockTm.createForSubscriptionId(anyInt())).thenReturn(mMockTm); doAnswer(invocation -> { @@ -326,7 +323,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase { new NetworkCapabilities.Builder(mNetCapabilities); builder.setTransportInfo(info); setConnectivityCommon(builder, networkType, validated, isConnected); - mDefaultCallbackInNetworkController.onCapabilitiesChanged(mNetwork, builder.build()); + mDefaultCallbackInNetworkController.onCapabilitiesChanged( + mock(Network.class), builder.build()); } public void setConnectivityViaCallbackInNetworkController( @@ -337,7 +335,8 @@ public class NetworkControllerBaseTest extends SysuiTestCase { builder.setTransportInfo(wifiInfo); } setConnectivityCommon(builder, networkType, validated, isConnected); - mDefaultCallbackInNetworkController.onCapabilitiesChanged(mNetwork, builder.build()); + mDefaultCallbackInNetworkController.onCapabilitiesChanged( + mock(Network.class), builder.build()); } public void setConnectivityViaCallbackInWifiTracker( @@ -351,10 +350,10 @@ public class NetworkControllerBaseTest extends SysuiTestCase { if (networkType == NetworkCapabilities.TRANSPORT_WIFI) { if (isConnected) { final NetworkCapabilities newCap = builder.build(); - mNetworkCallback.onAvailable(mNetwork); - mNetworkCallback.onCapabilitiesChanged(mNetwork, newCap); + mNetworkCallback.onAvailable(mock(Network.class)); + mNetworkCallback.onCapabilitiesChanged(mock(Network.class), newCap); } else { - mNetworkCallback.onLost(mNetwork); + mNetworkCallback.onLost(mock(Network.class)); } } } @@ -368,11 +367,11 @@ public class NetworkControllerBaseTest extends SysuiTestCase { if (networkType == NetworkCapabilities.TRANSPORT_CELLULAR) { if (isConnected) { final NetworkCapabilities newCap = builder.build(); - mNetworkCallback.onAvailable(mNetwork); - mNetworkCallback.onCapabilitiesChanged(mNetwork, newCap); - mDefaultCallbackInWifiTracker.onCapabilitiesChanged(mNetwork, newCap); + mNetworkCallback.onAvailable(mock(Network.class)); + mNetworkCallback.onCapabilitiesChanged(mock(Network.class), newCap); + mDefaultCallbackInWifiTracker.onCapabilitiesChanged(mock(Network.class), newCap); } else { - mNetworkCallback.onLost(mNetwork); + mNetworkCallback.onLost(mock(Network.class)); } } } @@ -386,7 +385,7 @@ public class NetworkControllerBaseTest extends SysuiTestCase { } setConnectivityCommon(builder, networkType, validated, isConnected); mDefaultCallbackInWifiTracker.onCapabilitiesChanged( - mNetwork, builder.build()); + mock(Network.class), builder.build()); } private static void setConnectivityCommon(NetworkCapabilities.Builder builder, diff --git a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java index 64127b9d1e6e..8ad6271bfc7e 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java +++ b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeStatusBarIconController.java @@ -66,6 +66,10 @@ public class FakeStatusBarIconController extends BaseLeakChecker<IconManager> } @Override + public void setCallStrengthIcons(String slot, List<CallIndicatorIconState> states) { + } + + @Override public void setNoCallingIcons(String slot, List<CallIndicatorIconState> states) { } diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java index abc8da24fdb5..9fc1df73d8b3 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/BubblesTest.java @@ -17,6 +17,7 @@ package com.android.systemui.wmshell; import static android.app.Notification.FLAG_BUBBLE; +import static android.app.PendingIntent.FLAG_MUTABLE; import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL; import static android.service.notification.NotificationListenerService.REASON_CANCEL; import static android.service.notification.NotificationListenerService.REASON_CANCEL_ALL; @@ -44,11 +45,19 @@ import android.app.IActivityManager; import android.app.INotificationManager; import android.app.Notification; import android.app.PendingIntent; +import android.content.Context; +import android.content.Intent; +import android.content.pm.ApplicationInfo; import android.content.pm.LauncherApps; +import android.content.pm.PackageManager; +import android.graphics.Rect; +import android.graphics.drawable.Drawable; +import android.graphics.drawable.Icon; import android.hardware.display.AmbientDisplayConfiguration; import android.hardware.face.FaceManager; import android.os.Handler; import android.os.PowerManager; +import android.os.UserHandle; import android.service.dreams.IDreamManager; import android.service.notification.NotificationListenerService; import android.service.notification.ZenModeConfig; @@ -77,6 +86,7 @@ import com.android.systemui.statusbar.notification.NotificationEntryManager; import com.android.systemui.statusbar.notification.NotificationFilter; import com.android.systemui.statusbar.notification.collection.NotifPipeline; import com.android.systemui.statusbar.notification.collection.NotificationEntry; +import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder; import com.android.systemui.statusbar.notification.collection.legacy.NotificationGroupManagerLegacy; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; import com.android.systemui.statusbar.notification.row.NotificationTestHelper; @@ -89,15 +99,18 @@ import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.ZenModeController; +import com.android.wm.shell.R; import com.android.wm.shell.ShellTaskOrganizer; import com.android.wm.shell.WindowManagerShellWrapper; import com.android.wm.shell.bubbles.Bubble; import com.android.wm.shell.bubbles.BubbleData; import com.android.wm.shell.bubbles.BubbleDataRepository; import com.android.wm.shell.bubbles.BubbleEntry; +import com.android.wm.shell.bubbles.BubbleIconFactory; import com.android.wm.shell.bubbles.BubbleLogger; import com.android.wm.shell.bubbles.BubbleOverflow; import com.android.wm.shell.bubbles.BubbleStackView; +import com.android.wm.shell.bubbles.BubbleViewInfoTask; import com.android.wm.shell.bubbles.Bubbles; import com.android.wm.shell.common.FloatingContentCoordinator; import com.android.wm.shell.common.ShellExecutor; @@ -172,14 +185,17 @@ public class BubblesTest extends SysuiTestCase { private NotificationRemoveInterceptor mRemoveInterceptor; private NotificationTestHelper mNotificationTestHelper; - private ExpandableNotificationRow mRow; - private ExpandableNotificationRow mRow2; - private ExpandableNotificationRow mRow3; + private NotificationEntry mRow; + private NotificationEntry mRow2; + private NotificationEntry mRow3; private ExpandableNotificationRow mNonBubbleNotifRow; private BubbleEntry mBubbleEntry; private BubbleEntry mBubbleEntry2; private BubbleEntry mBubbleEntry3; + private BubbleEntry mBubbleEntryUser11; + private BubbleEntry mBubbleEntry2User11; + @Mock private Bubbles.BubbleExpandListener mBubbleExpandListener; @Mock @@ -245,14 +261,20 @@ public class BubblesTest extends SysuiTestCase { mRow2 = mNotificationTestHelper.createBubble(mDeleteIntent); mRow3 = mNotificationTestHelper.createBubble(mDeleteIntent); mNonBubbleNotifRow = mNotificationTestHelper.createRow(); - mBubbleEntry = BubblesManager.notifToBubbleEntry(mRow.getEntry()); - mBubbleEntry2 = BubblesManager.notifToBubbleEntry(mRow2.getEntry()); - mBubbleEntry3 = BubblesManager.notifToBubbleEntry(mRow3.getEntry()); + mBubbleEntry = BubblesManager.notifToBubbleEntry(mRow); + mBubbleEntry2 = BubblesManager.notifToBubbleEntry(mRow2); + mBubbleEntry3 = BubblesManager.notifToBubbleEntry(mRow3); + + UserHandle handle = mock(UserHandle.class); + when(handle.getIdentifier()).thenReturn(11); + mBubbleEntryUser11 = BubblesManager.notifToBubbleEntry( + mNotificationTestHelper.createBubble(handle)); + mBubbleEntry2User11 = BubblesManager.notifToBubbleEntry( + mNotificationTestHelper.createBubble(handle)); // Return non-null notification data from the NEM when(mNotificationEntryManager - .getActiveNotificationUnfiltered(mRow.getEntry().getKey())).thenReturn( - mRow.getEntry()); + .getActiveNotificationUnfiltered(mRow.getKey())).thenReturn(mRow); mZenModeConfig.suppressedVisualEffects = 0; when(mZenModeController.getConfig()).thenReturn(mZenModeConfig); @@ -351,8 +373,8 @@ public class BubblesTest extends SysuiTestCase { verify(mNotificationEntryManager).updateNotifications(any()); mBubbleController.removeBubble( - mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE); - assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey())); + mRow.getKey(), Bubbles.DISMISS_USER_GESTURE); + assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey())); verify(mNotificationEntryManager, times(2)).updateNotifications(anyString()); assertFalse(mSysUiStateBubblesExpanded); @@ -362,20 +384,20 @@ public class BubblesTest extends SysuiTestCase { public void testPromoteBubble_autoExpand() throws Exception { mBubbleController.updateBubble(mBubbleEntry2); mBubbleController.updateBubble(mBubbleEntry); - when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getEntry().getKey())) - .thenReturn(mRow.getEntry()); - when(mNotificationEntryManager.getPendingOrActiveNotif(mRow2.getEntry().getKey())) - .thenReturn(mRow2.getEntry()); + when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getKey())) + .thenReturn(mRow); + when(mNotificationEntryManager.getPendingOrActiveNotif(mRow2.getKey())) + .thenReturn(mRow2); mBubbleController.removeBubble( - mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE); + mRow.getKey(), Bubbles.DISMISS_USER_GESTURE); - Bubble b = mBubbleData.getOverflowBubbleWithKey(mRow.getEntry().getKey()); + Bubble b = mBubbleData.getOverflowBubbleWithKey(mRow.getKey()); assertThat(mBubbleData.getOverflowBubbles()).isEqualTo(ImmutableList.of(b)); verify(mNotificationEntryManager, never()).performRemoveNotification( - eq(mRow.getEntry().getSbn()), any(), anyInt()); - assertThat(mRow.getEntry().isBubble()).isFalse(); + eq(mRow.getSbn()), any(), anyInt()); + assertThat(mRow.isBubble()).isFalse(); - Bubble b2 = mBubbleData.getBubbleInStackWithKey(mRow2.getEntry().getKey()); + Bubble b2 = mBubbleData.getBubbleInStackWithKey(mRow2.getKey()); assertThat(mBubbleData.getSelectedBubble()).isEqualTo(b2); mBubbleController.promoteBubbleFromOverflow(b); @@ -393,19 +415,19 @@ public class BubblesTest extends SysuiTestCase { mBubbleController.updateBubble(mBubbleEntry2); mBubbleController.updateBubble(mBubbleEntry, /* suppressFlyout */ false, /* showInShade */ true); - when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getEntry().getKey())) - .thenReturn(mRow.getEntry()); - when(mNotificationEntryManager.getPendingOrActiveNotif(mRow2.getEntry().getKey())) - .thenReturn(mRow2.getEntry()); + when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getKey())) + .thenReturn(mRow); + when(mNotificationEntryManager.getPendingOrActiveNotif(mRow2.getKey())) + .thenReturn(mRow2); mBubbleController.removeBubble( - mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE); + mRow.getKey(), Bubbles.DISMISS_USER_GESTURE); mBubbleController.removeBubble( - mRow.getEntry().getKey(), Bubbles.DISMISS_NOTIF_CANCEL); + mRow.getKey(), Bubbles.DISMISS_NOTIF_CANCEL); verify(mNotificationEntryManager, times(1)).performRemoveNotification( - eq(mRow.getEntry().getSbn()), any(), anyInt()); + eq(mRow.getSbn()), any(), anyInt()); assertThat(mBubbleData.getOverflowBubbles()).isEmpty(); - assertFalse(mRow.getEntry().isBubble()); + assertFalse(mRow.isBubble()); } @Test @@ -414,28 +436,28 @@ public class BubblesTest extends SysuiTestCase { assertTrue(mBubbleController.hasBubbles()); mBubbleController.removeBubble( - mRow.getEntry().getKey(), Bubbles.DISMISS_USER_CHANGED); + mRow.getKey(), Bubbles.DISMISS_USER_CHANGED); verify(mNotificationEntryManager, never()).performRemoveNotification( - eq(mRow.getEntry().getSbn()), any(), anyInt()); + eq(mRow.getSbn()), any(), anyInt()); assertFalse(mBubbleController.hasBubbles()); assertFalse(mSysUiStateBubblesExpanded); - assertTrue(mRow.getEntry().isBubble()); + assertTrue(mRow.isBubble()); } @Test public void testDismissStack() { mBubbleController.updateBubble(mBubbleEntry); verify(mNotificationEntryManager, times(1)).updateNotifications(any()); - assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey())); + assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey())); mBubbleController.updateBubble(mBubbleEntry2); verify(mNotificationEntryManager, times(2)).updateNotifications(any()); - assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow2.getEntry().getKey())); + assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow2.getKey())); assertTrue(mBubbleController.hasBubbles()); mBubbleData.dismissAll(Bubbles.DISMISS_USER_GESTURE); verify(mNotificationEntryManager, times(3)).updateNotifications(any()); - assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey())); - assertNull(mBubbleData.getBubbleInStackWithKey(mRow2.getEntry().getKey())); + assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey())); + assertNull(mBubbleData.getBubbleInStackWithKey(mRow2.getKey())); assertFalse(mSysUiStateBubblesExpanded); } @@ -445,7 +467,7 @@ public class BubblesTest extends SysuiTestCase { assertFalse(mBubbleController.isStackExpanded()); // Mark it as a bubble and add it explicitly - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // We should have bubbles & their notifs should not be suppressed @@ -457,7 +479,7 @@ public class BubblesTest extends SysuiTestCase { BubbleStackView stackView = mBubbleController.getStackView(); mBubbleData.setExpanded(true); assertTrue(mBubbleController.isStackExpanded()); - verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey()); assertTrue(mSysUiStateBubblesExpanded); @@ -467,7 +489,7 @@ public class BubblesTest extends SysuiTestCase { // Collapse mBubbleController.collapseStack(); - verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getKey()); assertFalse(mBubbleController.isStackExpanded()); assertFalse(mSysUiStateBubblesExpanded); @@ -477,8 +499,8 @@ public class BubblesTest extends SysuiTestCase { @Ignore("Currently broken.") public void testCollapseAfterChangingExpandedBubble() { // Mark it as a bubble and add it explicitly - mEntryListener.onPendingEntryAdded(mRow.getEntry()); - mEntryListener.onPendingEntryAdded(mRow2.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); + mEntryListener.onPendingEntryAdded(mRow2); mBubbleController.updateBubble(mBubbleEntry); mBubbleController.updateBubble(mBubbleEntry2); @@ -494,30 +516,30 @@ public class BubblesTest extends SysuiTestCase { mBubbleData.setExpanded(true); assertTrue(mBubbleController.isStackExpanded()); verify(mBubbleExpandListener, atLeastOnce()).onBubbleExpandChanged( - true, mRow2.getEntry().getKey()); + true, mRow2.getKey()); assertTrue(mSysUiStateBubblesExpanded); // Last added is the one that is expanded - assertEquals(mRow2.getEntry().getKey(), mBubbleData.getSelectedBubble().getKey()); + assertEquals(mRow2.getKey(), mBubbleData.getSelectedBubble().getKey()); assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry2.getKey(), mBubbleEntry2.getGroupKey())); // Switch which bubble is expanded mBubbleData.setSelectedBubble(mBubbleData.getBubbleInStackWithKey( - mRow.getEntry().getKey())); + mRow.getKey())); mBubbleData.setExpanded(true); - assertEquals(mRow.getEntry().getKey(), mBubbleData.getBubbleInStackWithKey( + assertEquals(mRow.getKey(), mBubbleData.getBubbleInStackWithKey( stackView.getExpandedBubble().getKey()).getKey()); assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // collapse for previous bubble verify(mBubbleExpandListener, atLeastOnce()).onBubbleExpandChanged( - false, mRow2.getEntry().getKey()); + false, mRow2.getKey()); // expand for selected bubble verify(mBubbleExpandListener, atLeastOnce()).onBubbleExpandChanged( - true, mRow.getEntry().getKey()); + true, mRow.getKey()); // Collapse mBubbleController.collapseStack(); @@ -529,7 +551,7 @@ public class BubblesTest extends SysuiTestCase { @Test public void testExpansionRemovesShowInShadeAndDot() { // Mark it as a bubble and add it explicitly - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // We should have bubbles & their notifs should not be suppressed @@ -538,12 +560,12 @@ public class BubblesTest extends SysuiTestCase { mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); mTestableLooper.processAllMessages(); - assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); // Expand mBubbleData.setExpanded(true); assertTrue(mBubbleController.isStackExpanded()); - verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey()); assertTrue(mSysUiStateBubblesExpanded); @@ -551,13 +573,13 @@ public class BubblesTest extends SysuiTestCase { assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Notif shouldn't show dot after expansion - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); } @Test public void testUpdateWhileExpanded_DoesntChangeShowInShadeAndDot() { // Mark it as a bubble and add it explicitly - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // We should have bubbles & their notifs should not be suppressed @@ -566,12 +588,12 @@ public class BubblesTest extends SysuiTestCase { mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); mTestableLooper.processAllMessages(); - assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); // Expand mBubbleData.setExpanded(true); assertTrue(mBubbleController.isStackExpanded()); - verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey()); assertTrue(mSysUiStateBubblesExpanded); @@ -579,24 +601,24 @@ public class BubblesTest extends SysuiTestCase { assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Notif shouldn't show dot after expansion - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); // Send update - mEntryListener.onPreEntryUpdated(mRow.getEntry()); + mEntryListener.onPreEntryUpdated(mRow); // Nothing should have changed // Notif is suppressed after expansion assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Notif shouldn't show dot after expansion - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); } @Test public void testRemoveLastExpanded_selectsOverflow() { // Mark it as a bubble and add it explicitly - mEntryListener.onPendingEntryAdded(mRow.getEntry()); - mEntryListener.onPendingEntryAdded(mRow2.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); + mEntryListener.onPendingEntryAdded(mRow2); mBubbleController.updateBubble(mBubbleEntry); mBubbleController.updateBubble(mBubbleEntry2); @@ -607,10 +629,10 @@ public class BubblesTest extends SysuiTestCase { assertTrue(mSysUiStateBubblesExpanded); assertTrue(mBubbleController.isStackExpanded()); - verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow2.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow2.getKey()); // Last added is the one that is expanded - assertEquals(mRow2.getEntry().getKey(), mBubbleData.getBubbleInStackWithKey( + assertEquals(mRow2.getKey(), mBubbleData.getBubbleInStackWithKey( stackView.getExpandedBubble().getKey()).getKey()); assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry2.getKey(), mBubbleEntry2.getGroupKey())); @@ -620,12 +642,12 @@ public class BubblesTest extends SysuiTestCase { mBubbleData.getBubbleInStackWithKey( stackView.getExpandedBubble().getKey()).getKey(), Bubbles.DISMISS_USER_GESTURE); - verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow2.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow2.getKey()); // Make sure first bubble is selected - assertEquals(mRow.getEntry().getKey(), mBubbleData.getBubbleInStackWithKey( + assertEquals(mRow.getKey(), mBubbleData.getBubbleInStackWithKey( stackView.getExpandedBubble().getKey()).getKey()); - verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey()); // Dismiss that one mBubbleController.removeBubble( @@ -643,7 +665,7 @@ public class BubblesTest extends SysuiTestCase { @Test public void testRemoveLastExpandedEmptyOverflow_collapses() { // Mark it as a bubble and add it explicitly - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // Expand @@ -652,7 +674,7 @@ public class BubblesTest extends SysuiTestCase { assertTrue(mSysUiStateBubblesExpanded); assertTrue(mBubbleController.isStackExpanded()); - verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey()); // Block the bubble so it won't be in the overflow mBubbleController.removeBubble( @@ -660,10 +682,10 @@ public class BubblesTest extends SysuiTestCase { stackView.getExpandedBubble().getKey()).getKey(), Bubbles.DISMISS_BLOCKED); - verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getKey()); // We should be collapsed - verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getKey()); assertFalse(mBubbleController.hasBubbles()); assertFalse(mSysUiStateBubblesExpanded); } @@ -671,16 +693,16 @@ public class BubblesTest extends SysuiTestCase { @Test public void testAutoExpand_fails_noFlag() { assertFalse(mBubbleController.isStackExpanded()); - setMetadataFlags(mRow.getEntry(), + setMetadataFlags(mRow, Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE, false /* enableFlag */); // Add the auto expand bubble - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // Expansion shouldn't change verify(mBubbleExpandListener, never()).onBubbleExpandChanged(false /* expanded */, - mRow.getEntry().getKey()); + mRow.getKey()); assertFalse(mBubbleController.isStackExpanded()); assertFalse(mSysUiStateBubblesExpanded); @@ -688,16 +710,16 @@ public class BubblesTest extends SysuiTestCase { @Test public void testAutoExpand_succeeds_withFlag() { - setMetadataFlags(mRow.getEntry(), + setMetadataFlags(mRow, Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE, true /* enableFlag */); // Add the auto expand bubble - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // Expansion should change verify(mBubbleExpandListener).onBubbleExpandChanged(true /* expanded */, - mRow.getEntry().getKey()); + mRow.getKey()); assertTrue(mBubbleController.isStackExpanded()); assertTrue(mSysUiStateBubblesExpanded); @@ -705,19 +727,19 @@ public class BubblesTest extends SysuiTestCase { @Test public void testSuppressNotif_onInitialNotif() { - setMetadataFlags(mRow.getEntry(), + setMetadataFlags(mRow, Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION, true /* enableFlag */); // Add the suppress notif bubble - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // Notif should be suppressed because we were foreground assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Dot + flyout is hidden because notif is suppressed - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showFlyout()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showFlyout()); assertFalse(mSysUiStateBubblesExpanded); } @@ -730,10 +752,10 @@ public class BubblesTest extends SysuiTestCase { assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Should show dot - assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); // Update to suppress notif - setMetadataFlags(mRow.getEntry(), + setMetadataFlags(mRow, Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION, true /* enableFlag */); mBubbleController.updateBubble(mBubbleEntry); @@ -741,22 +763,20 @@ public class BubblesTest extends SysuiTestCase { assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Dot + flyout is hidden because notif is suppressed - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showFlyout()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showFlyout()); assertFalse(mSysUiStateBubblesExpanded); } @Test public void testExpandStackAndSelectBubble_removedFirst() { - final String key = mRow.getEntry().getKey(); - - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // Simulate notification cancellation. mRemoveInterceptor.onNotificationRemoveRequested( - mRow.getEntry().getKey(), mRow.getEntry(), REASON_APP_CANCEL); + mRow.getKey(), mRow, REASON_APP_CANCEL); mBubbleController.expandStackAndSelectBubble(mBubbleEntry); @@ -765,12 +785,12 @@ public class BubblesTest extends SysuiTestCase { @Test public void testMarkNewNotificationAsShowInShade() { - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); mTestableLooper.processAllMessages(); - assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); } @Test @@ -784,7 +804,7 @@ public class BubblesTest extends SysuiTestCase { @Test public void testDeleteIntent_removeBubble_aged() throws PendingIntent.CanceledException { mBubbleController.updateBubble(mBubbleEntry); - mBubbleController.removeBubble(mRow.getEntry().getKey(), Bubbles.DISMISS_AGED); + mBubbleController.removeBubble(mRow.getKey(), Bubbles.DISMISS_AGED); verify(mDeleteIntent, never()).send(); } @@ -792,7 +812,7 @@ public class BubblesTest extends SysuiTestCase { public void testDeleteIntent_removeBubble_user() throws PendingIntent.CanceledException { mBubbleController.updateBubble(mBubbleEntry); mBubbleController.removeBubble( - mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE); + mRow.getKey(), Bubbles.DISMISS_USER_GESTURE); verify(mDeleteIntent, times(1)).send(); } @@ -810,11 +830,11 @@ public class BubblesTest extends SysuiTestCase { mBubbleController.updateBubble(mBubbleEntry); assertTrue(mBubbleController.hasBubbles()); - mRow.getEntry().getSbn().getNotification().flags &= ~FLAG_BUBBLE; + mRow.getSbn().getNotification().flags &= ~FLAG_BUBBLE; NotificationListenerService.Ranking ranking = new RankingBuilder( - mRow.getEntry().getRanking()).setCanBubble(false).build(); - mRow.getEntry().setRanking(ranking); - mEntryListener.onPreEntryUpdated(mRow.getEntry()); + mRow.getRanking()).setCanBubble(false).build(); + mRow.setRanking(ranking); + mEntryListener.onPreEntryUpdated(mRow); assertFalse(mBubbleController.hasBubbles()); verify(mDeleteIntent, never()).send(); @@ -822,13 +842,13 @@ public class BubblesTest extends SysuiTestCase { @Test public void testRemoveBubble_succeeds_appCancel() { - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); assertTrue(mBubbleController.hasBubbles()); boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested( - mRow.getEntry().getKey(), mRow.getEntry(), REASON_APP_CANCEL); + mRow.getKey(), mRow, REASON_APP_CANCEL); // Cancels always remove so no need to intercept assertFalse(intercepted); @@ -836,19 +856,19 @@ public class BubblesTest extends SysuiTestCase { @Test public void testRemoveBubble_entryListenerRemove() { - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); assertTrue(mBubbleController.hasBubbles()); // Removes the notification - mEntryListener.onEntryRemoved(mRow.getEntry(), null, false, REASON_APP_CANCEL); + mEntryListener.onEntryRemoved(mRow, null, false, REASON_APP_CANCEL); assertFalse(mBubbleController.hasBubbles()); } @Test public void removeBubble_clearAllIntercepted() { - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); assertTrue(mBubbleController.hasBubbles()); @@ -856,7 +876,7 @@ public class BubblesTest extends SysuiTestCase { mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested( - mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL_ALL); + mRow.getKey(), mRow, REASON_CANCEL_ALL); // Intercept! assertTrue(intercepted); @@ -867,7 +887,7 @@ public class BubblesTest extends SysuiTestCase { @Test public void removeBubble_userDismissNotifIntercepted() { - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); assertTrue(mBubbleController.hasBubbles()); @@ -875,7 +895,7 @@ public class BubblesTest extends SysuiTestCase { mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested( - mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL); + mRow.getKey(), mRow, REASON_CANCEL); // Intercept! assertTrue(intercepted); @@ -887,7 +907,7 @@ public class BubblesTest extends SysuiTestCase { @Test public void removeNotif_inOverflow_intercepted() { // Get bubble with notif in shade. - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); assertTrue(mBubbleController.hasBubbles()); assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade( @@ -895,11 +915,11 @@ public class BubblesTest extends SysuiTestCase { // Dismiss the bubble into overflow. mBubbleController.removeBubble( - mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE); + mRow.getKey(), Bubbles.DISMISS_USER_GESTURE); assertFalse(mBubbleController.hasBubbles()); boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested( - mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL); + mRow.getKey(), mRow, REASON_CANCEL); // Notif is no longer a bubble, but still in overflow, so we intercept removal. assertTrue(intercepted); @@ -908,7 +928,7 @@ public class BubblesTest extends SysuiTestCase { @Test public void removeNotif_notInOverflow_notIntercepted() { // Get bubble with notif in shade. - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); assertTrue(mBubbleController.hasBubbles()); @@ -916,11 +936,11 @@ public class BubblesTest extends SysuiTestCase { mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); mBubbleController.removeBubble( - mRow.getEntry().getKey(), Bubbles.DISMISS_NO_LONGER_BUBBLE); + mRow.getKey(), Bubbles.DISMISS_NO_LONGER_BUBBLE); assertFalse(mBubbleController.hasBubbles()); boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested( - mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL); + mRow.getKey(), mRow, REASON_CANCEL); // Notif is no longer a bubble, so we should not intercept removal. assertFalse(intercepted); @@ -934,25 +954,25 @@ public class BubblesTest extends SysuiTestCase { mBubbleEntry2, /* suppressFlyout */ false, /* showInShade */ false); mBubbleController.updateBubble( mBubbleEntry3, /* suppressFlyout */ false, /* showInShade */ false); - when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getEntry().getKey())) - .thenReturn(mRow.getEntry()); - when(mNotificationEntryManager.getPendingOrActiveNotif(mRow2.getEntry().getKey())) - .thenReturn(mRow2.getEntry()); - when(mNotificationEntryManager.getPendingOrActiveNotif(mRow3.getEntry().getKey())) - .thenReturn(mRow3.getEntry()); + when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getKey())) + .thenReturn(mRow); + when(mNotificationEntryManager.getPendingOrActiveNotif(mRow2.getKey())) + .thenReturn(mRow2); + when(mNotificationEntryManager.getPendingOrActiveNotif(mRow3.getKey())) + .thenReturn(mRow3); assertEquals(mBubbleData.getBubbles().size(), 3); mBubbleData.setMaxOverflowBubbles(1); mBubbleController.removeBubble( - mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE); + mRow.getKey(), Bubbles.DISMISS_USER_GESTURE); assertEquals(mBubbleData.getBubbles().size(), 2); assertEquals(mBubbleData.getOverflowBubbles().size(), 1); mBubbleController.removeBubble( - mRow2.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE); + mRow2.getKey(), Bubbles.DISMISS_USER_GESTURE); // Overflow max of 1 is reached; mRow is oldest, so it gets removed verify(mNotificationEntryManager, times(1)).performRemoveNotification( - eq(mRow.getEntry().getSbn()), any(), eq(REASON_CANCEL)); + eq(mRow.getSbn()), any(), eq(REASON_CANCEL)); assertEquals(mBubbleData.getBubbles().size(), 1); assertEquals(mBubbleData.getOverflowBubbles().size(), 1); } @@ -963,14 +983,14 @@ public class BubblesTest extends SysuiTestCase { mock(Bubbles.SuppressionChangedListener.class); mBubbleData.setSuppressionChangedListener(listener); - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); assertTrue(mBubbleController.hasBubbles()); assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); mRemoveInterceptor.onNotificationRemoveRequested( - mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL); + mRow.getKey(), mRow, REASON_CANCEL); // Should update show in shade state assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( @@ -978,7 +998,7 @@ public class BubblesTest extends SysuiTestCase { // Should notify delegate that shade state changed verify(listener).onBubbleNotificationSuppressionChange( - mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey())); + mBubbleData.getBubbleInStackWithKey(mRow.getKey())); } @Test @@ -987,7 +1007,7 @@ public class BubblesTest extends SysuiTestCase { mock(Bubbles.SuppressionChangedListener.class); mBubbleData.setSuppressionChangedListener(listener); - mEntryListener.onPendingEntryAdded(mRow.getEntry()); + mEntryListener.onPendingEntryAdded(mRow); assertTrue(mBubbleController.hasBubbles()); assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade( @@ -1001,7 +1021,7 @@ public class BubblesTest extends SysuiTestCase { // Should notify delegate that shade state changed verify(listener).onBubbleNotificationSuppressionChange( - mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey())); + mBubbleData.getBubbleInStackWithKey(mRow.getKey())); } @Test @@ -1094,14 +1114,116 @@ public class BubblesTest extends SysuiTestCase { assertTrue(mBubbleController.hasBubbles()); // Overflow it - mBubbleData.dismissBubbleWithKey(mRow.getEntry().getKey(), + mBubbleData.dismissBubbleWithKey(mRow.getKey(), Bubbles.DISMISS_USER_GESTURE); - assertThat(mBubbleData.hasBubbleInStackWithKey(mRow.getEntry().getKey())).isFalse(); - assertThat(mBubbleData.hasOverflowBubbleWithKey(mRow.getEntry().getKey())).isTrue(); + assertThat(mBubbleData.hasBubbleInStackWithKey(mRow.getKey())).isFalse(); + assertThat(mBubbleData.hasOverflowBubbleWithKey(mRow.getKey())).isTrue(); // Test mBubbleController.updateBubble(mBubbleEntry); - assertThat(mBubbleData.hasBubbleInStackWithKey(mRow.getEntry().getKey())).isFalse(); + assertThat(mBubbleData.hasBubbleInStackWithKey(mRow.getKey())).isFalse(); + } + + /** + * Verifies that when the user changes, the bubbles in the overflow list is cleared. Doesn't + * test the loading from the repository which would be a nice thing to add. + */ + @Test + public void testOnUserChanged_overflowState() { + int firstUserId = mBubbleEntry.getStatusBarNotification().getUser().getIdentifier(); + int secondUserId = mBubbleEntryUser11.getStatusBarNotification().getUser().getIdentifier(); + + mBubbleController.updateBubble(mBubbleEntry); + mBubbleController.updateBubble(mBubbleEntry2); + assertTrue(mBubbleController.hasBubbles()); + mBubbleData.dismissAll(Bubbles.DISMISS_USER_GESTURE); + + // Verify these are in the overflow + assertThat(mBubbleData.getOverflowBubbleWithKey(mBubbleEntry.getKey())).isNotNull(); + assertThat(mBubbleData.getOverflowBubbleWithKey(mBubbleEntry2.getKey())).isNotNull(); + + // Switch users + mBubbleController.onUserChanged(secondUserId); + assertThat(mBubbleData.getOverflowBubbles()).isEmpty(); + + // Give this user some bubbles + mBubbleController.updateBubble(mBubbleEntryUser11); + mBubbleController.updateBubble(mBubbleEntry2User11); + assertTrue(mBubbleController.hasBubbles()); + mBubbleData.dismissAll(Bubbles.DISMISS_USER_GESTURE); + + // Verify these are in the overflow + assertThat(mBubbleData.getOverflowBubbleWithKey(mBubbleEntryUser11.getKey())).isNotNull(); + assertThat(mBubbleData.getOverflowBubbleWithKey(mBubbleEntry2User11.getKey())).isNotNull(); + } + + + /** + * Verifies that the package manager for the user is used when loading info for the bubble. + */ + @Test + public void test_bubbleViewInfoGetPackageForUser() throws Exception { + final int workProfileUserId = 10; + final UserHandle workUser = new UserHandle(workProfileUserId); + final String workPkg = "work.pkg"; + + final Bubble bubble = createBubble(workProfileUserId, workPkg); + assertEquals(workProfileUserId, bubble.getUser().getIdentifier()); + + final Context context = setUpContextWithPackageManager(workPkg, null /* AppInfo */); + when(context.getResources()).thenReturn(mContext.getResources()); + final Context userContext = setUpContextWithPackageManager(workPkg, + mock(ApplicationInfo.class)); + + // If things are working correctly, StatusBar.getPackageManagerForUser will call this + when(context.createPackageContextAsUser(eq(workPkg), anyInt(), eq(workUser))) + .thenReturn(userContext); + + BubbleViewInfoTask.BubbleViewInfo info = BubbleViewInfoTask.BubbleViewInfo.populate(context, + mBubbleController, + mBubbleController.getStackView(), + new BubbleIconFactory(mContext), + bubble, + true /* skipInflation */); + verify(userContext, times(1)).getPackageManager(); + verify(context, times(1)).createPackageContextAsUser(eq(workPkg), + eq(Context.CONTEXT_RESTRICTED), + eq(workUser)); + assertNotNull(info); + } + + /** Creates a bubble using the userId and package. */ + private Bubble createBubble(int userId, String pkg) { + final UserHandle userHandle = new UserHandle(userId); + NotificationEntry workEntry = new NotificationEntryBuilder() + .setPkg(pkg) + .setUser(userHandle) + .build(); + workEntry.setBubbleMetadata(getMetadata()); + workEntry.setFlagBubble(true); + + return new Bubble(BubblesManager.notifToBubbleEntry(workEntry), + null, + mock(Bubbles.PendingIntentCanceledListener.class), new SyncExecutor()); + } + + /** Creates a context that will return a PackageManager with specific AppInfo. */ + private Context setUpContextWithPackageManager(String pkg, ApplicationInfo info) + throws Exception { + final PackageManager pm = mock(PackageManager.class); + when(pm.getApplicationInfo(eq(pkg), anyInt())).thenReturn(info); + + if (info != null) { + Drawable d = mock(Drawable.class); + when(d.getBounds()).thenReturn(new Rect()); + when(pm.getApplicationIcon(anyString())).thenReturn(d); + when(pm.getUserBadgedIcon(any(), any())).thenReturn(d); + } + + final Context context = mock(Context.class); + when(context.getPackageName()).thenReturn(pkg); + when(context.getPackageManager()).thenReturn(pm); + return context; } /** @@ -1120,4 +1242,13 @@ public class BubblesTest extends SysuiTestCase { } bubbleMetadata.setFlags(flags); } + + private Notification.BubbleMetadata getMetadata() { + Intent target = new Intent(mContext, BubblesTestActivity.class); + PendingIntent bubbleIntent = PendingIntent.getActivity(mContext, 0, target, FLAG_MUTABLE); + + return new Notification.BubbleMetadata.Builder(bubbleIntent, + Icon.createWithResource(mContext, R.drawable.bubble_ic_create_bubble)) + .build(); + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/wmshell/NewNotifPipelineBubblesTest.java b/packages/SystemUI/tests/src/com/android/systemui/wmshell/NewNotifPipelineBubblesTest.java index 1ba7f8aa5e24..89825d240ec1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/wmshell/NewNotifPipelineBubblesTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/wmshell/NewNotifPipelineBubblesTest.java @@ -158,8 +158,8 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { private NotificationShadeWindowControllerImpl mNotificationShadeWindowController; private NotifCollectionListener mEntryListener; private NotificationTestHelper mNotificationTestHelper; - private ExpandableNotificationRow mRow; - private ExpandableNotificationRow mRow2; + private NotificationEntry mRow; + private NotificationEntry mRow2; private ExpandableNotificationRow mNonBubbleNotifRow; private BubbleEntry mBubbleEntry; private BubbleEntry mBubbleEntry2; @@ -224,8 +224,8 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { mRow = mNotificationTestHelper.createBubble(mDeleteIntent); mRow2 = mNotificationTestHelper.createBubble(mDeleteIntent); mNonBubbleNotifRow = mNotificationTestHelper.createRow(); - mBubbleEntry = BubblesManager.notifToBubbleEntry(mRow.getEntry()); - mBubbleEntry2 = BubblesManager.notifToBubbleEntry(mRow2.getEntry()); + mBubbleEntry = BubblesManager.notifToBubbleEntry(mRow); + mBubbleEntry2 = BubblesManager.notifToBubbleEntry(mRow2); mZenModeConfig.suppressedVisualEffects = 0; when(mZenModeController.getConfig()).thenReturn(mZenModeConfig); @@ -306,19 +306,19 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { @Test public void testRemoveBubble() { mBubbleController.updateBubble(mBubbleEntry); - assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey())); + assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey())); assertTrue(mBubbleController.hasBubbles()); verify(mNotifCallback, times(1)).invalidateNotifications(anyString()); mBubbleController.removeBubble( - mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE); - assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey())); + mRow.getKey(), Bubbles.DISMISS_USER_GESTURE); + assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey())); verify(mNotifCallback, times(2)).invalidateNotifications(anyString()); } @Test public void testRemoveBubble_withDismissedNotif_inOverflow() { - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); assertTrue(mBubbleController.hasBubbles()); @@ -326,40 +326,40 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Make it look like dismissed notif - mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).setSuppressNotification(true); + mBubbleData.getBubbleInStackWithKey(mRow.getKey()).setSuppressNotification(true); // Now remove the bubble mBubbleController.removeBubble( - mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE); - assertTrue(mBubbleData.hasOverflowBubbleWithKey(mRow.getEntry().getKey())); + mRow.getKey(), Bubbles.DISMISS_USER_GESTURE); + assertTrue(mBubbleData.hasOverflowBubbleWithKey(mRow.getKey())); // We don't remove the notification since the bubble is still in overflow. - verify(mNotifCallback, never()).removeNotification(eq(mRow.getEntry()), any(), anyInt()); + verify(mNotifCallback, never()).removeNotification(eq(mRow), any(), anyInt()); assertFalse(mBubbleController.hasBubbles()); } @Test public void testRemoveBubble_withDismissedNotif_notInOverflow() { - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); - when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getEntry().getKey())) - .thenReturn(mRow.getEntry()); + when(mNotificationEntryManager.getPendingOrActiveNotif(mRow.getKey())) + .thenReturn(mRow); assertTrue(mBubbleController.hasBubbles()); assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Make it look like dismissed notif - mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).setSuppressNotification(true); + mBubbleData.getBubbleInStackWithKey(mRow.getKey()).setSuppressNotification(true); // Now remove the bubble mBubbleController.removeBubble( - mRow.getEntry().getKey(), Bubbles.DISMISS_NOTIF_CANCEL); - assertFalse(mBubbleData.hasOverflowBubbleWithKey(mRow.getEntry().getKey())); + mRow.getKey(), Bubbles.DISMISS_NOTIF_CANCEL); + assertFalse(mBubbleData.hasOverflowBubbleWithKey(mRow.getKey())); // Since the notif is dismissed and not in overflow, once the bubble is removed, // removeNotification gets called to really remove the notif - verify(mNotifCallback, times(1)).removeNotification(eq(mRow.getEntry()), + verify(mNotifCallback, times(1)).removeNotification(eq(mRow), any(), anyInt()); assertFalse(mBubbleController.hasBubbles()); } @@ -368,16 +368,16 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { public void testDismissStack() { mBubbleController.updateBubble(mBubbleEntry); verify(mNotifCallback, times(1)).invalidateNotifications(anyString()); - assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey())); + assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey())); mBubbleController.updateBubble(mBubbleEntry2); verify(mNotifCallback, times(2)).invalidateNotifications(anyString()); - assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow2.getEntry().getKey())); + assertNotNull(mBubbleData.getBubbleInStackWithKey(mRow2.getKey())); assertTrue(mBubbleController.hasBubbles()); mBubbleData.dismissAll(Bubbles.DISMISS_USER_GESTURE); verify(mNotifCallback, times(3)).invalidateNotifications(anyString()); - assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey())); - assertNull(mBubbleData.getBubbleInStackWithKey(mRow2.getEntry().getKey())); + assertNull(mBubbleData.getBubbleInStackWithKey(mRow.getKey())); + assertNull(mBubbleData.getBubbleInStackWithKey(mRow2.getKey())); } @Test @@ -385,7 +385,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { assertFalse(mBubbleController.isStackExpanded()); // Mark it as a bubble and add it explicitly - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // We should have bubbles & their notifs should not be suppressed @@ -397,7 +397,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { BubbleStackView stackView = mBubbleController.getStackView(); mBubbleData.setExpanded(true); assertTrue(mBubbleController.isStackExpanded()); - verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey()); // Make sure the notif is suppressed assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( @@ -405,7 +405,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { // Collapse mBubbleController.collapseStack(); - verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getKey()); assertFalse(mBubbleController.isStackExpanded()); } @@ -413,8 +413,8 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { @Ignore("Currently broken.") public void testCollapseAfterChangingExpandedBubble() { // Mark it as a bubble and add it explicitly - mEntryListener.onEntryAdded(mRow.getEntry()); - mEntryListener.onEntryAdded(mRow2.getEntry()); + mEntryListener.onEntryAdded(mRow); + mEntryListener.onEntryAdded(mRow2); mBubbleController.updateBubble(mBubbleEntry); mBubbleController.updateBubble(mBubbleEntry2); @@ -430,28 +430,28 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { mBubbleData.setExpanded(true); assertTrue(mBubbleController.isStackExpanded()); verify(mBubbleExpandListener, atLeastOnce()).onBubbleExpandChanged( - true, mRow2.getEntry().getKey()); + true, mRow2.getKey()); // Last added is the one that is expanded - assertEquals(mRow2.getEntry().getKey(), mBubbleData.getSelectedBubble().getKey()); + assertEquals(mRow2.getKey(), mBubbleData.getSelectedBubble().getKey()); assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry2.getKey(), mBubbleEntry2.getGroupKey())); // Switch which bubble is expanded mBubbleData.setSelectedBubble(mBubbleData.getBubbleInStackWithKey( - mRow.getEntry().getKey())); + mRow.getKey())); mBubbleData.setExpanded(true); - assertEquals(mRow.getEntry().getKey(), mBubbleData.getBubbleInStackWithKey( + assertEquals(mRow.getKey(), mBubbleData.getBubbleInStackWithKey( stackView.getExpandedBubble().getKey()).getKey()); assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // collapse for previous bubble verify(mBubbleExpandListener, atLeastOnce()).onBubbleExpandChanged( - false, mRow2.getEntry().getKey()); + false, mRow2.getKey()); // expand for selected bubble verify(mBubbleExpandListener, atLeastOnce()).onBubbleExpandChanged( - true, mRow.getEntry().getKey()); + true, mRow.getKey()); // Collapse @@ -462,7 +462,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { @Test public void testExpansionRemovesShowInShadeAndDot() { // Mark it as a bubble and add it explicitly - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // We should have bubbles & their notifs should not be suppressed @@ -471,24 +471,24 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); mTestableLooper.processAllMessages(); - assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); // Expand mBubbleData.setExpanded(true); assertTrue(mBubbleController.isStackExpanded()); - verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey()); // Notif is suppressed after expansion assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Notif shouldn't show dot after expansion - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); } @Test public void testUpdateWhileExpanded_DoesntChangeShowInShadeAndDot() { // Mark it as a bubble and add it explicitly - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // We should have bubbles & their notifs should not be suppressed @@ -497,35 +497,35 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); mTestableLooper.processAllMessages(); - assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); // Expand mBubbleData.setExpanded(true); assertTrue(mBubbleController.isStackExpanded()); - verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey()); // Notif is suppressed after expansion assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Notif shouldn't show dot after expansion - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); // Send update - mEntryListener.onEntryUpdated(mRow.getEntry()); + mEntryListener.onEntryUpdated(mRow); // Nothing should have changed // Notif is suppressed after expansion assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Notif shouldn't show dot after expansion - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); } @Test public void testRemoveLastExpanded_selectsOverflow() { // Mark it as a bubble and add it explicitly - mEntryListener.onEntryAdded(mRow.getEntry()); - mEntryListener.onEntryAdded(mRow2.getEntry()); + mEntryListener.onEntryAdded(mRow); + mEntryListener.onEntryAdded(mRow2); mBubbleController.updateBubble(mBubbleEntry); mBubbleController.updateBubble(mBubbleEntry2); @@ -534,10 +534,10 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { mBubbleData.setExpanded(true); assertTrue(mBubbleController.isStackExpanded()); - verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow2.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow2.getKey()); // Last added is the one that is expanded - assertEquals(mRow2.getEntry().getKey(), mBubbleData.getBubbleInStackWithKey( + assertEquals(mRow2.getKey(), mBubbleData.getBubbleInStackWithKey( stackView.getExpandedBubble().getKey()).getKey()); assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry2.getKey(), mBubbleEntry2.getGroupKey())); @@ -547,12 +547,12 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { mBubbleData.getBubbleInStackWithKey( stackView.getExpandedBubble().getKey()).getKey(), Bubbles.DISMISS_USER_GESTURE); - verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow2.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow2.getKey()); // Make sure first bubble is selected - assertEquals(mRow.getEntry().getKey(), mBubbleData.getBubbleInStackWithKey( + assertEquals(mRow.getKey(), mBubbleData.getBubbleInStackWithKey( stackView.getExpandedBubble().getKey()).getKey()); - verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey()); // Dismiss that one mBubbleController.removeBubble( @@ -569,7 +569,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { @Test public void testRemoveLastExpandedEmptyOverflow_collapses() { // Mark it as a bubble and add it explicitly - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // Expand @@ -577,7 +577,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { mBubbleData.setExpanded(true); assertTrue(mBubbleController.isStackExpanded()); - verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getKey()); // Block the bubble so it won't be in the overflow mBubbleController.removeBubble( @@ -585,10 +585,10 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { stackView.getExpandedBubble().getKey()).getKey(), Bubbles.DISMISS_BLOCKED); - verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getKey()); // We should be collapsed - verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey()); + verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getKey()); assertFalse(mBubbleController.hasBubbles()); } @@ -596,49 +596,49 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { @Test public void testAutoExpand_fails_noFlag() { assertFalse(mBubbleController.isStackExpanded()); - setMetadataFlags(mRow.getEntry(), + setMetadataFlags(mRow, Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE, false /* enableFlag */); // Add the auto expand bubble - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // Expansion shouldn't change verify(mBubbleExpandListener, never()).onBubbleExpandChanged(false /* expanded */, - mRow.getEntry().getKey()); + mRow.getKey()); assertFalse(mBubbleController.isStackExpanded()); } @Test public void testAutoExpand_succeeds_withFlag() { - setMetadataFlags(mRow.getEntry(), + setMetadataFlags(mRow, Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE, true /* enableFlag */); // Add the auto expand bubble - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // Expansion should change verify(mBubbleExpandListener).onBubbleExpandChanged(true /* expanded */, - mRow.getEntry().getKey()); + mRow.getKey()); assertTrue(mBubbleController.isStackExpanded()); } @Test public void testSuppressNotif_onInitialNotif() { - setMetadataFlags(mRow.getEntry(), + setMetadataFlags(mRow, Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION, true /* enableFlag */); // Add the suppress notif bubble - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); // Notif should be suppressed because we were foreground assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Dot + flyout is hidden because notif is suppressed - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showFlyout()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showFlyout()); } @Test @@ -649,10 +649,10 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Should show dot - assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); // Update to suppress notif - setMetadataFlags(mRow.getEntry(), + setMetadataFlags(mRow, Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION, true /* enableFlag */); mBubbleController.updateBubble(mBubbleEntry); @@ -660,18 +660,18 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Dot + flyout is hidden because notif is suppressed - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); - assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showFlyout()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); + assertFalse(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showFlyout()); } @Test public void testMarkNewNotificationAsShowInShade() { - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); mTestableLooper.processAllMessages(); - assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey()).showDot()); + assertTrue(mBubbleData.getBubbleInStackWithKey(mRow.getKey()).showDot()); } @Test @@ -685,7 +685,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { @Test public void testDeleteIntent_removeBubble_aged() throws PendingIntent.CanceledException { mBubbleController.updateBubble(mBubbleEntry); - mBubbleController.removeBubble(mRow.getEntry().getKey(), Bubbles.DISMISS_AGED); + mBubbleController.removeBubble(mRow.getKey(), Bubbles.DISMISS_AGED); verify(mDeleteIntent, never()).send(); } @@ -693,7 +693,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { public void testDeleteIntent_removeBubble_user() throws PendingIntent.CanceledException { mBubbleController.updateBubble(mBubbleEntry); mBubbleController.removeBubble( - mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE); + mRow.getKey(), Bubbles.DISMISS_USER_GESTURE); verify(mDeleteIntent, times(1)).send(); } @@ -711,11 +711,11 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { mBubbleController.updateBubble(mBubbleEntry); assertTrue(mBubbleController.hasBubbles()); - mRow.getEntry().getSbn().getNotification().flags &= ~FLAG_BUBBLE; + mRow.getSbn().getNotification().flags &= ~FLAG_BUBBLE; NotificationListenerService.Ranking ranking = new RankingBuilder( - mRow.getEntry().getRanking()).setCanBubble(false).build(); - mRow.getEntry().setRanking(ranking); - mEntryListener.onEntryUpdated(mRow.getEntry()); + mRow.getRanking()).setCanBubble(false).build(); + mRow.setRanking(ranking); + mEntryListener.onEntryUpdated(mRow); assertFalse(mBubbleController.hasBubbles()); verify(mDeleteIntent, never()).send(); @@ -723,26 +723,26 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { @Test public void testRemoveBubble_entryListenerRemove() { - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); assertTrue(mBubbleController.hasBubbles()); // Removes the notification - mEntryListener.onEntryRemoved(mRow.getEntry(), 0); + mEntryListener.onEntryRemoved(mRow, 0); assertFalse(mBubbleController.hasBubbles()); } @Test public void removeBubble_intercepted() { - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); assertTrue(mBubbleController.hasBubbles()); assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); - boolean intercepted = mBubblesManager.handleDismissalInterception(mRow.getEntry()); + boolean intercepted = mBubblesManager.handleDismissalInterception(mRow); // Intercept! assertTrue(intercepted); @@ -753,7 +753,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { @Test public void removeBubble_dismissIntoOverflow_intercepted() { - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); assertTrue(mBubbleController.hasBubbles()); @@ -761,11 +761,11 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Dismiss the bubble - mBubbleController.removeBubble(mRow.getEntry().getKey(), Bubbles.DISMISS_USER_GESTURE); + mBubbleController.removeBubble(mRow.getKey(), Bubbles.DISMISS_USER_GESTURE); assertFalse(mBubbleController.hasBubbles()); // Dismiss the notification - boolean intercepted = mBubblesManager.handleDismissalInterception(mRow.getEntry()); + boolean intercepted = mBubblesManager.handleDismissalInterception(mRow); // Intercept dismissal since bubble is going into overflow assertTrue(intercepted); @@ -773,7 +773,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { @Test public void removeBubble_notIntercepted() { - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); mBubbleController.updateBubble(mBubbleEntry); assertTrue(mBubbleController.hasBubbles()); @@ -781,11 +781,11 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); // Dismiss the bubble - mBubbleController.removeBubble(mRow.getEntry().getKey(), Bubbles.DISMISS_NOTIF_CANCEL); + mBubbleController.removeBubble(mRow.getKey(), Bubbles.DISMISS_NOTIF_CANCEL); assertFalse(mBubbleController.hasBubbles()); // Dismiss the notification - boolean intercepted = mBubblesManager.handleDismissalInterception(mRow.getEntry()); + boolean intercepted = mBubblesManager.handleDismissalInterception(mRow); // Not a bubble anymore so we don't intercept dismissal. assertFalse(intercepted); @@ -797,13 +797,13 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { mock(Bubbles.SuppressionChangedListener.class); mBubbleData.setSuppressionChangedListener(listener); - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); assertTrue(mBubbleController.hasBubbles()); assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade( mBubbleEntry.getKey(), mBubbleEntry.getGroupKey())); - mBubblesManager.handleDismissalInterception(mRow.getEntry()); + mBubblesManager.handleDismissalInterception(mRow); // Should update show in shade state assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade( @@ -811,7 +811,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { // Should notify delegate that shade state changed verify(listener).onBubbleNotificationSuppressionChange( - mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey())); + mBubbleData.getBubbleInStackWithKey(mRow.getKey())); } @Test @@ -820,7 +820,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { mock(Bubbles.SuppressionChangedListener.class); mBubbleData.setSuppressionChangedListener(listener); - mEntryListener.onEntryAdded(mRow.getEntry()); + mEntryListener.onEntryAdded(mRow); assertTrue(mBubbleController.hasBubbles()); assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade( @@ -834,7 +834,7 @@ public class NewNotifPipelineBubblesTest extends SysuiTestCase { // Should notify delegate that shade state changed verify(listener).onBubbleNotificationSuppressionChange( - mBubbleData.getBubbleInStackWithKey(mRow.getEntry().getKey())); + mBubbleData.getBubbleInStackWithKey(mRow.getKey())); } @Test diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java index e251700498ee..d922d2b06c89 100644 --- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java +++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java @@ -1589,6 +1589,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku public ParceledListSlice<AppWidgetProviderInfo> getInstalledProvidersForProfile(int categoryFilter, int profileId, String packageName) { final int userId = UserHandle.getCallingUserId(); + final int callingUid = Binder.getCallingUid(); if (DEBUG) { Slog.i(TAG, "getInstalledProvidersForProfiles() " + userId); @@ -1601,7 +1602,7 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku synchronized (mLock) { if (mSecurityPolicy.isCallerInstantAppLocked()) { - Slog.w(TAG, "Instant uid " + Binder.getCallingUid() + Slog.w(TAG, "Instant uid " + callingUid + " cannot access widget providers"); return ParceledListSlice.emptyList(); } @@ -1614,11 +1615,12 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku for (int i = 0; i < providerCount; i++) { Provider provider = mProviders.get(i); AppWidgetProviderInfo info = provider.getInfoLocked(mContext); + final String providerPackageName = provider.id.componentName.getPackageName(); // Ignore an invalid provider, one not matching the filter, // or one that isn't in the given package, if any. boolean inPackage = packageName == null - || provider.id.componentName.getPackageName().equals(packageName); + || providerPackageName.equals(packageName); if (provider.zombie || (info.widgetCategory & categoryFilter) == 0 || !inPackage) { continue; } @@ -1627,7 +1629,9 @@ class AppWidgetServiceImpl extends IAppWidgetService.Stub implements WidgetBacku final int providerProfileId = info.getProfile().getIdentifier(); if (providerProfileId == profileId && mSecurityPolicy.isProviderInCallerOrInProfileAndWhitelListed( - provider.id.componentName.getPackageName(), providerProfileId)) { + providerPackageName, providerProfileId) + && !mPackageManagerInternal.filterAppAccess(providerPackageName, callingUid, + userId)) { result.add(cloneIfLocalBinder(info)); } } diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java index 27be331163b7..a80efc461176 100644 --- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java +++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java @@ -431,7 +431,7 @@ final class AutofillManagerServiceImpl final Session.SaveResult saveResult = session.showSaveLocked(); - session.logContextCommitted(saveResult.getNoSaveReason()); + session.logContextCommitted(saveResult.getNoSaveUiReason()); if (saveResult.isLogSaveShown()) { session.logSaveUiShown(); @@ -876,7 +876,7 @@ final class AutofillManagerServiceImpl changedFieldIds, changedDatasetIds, manuallyFilledFieldIds, manuallyFilledDatasetIds, /* detectedFieldIdsList= */ null, /* detectedFieldClassificationsList= */ null, appComponentName, compatMode, - Event.NO_SAVE_REASON_NONE); + Event.NO_SAVE_UI_REASON_NONE); } @GuardedBy("mLock") diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java index 6bf496777ea3..57e5bb2d521f 100644 --- a/services/autofill/java/com/android/server/autofill/Session.java +++ b/services/autofill/java/com/android/server/autofill/Session.java @@ -1774,7 +1774,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState */ public void logContextCommitted() { mHandler.sendMessage(obtainMessage(Session::handleLogContextCommitted, this, - Event.NO_SAVE_REASON_NONE)); + Event.NO_SAVE_UI_REASON_NONE)); } /** @@ -2163,7 +2163,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState Slog.w(TAG, "Call to Session#showSaveLocked() rejected - session: " + id + " destroyed"); return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ false, - Event.NO_SAVE_REASON_NONE); + Event.NO_SAVE_UI_REASON_NONE); } mSessionState = STATE_FINISHED; final FillResponse response = getLastResponseLocked("showSaveLocked(%s)"); @@ -2182,14 +2182,14 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState if (saveInfo == null) { if (sVerbose) Slog.v(TAG, "showSaveLocked(" + this.id + "): no saveInfo from service"); return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ true, - Event.NO_SAVE_REASON_NO_SAVE_INFO); + Event.NO_SAVE_UI_REASON_NO_SAVE_INFO); } if ((saveInfo.getFlags() & SaveInfo.FLAG_DELAY_SAVE) != 0) { // TODO(b/113281366): log metrics if (sDebug) Slog.v(TAG, "showSaveLocked(" + this.id + "): service asked to delay save"); return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ false, - Event.NO_SAVE_REASON_WITH_DELAY_SAVE_FLAG); + Event.NO_SAVE_UI_REASON_WITH_DELAY_SAVE_FLAG); } final ArrayMap<AutofillId, InternalSanitizer> sanitizers = createSanitizers(saveInfo); @@ -2283,7 +2283,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } int saveDialogNotShowReason; if (!allRequiredAreNotEmpty) { - saveDialogNotShowReason = Event.NO_SAVE_REASON_HAS_EMPTY_REQUIRED; + saveDialogNotShowReason = Event.NO_SAVE_UI_REASON_HAS_EMPTY_REQUIRED; } else { // Must look up all optional ids in 2 scenarios: // - if no required id changed but an optional id did, it should trigger save / update @@ -2336,7 +2336,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } } if (!atLeastOneChanged) { - saveDialogNotShowReason = Event.NO_SAVE_REASON_NO_VALUE_CHANGED; + saveDialogNotShowReason = Event.NO_SAVE_UI_REASON_NO_VALUE_CHANGED; } else { if (sDebug) { Slog.d(TAG, "at least one field changed, validate fields for save UI"); @@ -2356,14 +2356,14 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState log.setType(MetricsEvent.TYPE_FAILURE); mMetricsLogger.write(log); return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ true, - Event.NO_SAVE_REASON_FIELD_VALIDATION_FAILED); + Event.NO_SAVE_UI_REASON_FIELD_VALIDATION_FAILED); } mMetricsLogger.write(log); if (!isValid) { Slog.i(TAG, "not showing save UI because fields failed validation"); return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ true, - Event.NO_SAVE_REASON_FIELD_VALIDATION_FAILED); + Event.NO_SAVE_UI_REASON_FIELD_VALIDATION_FAILED); } } @@ -2403,7 +2403,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState + "dataset #" + i + ": " + dataset); } return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ true, - Event.NO_SAVE_REASON_DATASET_MATCH); + Event.NO_SAVE_UI_REASON_DATASET_MATCH); } } @@ -2424,7 +2424,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState if (serviceLabel == null || serviceIcon == null) { wtf(null, "showSaveLocked(): no service label or icon"); return new SaveResult(/* logSaveShown= */ false, /* removeSession= */ true, - Event.NO_SAVE_REASON_NONE); + Event.NO_SAVE_UI_REASON_NONE); } getUiForShowing().showSaveUi(serviceLabel, serviceIcon, @@ -2439,7 +2439,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState } mSessionFlags.mShowingSaveUi = true; return new SaveResult(/* logSaveShown= */ true, /* removeSession= */ false, - Event.NO_SAVE_REASON_NONE); + Event.NO_SAVE_UI_REASON_NONE); } } // Nothing changed... @@ -3882,7 +3882,7 @@ final class Session implements RemoteFillService.FillServiceCallbacks, ViewState * @return The reason why a save dialog was not shown. */ @NoSaveReason - public int getNoSaveReason() { + public int getNoSaveUiReason() { return mSaveDialogNotShowReason; } diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java index 5dd9b0e8cbc6..b4fcb9cd3bb7 100644 --- a/services/core/java/android/content/pm/PackageManagerInternal.java +++ b/services/core/java/android/content/pm/PackageManagerInternal.java @@ -1120,11 +1120,6 @@ public abstract class PackageManagerInternal { int filterCallingUid, int userId); /** - * Notifies that a package has crashed or ANR'd. - */ - public abstract void notifyPackageCrashOrAnr(String packageName); - - /** * Requesting the checksums for APKs within a package. * See {@link PackageManager#requestChecksums} for details. * diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java index feed2205dc41..c3a5d1f871bb 100644 --- a/services/core/java/com/android/server/BluetoothManagerService.java +++ b/services/core/java/com/android/server/BluetoothManagerService.java @@ -714,9 +714,6 @@ class BluetoothManagerService extends IBluetoothManager.Stub { Slog.w(TAG, "Callback is null in unregisterAdapter"); return; } - if (!checkConnectPermissionForPreflight(mContext)) { - return; - } synchronized (mCallbacks) { mCallbacks.unregister(callback); } diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 322a181a3f74..ecac1f2121b5 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -321,7 +321,8 @@ public class ConnectivityService extends IConnectivityManager.Stub private static final int MAX_NETWORK_REQUESTS_PER_UID = 100; // The maximum number of network request allowed for system UIDs before an exception is thrown. - private static final int MAX_NETWORK_REQUESTS_PER_SYSTEM_UID = 250; + @VisibleForTesting + static final int MAX_NETWORK_REQUESTS_PER_SYSTEM_UID = 250; @VisibleForTesting protected int mLingerDelayMs; // Can't be final, or test subclass constructors can't change it. @@ -338,7 +339,8 @@ public class ConnectivityService extends IConnectivityManager.Stub protected final PermissionMonitor mPermissionMonitor; private final PerUidCounter mNetworkRequestCounter; - private final PerUidCounter mSystemNetworkRequestCounter; + @VisibleForTesting + final PerUidCounter mSystemNetworkRequestCounter; private volatile boolean mLockdownEnabled; @@ -1060,8 +1062,9 @@ public class ConnectivityService extends IConnectivityManager.Stub private final int mMaxCountPerUid; // Map from UID to number of NetworkRequests that UID has filed. + @VisibleForTesting @GuardedBy("mUidToNetworkRequestCount") - private final SparseIntArray mUidToNetworkRequestCount = new SparseIntArray(); + final SparseIntArray mUidToNetworkRequestCount = new SparseIntArray(); /** * Constructor @@ -1085,15 +1088,20 @@ public class ConnectivityService extends IConnectivityManager.Stub */ public void incrementCountOrThrow(final int uid) { synchronized (mUidToNetworkRequestCount) { - final int networkRequests = mUidToNetworkRequestCount.get(uid, 0) + 1; - if (networkRequests >= mMaxCountPerUid) { - throw new ServiceSpecificException( - ConnectivityManager.Errors.TOO_MANY_REQUESTS); - } - mUidToNetworkRequestCount.put(uid, networkRequests); + incrementCountOrThrow(uid, 1 /* numToIncrement */); } } + private void incrementCountOrThrow(final int uid, final int numToIncrement) { + final int newRequestCount = + mUidToNetworkRequestCount.get(uid, 0) + numToIncrement; + if (newRequestCount >= mMaxCountPerUid) { + throw new ServiceSpecificException( + ConnectivityManager.Errors.TOO_MANY_REQUESTS); + } + mUidToNetworkRequestCount.put(uid, newRequestCount); + } + /** * Decrements the request count of the given uid. * @@ -1101,16 +1109,50 @@ public class ConnectivityService extends IConnectivityManager.Stub */ public void decrementCount(final int uid) { synchronized (mUidToNetworkRequestCount) { - final int requests = mUidToNetworkRequestCount.get(uid, 0); - if (requests < 1) { - logwtf("BUG: too small request count " + requests + " for UID " + uid); - } else if (requests == 1) { - mUidToNetworkRequestCount.delete(uid); - } else { - mUidToNetworkRequestCount.put(uid, requests - 1); - } + decrementCount(uid, 1 /* numToDecrement */); } } + + private void decrementCount(final int uid, final int numToDecrement) { + final int newRequestCount = + mUidToNetworkRequestCount.get(uid, 0) - numToDecrement; + if (newRequestCount < 0) { + logwtf("BUG: too small request count " + newRequestCount + " for UID " + uid); + } else if (newRequestCount == 0) { + mUidToNetworkRequestCount.delete(uid); + } else { + mUidToNetworkRequestCount.put(uid, newRequestCount); + } + } + + /** + * Used to adjust the request counter for the per-app API flows. Directly adjusting the + * counter is not ideal however in the per-app flows, the nris can't be removed until they + * are used to create the new nris upon set. Therefore the request count limit can be + * artificially hit. This method is used as a workaround for this particular case so that + * the request counts are accounted for correctly. + * @param uid the uid to adjust counts for + * @param numOfNewRequests the new request count to account for + * @param r the runnable to execute + */ + public void transact(final int uid, final int numOfNewRequests, @NonNull final Runnable r) { + // This should only be used on the handler thread as per all current and foreseen + // use-cases. ensureRunningOnConnectivityServiceThread() can't be used because there is + // no ref to the outer ConnectivityService. + synchronized (mUidToNetworkRequestCount) { + final int reqCountOverage = getCallingUidRequestCountOverage(uid, numOfNewRequests); + decrementCount(uid, reqCountOverage); + r.run(); + incrementCountOrThrow(uid, reqCountOverage); + } + } + + private int getCallingUidRequestCountOverage(final int uid, final int numOfNewRequests) { + final int newUidRequestCount = mUidToNetworkRequestCount.get(uid, 0) + + numOfNewRequests; + return newUidRequestCount >= MAX_NETWORK_REQUESTS_PER_SYSTEM_UID + ? newUidRequestCount - (MAX_NETWORK_REQUESTS_PER_SYSTEM_UID - 1) : 0; + } } /** @@ -2149,14 +2191,14 @@ public class ConnectivityService extends IConnectivityManager.Stub PermissionUtils.enforceNetworkStackPermission(mContext); final ArrayList<NetworkState> result = new ArrayList<>(); - for (NetworkStateSnapshot snapshot : getAllNetworkStateSnapshot()) { + for (NetworkStateSnapshot snapshot : getAllNetworkStateSnapshots()) { // NetworkStateSnapshot doesn't contain NetworkInfo, so need to fetch it from the // NetworkAgentInfo. - final NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(snapshot.network); + final NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(snapshot.getNetwork()); if (nai != null && nai.networkInfo.isConnected()) { result.add(new NetworkState(new NetworkInfo(nai.networkInfo), - snapshot.linkProperties, snapshot.networkCapabilities, snapshot.network, - snapshot.subscriberId)); + snapshot.getLinkProperties(), snapshot.getNetworkCapabilities(), + snapshot.getNetwork(), snapshot.getSubscriberId())); } } return result.toArray(new NetworkState[result.size()]); @@ -2164,7 +2206,7 @@ public class ConnectivityService extends IConnectivityManager.Stub @Override @NonNull - public List<NetworkStateSnapshot> getAllNetworkStateSnapshot() { + public List<NetworkStateSnapshot> getAllNetworkStateSnapshots() { // This contains IMSI details, so make sure the caller is privileged. PermissionUtils.enforceNetworkStackPermission(mContext); @@ -9680,9 +9722,13 @@ public class ConnectivityService extends IConnectivityManager.Stub validateNetworkCapabilitiesOfProfileNetworkPreference(preference.capabilities); mProfileNetworkPreferences = mProfileNetworkPreferences.plus(preference); - final ArraySet<NetworkRequestInfo> nris = - createNrisFromProfileNetworkPreferences(mProfileNetworkPreferences); - replaceDefaultNetworkRequestsForPreference(nris); + mSystemNetworkRequestCounter.transact( + mDeps.getCallingUid(), mProfileNetworkPreferences.preferences.size(), + () -> { + final ArraySet<NetworkRequestInfo> nris = + createNrisFromProfileNetworkPreferences(mProfileNetworkPreferences); + replaceDefaultNetworkRequestsForPreference(nris); + }); // Finally, rematch. rematchAllNetworksAndRequests(); @@ -9768,9 +9814,16 @@ public class ConnectivityService extends IConnectivityManager.Stub } mOemNetworkPreferencesLogs.log("UPDATE INITIATED: " + preference); - final ArraySet<NetworkRequestInfo> nris = - new OemNetworkRequestFactory().createNrisFromOemNetworkPreferences(preference); - replaceDefaultNetworkRequestsForPreference(nris); + final int uniquePreferenceCount = new ArraySet<>( + preference.getNetworkPreferences().values()).size(); + mSystemNetworkRequestCounter.transact( + mDeps.getCallingUid(), uniquePreferenceCount, + () -> { + final ArraySet<NetworkRequestInfo> nris = + new OemNetworkRequestFactory() + .createNrisFromOemNetworkPreferences(preference); + replaceDefaultNetworkRequestsForPreference(nris); + }); mOemNetworkPreferences = preference; if (null != listener) { @@ -9795,10 +9848,14 @@ public class ConnectivityService extends IConnectivityManager.Stub final ArraySet<NetworkRequestInfo> perAppCallbackRequestsToUpdate = getPerAppCallbackRequestsToUpdate(); final ArraySet<NetworkRequestInfo> nrisToRegister = new ArraySet<>(nris); - nrisToRegister.addAll( - createPerAppCallbackRequestsToRegister(perAppCallbackRequestsToUpdate)); - handleRemoveNetworkRequests(perAppCallbackRequestsToUpdate); - handleRegisterNetworkRequests(nrisToRegister); + mSystemNetworkRequestCounter.transact( + mDeps.getCallingUid(), perAppCallbackRequestsToUpdate.size(), + () -> { + nrisToRegister.addAll( + createPerAppCallbackRequestsToRegister(perAppCallbackRequestsToUpdate)); + handleRemoveNetworkRequests(perAppCallbackRequestsToUpdate); + handleRegisterNetworkRequests(nrisToRegister); + }); } /** diff --git a/services/core/java/com/android/server/SensorNotificationService.java b/services/core/java/com/android/server/SensorNotificationService.java index db3db0c80e3c..94bc963b70ab 100644 --- a/services/core/java/com/android/server/SensorNotificationService.java +++ b/services/core/java/com/android/server/SensorNotificationService.java @@ -115,7 +115,7 @@ public class SensorNotificationService extends SystemService "Location is (%f, %f), h %f, acc %f, mocked %b", location.getLatitude(), location.getLongitude(), location.getAltitude(), location.getAccuracy(), - location.isFromMockProvider())); + location.isMock())); // lat long == 0 usually means invalid location if (location.getLatitude() == 0 && location.getLongitude() == 0) { @@ -130,7 +130,7 @@ public class SensorNotificationService extends SystemService long time = System.currentTimeMillis(); // Mocked location should not be used. Except in test, only use mocked location // Wrong system clock also gives bad values so ignore as well. - if (useMockedLocation() == location.isFromMockProvider() || time < MILLIS_2010_1_1) { + if (useMockedLocation() == location.isMock() || time < MILLIS_2010_1_1) { return; } diff --git a/services/core/java/com/android/server/SensorPrivacyService.java b/services/core/java/com/android/server/SensorPrivacyService.java index 3ba4c34fb1a7..e8bc812e5ea8 100644 --- a/services/core/java/com/android/server/SensorPrivacyService.java +++ b/services/core/java/com/android/server/SensorPrivacyService.java @@ -197,16 +197,16 @@ public final class SensorPrivacyService extends SystemService { if (readPersistedSensorPrivacyStateLocked()) { persistSensorPrivacyStateLocked(); } - } - for (int i = 0; i < mIndividualEnabled.size(); i++) { - int userId = mIndividualEnabled.keyAt(i); - SparseBooleanArray userIndividualEnabled = - mIndividualEnabled.get(i); - for (int j = 0; j < userIndividualEnabled.size(); j++) { - int sensor = userIndividualEnabled.keyAt(i); - boolean enabled = userIndividualEnabled.valueAt(j); - setUserRestriction(userId, sensor, enabled); + for (int i = 0; i < mIndividualEnabled.size(); i++) { + int userId = mIndividualEnabled.keyAt(i); + SparseBooleanArray userIndividualEnabled = + mIndividualEnabled.valueAt(i); + for (int j = 0; j < userIndividualEnabled.size(); j++) { + int sensor = userIndividualEnabled.keyAt(i); + boolean enabled = userIndividualEnabled.valueAt(j); + setUserRestriction(userId, sensor, enabled); + } } } diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java index 2d486c47d3c8..ee3530a9eac8 100644 --- a/services/core/java/com/android/server/TelephonyRegistry.java +++ b/services/core/java/com/android/server/TelephonyRegistry.java @@ -2861,7 +2861,14 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId); intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, phoneId); intent.putExtra(SubscriptionManager.EXTRA_SLOT_INDEX, phoneId); + // Send the broadcast twice -- once for all apps with READ_PHONE_STATE, then again + // for all apps with READ_PRIV but not READ_PHONE_STATE. This ensures that any app holding + // either READ_PRIV or READ_PHONE get this broadcast exactly once. mContext.sendBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.READ_PHONE_STATE); + mContext.createContextAsUser(UserHandle.ALL, 0) + .sendBroadcastMultiplePermissions(intent, + new String[] { Manifest.permission.READ_PRIVILEGED_PHONE_STATE }, + new String[] { Manifest.permission.READ_PHONE_STATE }); } private void broadcastSignalStrengthChanged(SignalStrength signalStrength, int phoneId, @@ -2988,7 +2995,14 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { getApnTypesStringFromBitmask(pdcs.getApnSetting().getApnTypeBitmask())); intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, slotIndex); intent.putExtra(PHONE_CONSTANTS_SUBSCRIPTION_KEY, subId); + // Send the broadcast twice -- once for all apps with READ_PHONE_STATE, then again + // for all apps with READ_PRIV but not READ_PHONE_STATE. This ensures that any app holding + // either READ_PRIV or READ_PHONE get this broadcast exactly once. mContext.sendBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.READ_PHONE_STATE); + mContext.createContextAsUser(UserHandle.ALL, 0) + .sendBroadcastMultiplePermissions(intent, + new String[] { Manifest.permission.READ_PRIVILEGED_PHONE_STATE }, + new String[] { Manifest.permission.READ_PHONE_STATE }); } /** diff --git a/services/core/java/com/android/server/VcnManagementService.java b/services/core/java/com/android/server/VcnManagementService.java index 4b5205711f33..bf257be30c2b 100644 --- a/services/core/java/com/android/server/VcnManagementService.java +++ b/services/core/java/com/android/server/VcnManagementService.java @@ -953,6 +953,14 @@ public class VcnManagementService extends IVcnManagementService.Stub { pw.decreaseIndent(); pw.println(); + pw.println("mConfigs:"); + pw.increaseIndent(); + for (Entry<ParcelUuid, VcnConfig> entry : mConfigs.entrySet()) { + pw.println(entry.getKey() + ": " + entry.getValue().getProvisioningPackageName()); + } + pw.decreaseIndent(); + pw.println(); + pw.println("mVcns:"); pw.increaseIndent(); for (Vcn vcn : mVcns.values()) { diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java index 5a1a505d7aa8..10cf1846da6f 100644 --- a/services/core/java/com/android/server/am/ActiveServices.java +++ b/services/core/java/com/android/server/am/ActiveServices.java @@ -26,6 +26,7 @@ import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MANIFEST; import static android.os.PowerExemptionManager.REASON_ACTIVITY_VISIBILITY_GRACE_PERIOD; import static android.os.PowerExemptionManager.REASON_OP_ACTIVATE_PLATFORM_VPN; import static android.os.PowerExemptionManager.REASON_OP_ACTIVATE_VPN; +import static android.os.PowerExemptionManager.REASON_TEMP_ALLOWED_WHILE_IN_USE; import static android.os.PowerWhitelistManager.REASON_ACTIVITY_STARTER; import static android.os.PowerWhitelistManager.REASON_ALLOWLISTED_PACKAGE; import static android.os.PowerWhitelistManager.REASON_BACKGROUND_ACTIVITY_PERMISSION; @@ -5644,6 +5645,12 @@ public final class ActiveServices { } if (ret == REASON_DENIED) { + if (mAm.mInternal.isTempAllowlistedForFgsWhileInUse(callingUid)) { + return REASON_TEMP_ALLOWED_WHILE_IN_USE; + } + } + + if (ret == REASON_DENIED) { if (targetService != null && targetService.app != null) { ActiveInstrumentation instr = targetService.app.getActiveInstrumentation(); if (instr != null && instr.mHasBackgroundActivityStartsPermission) { @@ -5691,7 +5698,7 @@ public final class ActiveServices { private @ReasonCode int shouldAllowFgsStartForegroundLocked( @ReasonCode int allowWhileInUse, String callingPackage, int callingPid, int callingUid, Intent intent, ServiceRecord r, int userId) { - FgsStartTempAllowList.TempFgsAllowListEntry tempAllowListReason = + ActivityManagerService.FgsTempAllowListItem tempAllowListReason = r.mInfoTempFgsAllowListReason = mAm.isAllowlistedForFgsStartLOSP(callingUid); int ret = shouldAllowFgsStartForegroundLocked(allowWhileInUse, callingPid, callingUid, callingPackage, r); @@ -5790,13 +5797,13 @@ public final class ActiveServices { } if (ret == REASON_DENIED) { - FgsStartTempAllowList.TempFgsAllowListEntry entry = + ActivityManagerService.FgsTempAllowListItem item = mAm.isAllowlistedForFgsStartLOSP(callingUid); - if (entry != null) { - if (entry == ActivityManagerService.FAKE_TEMP_ALLOWLIST_ENTRY) { + if (item != null) { + if (item == ActivityManagerService.FAKE_TEMP_ALLOW_LIST_ITEM) { ret = REASON_SYSTEM_ALLOW_LISTED; } else { - ret = entry.mReasonCode; + ret = item.mReasonCode; } } } @@ -5921,4 +5928,12 @@ public final class ActiveServices { durationMs, r.mStartForegroundCount); } + + boolean canAllowWhileInUsePermissionInFgsLocked(int callingPid, int callingUid, + String callingPackage) { + return shouldAllowFgsWhileInUsePermissionLocked(callingPackage, callingPid, callingUid, + /* targetService */ null, + /* allowBackgroundActivityStarts */ false) + != REASON_DENIED; + } } diff --git a/services/core/java/com/android/server/am/ActivityManagerLocal.java b/services/core/java/com/android/server/am/ActivityManagerLocal.java index cd4180e46428..9a1bfddcec07 100644 --- a/services/core/java/com/android/server/am/ActivityManagerLocal.java +++ b/services/core/java/com/android/server/am/ActivityManagerLocal.java @@ -36,4 +36,26 @@ public interface ActivityManagerLocal { * @return whether the app will be able to start a foreground service or not. */ boolean canStartForegroundService(int pid, int uid, @NonNull String packageName); + + /** + * Returns {@code true} if a foreground service started by an uid is allowed to have + * while-in-use permissions. + * + * @param pid The process id belonging to the app to be checked. + * @param uid The UID of the app to be checked. + * @param packageName The package name of the app to be checked. + * @return whether the foreground service is allowed to have while-in-use permissions. + * @hide + */ + boolean canAllowWhileInUsePermissionInFgs(int pid, int uid, @NonNull String packageName); + + /** + * Temporarily allow foreground service started by an uid to have while-in-use permission + * for durationMs. + * + * @param uid The UID of the app that starts the foreground service. + * @param durationMs elapsedRealTime duration in milliseconds. + * @hide + */ + void tempAllowWhileInUsePermissionInFgs(int uid, long durationMs); } diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index e3b06d696423..7919a785b8fd 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -49,7 +49,7 @@ import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_HIGH; import static android.os.IServiceManager.DUMP_FLAG_PRIORITY_NORMAL; import static android.os.IServiceManager.DUMP_FLAG_PROTO; import static android.os.InputConstants.DEFAULT_DISPATCHING_TIMEOUT_MILLIS; -import static android.os.PowerWhitelistManager.REASON_SYSTEM_ALLOW_LISTED; +import static android.os.PowerExemptionManager.REASON_SYSTEM_ALLOW_LISTED; import static android.os.PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED; import static android.os.Process.BLUETOOTH_UID; import static android.os.Process.FIRST_APPLICATION_UID; @@ -258,6 +258,7 @@ import android.os.Looper; import android.os.Message; import android.os.Parcel; import android.os.ParcelFileDescriptor; +import android.os.PowerExemptionManager; import android.os.PowerExemptionManager.ReasonCode; import android.os.PowerExemptionManager.TempAllowListType; import android.os.PowerManager; @@ -1201,15 +1202,45 @@ public class ActivityManagerService extends IActivityManager.Stub @CompositeRWLock({"this", "mProcLock"}) final PendingTempAllowlists mPendingTempAllowlist = new PendingTempAllowlists(this); + public static final class FgsTempAllowListItem { + final long mDuration; + final @PowerExemptionManager.ReasonCode int mReasonCode; + final String mReason; + final int mCallingUid; + + FgsTempAllowListItem(long duration, @PowerExemptionManager.ReasonCode int reasonCode, + String reason, int callingUid) { + mDuration = duration; + mReasonCode = reasonCode; + mReason = reason; + mCallingUid = callingUid; + } + + void dump(PrintWriter pw) { + pw.print(" duration=" + mDuration + + " callingUid=" + UserHandle.formatUid(mCallingUid) + + " reasonCode=" + PowerExemptionManager.reasonCodeToString(mReasonCode) + + " reason=" + mReason); + } + } + /** * The temp-allowlist that is allowed to start FGS from background. */ @CompositeRWLock({"this", "mProcLock"}) - final FgsStartTempAllowList mFgsStartTempAllowList = new FgsStartTempAllowList(); + final FgsTempAllowList<Integer, FgsTempAllowListItem> mFgsStartTempAllowList = + new FgsTempAllowList(); + + static final FgsTempAllowListItem FAKE_TEMP_ALLOW_LIST_ITEM = new FgsTempAllowListItem( + Long.MAX_VALUE, REASON_SYSTEM_ALLOW_LISTED, "", INVALID_UID); + + /* + * List of uids that are allowed to have while-in-use permission when FGS is started from + * background. + */ + private final FgsTempAllowList<Integer, String> mFgsWhileInUseTempAllowList = + new FgsTempAllowList(); - static final FgsStartTempAllowList.TempFgsAllowListEntry FAKE_TEMP_ALLOWLIST_ENTRY = new - FgsStartTempAllowList.TempFgsAllowListEntry(Long.MAX_VALUE, Long.MAX_VALUE, - REASON_SYSTEM_ALLOW_LISTED, "", INVALID_UID); /** * Information about and control over application operations */ @@ -5563,11 +5594,12 @@ public class ActivityManagerService extends IActivityManager.Stub */ @Nullable @GuardedBy(anyOf = {"this", "mProcLock"}) - FgsStartTempAllowList.TempFgsAllowListEntry isAllowlistedForFgsStartLOSP(int uid) { + FgsTempAllowListItem isAllowlistedForFgsStartLOSP(int uid) { if (Arrays.binarySearch(mDeviceIdleExceptIdleAllowlist, UserHandle.getAppId(uid)) >= 0) { - return FAKE_TEMP_ALLOWLIST_ENTRY; + return FAKE_TEMP_ALLOW_LIST_ITEM; } - return mFgsStartTempAllowList.getAllowedDurationAndReason(uid); + final Pair<Long, FgsTempAllowListItem> entry = mFgsStartTempAllowList.get(uid); + return entry == null ? null : entry.second; } /** @@ -6487,7 +6519,7 @@ public class ActivityManagerService extends IActivityManager.Stub final long identity = Binder.clearCallingIdentity(); try { // Send broadcast to shell to trigger bugreport using Bugreport API - mContext.sendBroadcast(triggerShellBugreport); + mContext.sendBroadcastAsUser(triggerShellBugreport, UserHandle.SYSTEM); } finally { Binder.restoreCallingIdentity(identity); } @@ -7678,7 +7710,6 @@ public class ActivityManagerService extends IActivityManager.Stub // Notify package manager service to possibly update package state if (r != null && r.info != null && r.info.packageName != null) { final String codePath = r.info.getCodePath(); - mPackageManagerInt.notifyPackageCrashOrAnr(r.info.packageName); IncrementalStatesInfo incrementalStatesInfo = mPackageManagerInt.getIncrementalStatesInfo(r.info.packageName, r.uid, r.userId); @@ -9263,7 +9294,24 @@ public class ActivityManagerService extends IActivityManager.Stub } } pw.println(" mFgsStartTempAllowList:"); - mFgsStartTempAllowList.dump(pw); + final long currentTimeNow = System.currentTimeMillis(); + final long elapsedRealtimeNow = SystemClock.elapsedRealtime(); + final Set<Integer> uids = mFgsStartTempAllowList.keySet(); + for (Integer uid : uids) { + final Pair<Long, FgsTempAllowListItem> entry = mFgsStartTempAllowList.get(uid); + if (entry == null) { + continue; + } + pw.print(" " + UserHandle.formatUid(uid) + ": "); + entry.second.dump(pw); pw.println(); + pw.print("ms expiration="); + // Convert entry.mExpirationTime, which is an elapsed time since boot, + // to a time since epoch (i.e. System.currentTimeMillis()-based time.) + final long expirationInCurrentTime = + currentTimeNow - elapsedRealtimeNow + entry.first; + TimeUtils.dumpTimeWithDelta(pw, expirationInCurrentTime, currentTimeNow); + pw.println(); + } } if (mDebugApp != null || mOrigDebugApp != null || mDebugTransient || mOrigWaitForDebugger) { @@ -12977,11 +13025,6 @@ public class ActivityManagerService extends IActivityManager.Stub case Intent.ACTION_PRE_BOOT_COMPLETED: timeoutExempt = true; break; - case Intent.ACTION_PACKAGE_UNSTARTABLE: - final String packageName = intent.getStringExtra(Intent.EXTRA_PACKAGE_NAME); - forceStopPackageLocked(packageName, -1, false, true, true, - false, false, userId, "package unstartable"); - break; case Intent.ACTION_CLOSE_SYSTEM_DIALOGS: if (!mAtmInternal.checkCanCloseSystemDialogs(callingPid, callingUid, callerPackage)) { @@ -14541,7 +14584,8 @@ public class ActivityManagerService extends IActivityManager.Stub mUiHandler.obtainMessage(PUSH_TEMP_ALLOWLIST_UI_MSG).sendToTarget(); if (type == TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED) { - mFgsStartTempAllowList.add(targetUid, duration, reasonCode, reason, callingUid); + mFgsStartTempAllowList.add(targetUid, duration, + new FgsTempAllowListItem(duration, reasonCode, reason, callingUid)); } } } @@ -15214,8 +15258,9 @@ public class ActivityManagerService extends IActivityManager.Stub mDeviceIdleTempAllowlist = appids; if (adding) { if (type == TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED) { - mFgsStartTempAllowList.add(changingUid, durationMs, reasonCode, reason, - callingUid); + mFgsStartTempAllowList.add(changingUid, durationMs, + new FgsTempAllowListItem(durationMs, reasonCode, reason, + callingUid)); } } setAppIdTempAllowlistStateLSP(changingUid, adding); @@ -16035,6 +16080,24 @@ public class ActivityManagerService extends IActivityManager.Stub return mServices.canStartForegroundServiceLocked(pid, uid, packageName); } } + + @Override + public void tempAllowWhileInUsePermissionInFgs(int uid, long durationMs) { + mFgsWhileInUseTempAllowList.add(uid, durationMs, ""); + } + + @Override + public boolean isTempAllowlistedForFgsWhileInUse(int uid) { + return mFgsWhileInUseTempAllowList.isAllowed(uid); + } + + @Override + public boolean canAllowWhileInUsePermissionInFgs(int pid, int uid, + @NonNull String packageName) { + synchronized (ActivityManagerService.this) { + return mServices.canAllowWhileInUsePermissionInFgsLocked(pid, uid, packageName); + } + } } long inputDispatchingTimedOut(int pid, final boolean aboveSystem, String reason) { diff --git a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java index 4942b110cf3c..859cc441daa1 100644 --- a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java +++ b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java @@ -137,8 +137,8 @@ class BatteryExternalStatsWorker implements BatteryStatsImpl.ExternalStatsSync { @GuardedBy("mWorkerLock") private PowerStatsInternal mPowerStatsInternal = null; - // WiFi keeps an accumulated total of stats, unlike Bluetooth. - // Keep the last WiFi stats so we can compute a delta. + // WiFi keeps an accumulated total of stats. Keep the last WiFi stats so we can compute a delta. + // (This is unlike Bluetooth, where BatteryStatsImpl is left responsible for taking the delta.) @GuardedBy("mWorkerLock") private WifiActivityEnergyInfo mLastWifiInfo = new WifiActivityEnergyInfo(0, 0, 0, 0, 0, 0); diff --git a/services/core/java/com/android/server/am/FgsStartTempAllowList.java b/services/core/java/com/android/server/am/FgsStartTempAllowList.java deleted file mode 100644 index a844c2aa4f05..000000000000 --- a/services/core/java/com/android/server/am/FgsStartTempAllowList.java +++ /dev/null @@ -1,144 +0,0 @@ -/* - * 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 com.android.server.am; - -import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; - -import android.annotation.Nullable; -import android.os.PowerWhitelistManager; -import android.os.PowerWhitelistManager.ReasonCode; -import android.os.SystemClock; -import android.os.UserHandle; -import android.util.Slog; -import android.util.SparseArray; -import android.util.TimeUtils; - -import java.io.PrintWriter; - -/** - * List of uids that are temporarily allowed to start FGS from background. - */ -final class FgsStartTempAllowList { - private static final int MAX_SIZE = 100; - - public static final class TempFgsAllowListEntry { - final long mExpirationTime; - final long mDuration; - final @ReasonCode int mReasonCode; - final String mReason; - final int mCallingUid; - - TempFgsAllowListEntry(long expirationTime, long duration, @ReasonCode int reasonCode, - String reason, int callingUid) { - mExpirationTime = expirationTime; - mDuration = duration; - mReasonCode = reasonCode; - mReason = reason; - mCallingUid = callingUid; - } - } - - /** - * The key is the uid, the value is a TempAllowListEntry. - */ - private final SparseArray<TempFgsAllowListEntry> mTempAllowListFgs = new SparseArray<>(); - - FgsStartTempAllowList() { - } - - /** - * Add a uid and its duration with reason into the FGS temp-allowlist. - * @param uid - * @param duration temp-allowlisted duration in milliseconds. - * @param reason A human-readable reason for logging purposes. - * @param callingUid the callingUid that setup this temp allowlist, only valid when param adding - * is true. - */ - void add(int uid, long duration, @ReasonCode int reasonCode, @Nullable String reason, - int callingUid) { - if (duration <= 0) { - Slog.e(TAG_AM, "FgsStartTempAllowList bad duration:" + duration + " uid: " - + uid); - return; - } - // The temp allowlist should be a short list with only a few entries in it. - final int size = mTempAllowListFgs.size(); - if (size > MAX_SIZE) { - Slog.w(TAG_AM, "FgsStartTempAllowList length:" + size + " exceeds " + MAX_SIZE); - } - final long now = SystemClock.elapsedRealtime(); - for (int index = mTempAllowListFgs.size() - 1; index >= 0; index--) { - if (mTempAllowListFgs.valueAt(index).mExpirationTime < now) { - mTempAllowListFgs.removeAt(index); - } - } - final TempFgsAllowListEntry existing = mTempAllowListFgs.get(uid); - final long expirationTime = now + duration; - if (existing == null || existing.mExpirationTime < expirationTime) { - mTempAllowListFgs.put(uid, - new TempFgsAllowListEntry(expirationTime, duration, reasonCode, - reason == null ? "" : reason, callingUid)); - } - } - - /** - * Is this uid temp-allowlisted to start FGS. - * @param uid - * @return If uid is in the temp-allowlist, return the {@link TempFgsAllowListEntry}; If not in - * temp-allowlist, return null. - */ - @Nullable - TempFgsAllowListEntry getAllowedDurationAndReason(int uid) { - final int index = mTempAllowListFgs.indexOfKey(uid); - if (index < 0) { - return null; - } else if (mTempAllowListFgs.valueAt(index).mExpirationTime - < SystemClock.elapsedRealtime()) { - mTempAllowListFgs.removeAt(index); - return null; - } else { - return mTempAllowListFgs.valueAt(index); - } - } - - void remove(int uid) { - mTempAllowListFgs.delete(uid); - } - - void dump(PrintWriter pw) { - final long currentTimeNow = System.currentTimeMillis(); - final long elapsedRealtimeNow = SystemClock.elapsedRealtime(); - for (int i = 0; i < mTempAllowListFgs.size(); i++) { - final int uid = mTempAllowListFgs.keyAt(i); - final TempFgsAllowListEntry entry = mTempAllowListFgs.valueAt(i); - pw.println( - " " + UserHandle.formatUid(uid) + ": " + - " callingUid=" + UserHandle.formatUid(entry.mCallingUid) + - " reasonCode=" + PowerWhitelistManager.reasonCodeToString(entry.mReasonCode) + - " reason=" + entry.mReason); - pw.print(" duration=" + entry.mDuration + - "ms expiration="); - - // Convert entry.mExpirationTime, which is an elapsed time since boot, - // to a time since epoch (i.e. System.currentTimeMillis()-based time.) - final long expirationInCurrentTime = - currentTimeNow - elapsedRealtimeNow + entry.mExpirationTime; - TimeUtils.dumpTimeWithDelta(pw, expirationInCurrentTime, currentTimeNow); - pw.println(); - } - } -} diff --git a/services/core/java/com/android/server/am/FgsTempAllowList.java b/services/core/java/com/android/server/am/FgsTempAllowList.java new file mode 100644 index 000000000000..847e82f07899 --- /dev/null +++ b/services/core/java/com/android/server/am/FgsTempAllowList.java @@ -0,0 +1,148 @@ +/* + * Copyright (C) 2021 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 com.android.server.am; + +import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM; + +import android.annotation.Nullable; +import android.os.SystemClock; +import android.util.ArrayMap; +import android.util.Pair; +import android.util.Slog; + +import java.util.Set; + +/** + * List of keys that have expiration time. + * If the expiration time is less than current elapsedRealtime, the key has expired. + * Otherwise it is valid (or allowed). + * + * <p>This is used for both FGS-BG-start restriction, and FGS-while-in-use permissions check.</p> + * + * <p>Note: the underlying data structure is an {@link ArrayMap}, for performance reason, it is only + * suitable to hold up to hundreds of entries.</p> + * @param <K> type of the key. + * @param <E> type of the additional optional info. + */ +public class FgsTempAllowList<K, E> { + private static final int DEFAULT_MAX_SIZE = 100; + + /** + * The value is Pair type, Pair.first is the expirationTime(an elapsedRealtime), + * Pair.second is the optional information entry about this key. + */ + private final ArrayMap<K, Pair<Long, E>> mTempAllowList = new ArrayMap<>(); + private int mMaxSize = DEFAULT_MAX_SIZE; + private final Object mLock = new Object(); + + public FgsTempAllowList() { + } + + /** + * + * @param maxSize The max size of the list. It is only a suggestion. If the list size is + * larger than max size, a warning message is printed in logcat, new entry can + * still be added to the list. The default max size is {@link #DEFAULT_MAX_SIZE}. + */ + public FgsTempAllowList(int maxSize) { + if (maxSize <= 0) { + Slog.e(TAG_AM, "Invalid FgsTempAllowList maxSize:" + maxSize + + ", force default maxSize:" + DEFAULT_MAX_SIZE); + mMaxSize = DEFAULT_MAX_SIZE; + } else { + mMaxSize = maxSize; + } + } + + /** + * Add a key and its duration with optional info into the temp allowlist. + * @param key + * @param durationMs temp-allowlisted duration in milliseconds. + * @param entry additional optional information of this key, could be null. + */ + public void add(K key, long durationMs, @Nullable E entry) { + synchronized (mLock) { + if (durationMs <= 0) { + Slog.e(TAG_AM, "FgsTempAllowList bad duration:" + durationMs + " key: " + + key); + return; + } + // The temp allowlist should be a short list with only a few entries in it. + // for a very large list, HashMap structure should be used. + final long now = SystemClock.elapsedRealtime(); + final int size = mTempAllowList.size(); + if (size > mMaxSize) { + Slog.w(TAG_AM, "FgsTempAllowList length:" + size + " exceeds maxSize" + + mMaxSize); + for (int index = size - 1; index >= 0; index--) { + if (mTempAllowList.valueAt(index).first < now) { + mTempAllowList.removeAt(index); + } + } + } + final Pair<Long, E> existing = mTempAllowList.get(key); + final long expirationTime = now + durationMs; + if (existing == null || existing.first < expirationTime) { + mTempAllowList.put(key, new Pair(expirationTime, entry)); + } + } + } + + /** + * If the key has not expired (AKA allowed), return its non-null value. + * If the key has expired, return null. + * @param key + * @return + */ + @Nullable + public Pair<Long, E> get(K key) { + synchronized (mLock) { + final int index = mTempAllowList.indexOfKey(key); + if (index < 0) { + return null; + } else if (mTempAllowList.valueAt(index).first < SystemClock.elapsedRealtime()) { + mTempAllowList.removeAt(index); + return null; + } else { + return mTempAllowList.valueAt(index); + } + } + } + + /** + * If the key has not expired (AKA allowed), return true. + * If the key has expired, return false. + * @param key + * @return + */ + public boolean isAllowed(K key) { + Pair<Long, E> entry = get(key); + return entry != null; + } + + public void remove(K key) { + synchronized (mLock) { + mTempAllowList.remove(key); + } + } + + public Set<K> keySet() { + synchronized (mLock) { + return mTempAllowList.keySet(); + } + } +} diff --git a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java index 00184f9d396a..6ff3bf652e3c 100644 --- a/services/core/java/com/android/server/am/ProcessErrorStateRecord.java +++ b/services/core/java/com/android/server/am/ProcessErrorStateRecord.java @@ -472,11 +472,6 @@ class ProcessErrorStateRecord { mDialogController.setAnrController(anrController); } - // Notify package manager service to possibly update package state - if (aInfo != null && aInfo.packageName != null) { - packageManagerInternal.notifyPackageCrashOrAnr(aInfo.packageName); - } - // mUiHandler can be null if the AMS is constructed with injector only. This will only // happen in tests. if (mService.mUiHandler != null) { diff --git a/services/core/java/com/android/server/am/ProcessStateRecord.java b/services/core/java/com/android/server/am/ProcessStateRecord.java index d97d343a1960..94e7f34a194a 100644 --- a/services/core/java/com/android/server/am/ProcessStateRecord.java +++ b/services/core/java/com/android/server/am/ProcessStateRecord.java @@ -1253,13 +1253,13 @@ final class ProcessStateRecord { if (mAllowStartFgs == REASON_DENIED) { // uid is on DeviceIdleController's user/system allowlist // or AMS's FgsStartTempAllowList. - FgsStartTempAllowList.TempFgsAllowListEntry entry = + ActivityManagerService.FgsTempAllowListItem item = mService.isAllowlistedForFgsStartLOSP(mApp.info.uid); - if (entry != null) { - if (entry == ActivityManagerService.FAKE_TEMP_ALLOWLIST_ENTRY) { + if (item != null) { + if (item == ActivityManagerService.FAKE_TEMP_ALLOW_LIST_ITEM) { mAllowStartFgs = REASON_SYSTEM_ALLOW_LISTED; } else { - mAllowStartFgs = entry.mReasonCode; + mAllowStartFgs = item.mReasonCode; } } } diff --git a/services/core/java/com/android/server/am/ServiceRecord.java b/services/core/java/com/android/server/am/ServiceRecord.java index 21a02ed8c9da..fd59e852ddd7 100644 --- a/services/core/java/com/android/server/am/ServiceRecord.java +++ b/services/core/java/com/android/server/am/ServiceRecord.java @@ -179,7 +179,7 @@ final class ServiceRecord extends Binder implements ComponentName.WithComponentN // Debug info why mAllowStartForeground is allowed or denied. String mInfoAllowStartForeground; // Debug info if mAllowStartForeground is allowed because of a temp-allowlist. - FgsStartTempAllowList.TempFgsAllowListEntry mInfoTempFgsAllowListReason; + ActivityManagerService.FgsTempAllowListItem mInfoTempFgsAllowListReason; // Is the same mInfoAllowStartForeground string has been logged before? Used for dedup. boolean mLoggedInfoAllowStartForeground; // The number of times Service.startForeground() is called; diff --git a/services/core/java/com/android/server/apphibernation/AppHibernationService.java b/services/core/java/com/android/server/apphibernation/AppHibernationService.java index fd829fae5759..aa51800fb134 100644 --- a/services/core/java/com/android/server/apphibernation/AppHibernationService.java +++ b/services/core/java/com/android/server/apphibernation/AppHibernationService.java @@ -109,7 +109,7 @@ public final class AppHibernationService extends SystemService { private final boolean mOatArtifactDeletionEnabled; @VisibleForTesting - static boolean sIsServiceEnabled; + public static boolean sIsServiceEnabled; /** * Initializes the system service. diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java index 3f075724662f..2a0beb8ca37c 100644 --- a/services/core/java/com/android/server/appop/AppOpsService.java +++ b/services/core/java/com/android/server/appop/AppOpsService.java @@ -565,6 +565,9 @@ public class AppOpsService extends IAppOpsService.Stub { } else if (mActivityManagerInternal != null && mActivityManagerInternal.isPendingTopUid(uid)) { return MODE_ALLOWED; + } else if (mActivityManagerInternal != null + && mActivityManagerInternal.isTempAllowlistedForFgsWhileInUse(uid)) { + return MODE_ALLOWED; } else if (state <= UID_STATE_TOP) { // process is in TOP. return MODE_ALLOWED; diff --git a/services/core/java/com/android/server/biometrics/BiometricStrengthController.java b/services/core/java/com/android/server/biometrics/BiometricStrengthController.java index c96a182c7d20..270621cf30ca 100644 --- a/services/core/java/com/android/server/biometrics/BiometricStrengthController.java +++ b/services/core/java/com/android/server/biometrics/BiometricStrengthController.java @@ -84,6 +84,8 @@ public class BiometricStrengthController { final int id = sensor.id; if (idToStrength.containsKey(id)) { final int newStrength = idToStrength.get(id); + Slog.d(TAG, "updateStrengths: update sensorId=" + id + " to newStrength=" + + newStrength); sensor.updateStrength(newStrength); } } diff --git a/services/core/java/com/android/server/biometrics/Utils.java b/services/core/java/com/android/server/biometrics/Utils.java index f4cb38738f7e..996f0fd3a55f 100644 --- a/services/core/java/com/android/server/biometrics/Utils.java +++ b/services/core/java/com/android/server/biometrics/Utils.java @@ -411,6 +411,23 @@ public class Utils { } /** + * Returns the sensor's current strength, taking any updated strengths into effect. + * + * @param sensorId The sensor Id + * @return see {@link BiometricManager.Authenticators} + */ + public static @Authenticators.Types int getCurrentStrength(int sensorId) { + IBiometricService service = IBiometricService.Stub.asInterface( + ServiceManager.getService(Context.BIOMETRIC_SERVICE)); + try { + return service.getCurrentStrength(sensorId); + } catch (RemoteException e) { + Slog.e(TAG, "RemoteException", e); + return Authenticators.EMPTY_SET; + } + } + + /** * Checks if a client package matches Keyguard and can perform internal biometric operations. * * @param context The system context. diff --git a/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java b/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java index b795b549fd61..82b1271d6102 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/aidl/Sensor.java @@ -557,6 +557,8 @@ public class Sensor { proto.write(SensorStateProto.SENSOR_ID, mSensorProperties.sensorId); proto.write(SensorStateProto.MODALITY, SensorStateProto.FACE); + proto.write(SensorStateProto.CURRENT_STRENGTH, + Utils.getCurrentStrength(mSensorProperties.sensorId)); proto.write(SensorStateProto.SCHEDULER, mScheduler.dumpProtoState(clearSchedulerBuffer)); for (UserInfo user : UserManager.get(mContext).getUsers()) { diff --git a/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java b/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java index 2cb2939cde1d..a40155b2df7d 100644 --- a/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java +++ b/services/core/java/com/android/server/biometrics/sensors/face/hidl/Face10.java @@ -807,6 +807,8 @@ public class Face10 implements IHwBinder.DeathRecipient, ServiceProvider { proto.write(SensorStateProto.SENSOR_ID, mSensorProperties.sensorId); proto.write(SensorStateProto.MODALITY, SensorStateProto.FACE); + proto.write(SensorStateProto.CURRENT_STRENGTH, + Utils.getCurrentStrength(mSensorProperties.sensorId)); proto.write(SensorStateProto.SCHEDULER, mScheduler.dumpProtoState(clearSchedulerBuffer)); for (UserInfo user : UserManager.get(mContext).getUsers()) { diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java index 6a9b12545408..8be664e78f10 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/aidl/Sensor.java @@ -527,6 +527,8 @@ class Sensor { proto.write(SensorStateProto.SENSOR_ID, mSensorProperties.sensorId); proto.write(SensorStateProto.MODALITY, SensorStateProto.FINGERPRINT); + proto.write(SensorStateProto.CURRENT_STRENGTH, + Utils.getCurrentStrength(mSensorProperties.sensorId)); proto.write(SensorStateProto.SCHEDULER, mScheduler.dumpProtoState(clearSchedulerBuffer)); for (UserInfo user : UserManager.get(mContext).getUsers()) { diff --git a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java index eb78245b0df5..fd7ef0920f65 100644 --- a/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java +++ b/services/core/java/com/android/server/biometrics/sensors/fingerprint/hidl/Fingerprint21.java @@ -764,6 +764,8 @@ public class Fingerprint21 implements IHwBinder.DeathRecipient, ServiceProvider proto.write(SensorStateProto.SENSOR_ID, mSensorProperties.sensorId); proto.write(SensorStateProto.MODALITY, SensorStateProto.FINGERPRINT); + proto.write(SensorStateProto.CURRENT_STRENGTH, + Utils.getCurrentStrength(mSensorProperties.sensorId)); proto.write(SensorStateProto.SCHEDULER, mScheduler.dumpProtoState(clearSchedulerBuffer)); for (UserInfo user : UserManager.get(mContext).getUsers()) { diff --git a/services/core/java/com/android/server/clipboard/ClipboardService.java b/services/core/java/com/android/server/clipboard/ClipboardService.java index 47c7e3902556..e2aa07102ba3 100644 --- a/services/core/java/com/android/server/clipboard/ClipboardService.java +++ b/services/core/java/com/android/server/clipboard/ClipboardService.java @@ -952,14 +952,8 @@ public class ClipboardService extends SystemService { try { CharSequence callingAppLabel = mPm.getApplicationLabel( mPm.getApplicationInfoAsUser(callingPackage, 0, userId)); - String message; - if (isText(clipboard.primaryClip)) { - message = getContext().getString( - R.string.pasted_text, callingAppLabel); - } else { - message = getContext().getString( - R.string.pasted_content, callingAppLabel); - } + String message = + getContext().getString(R.string.pasted_from_clipboard, callingAppLabel); Slog.i(TAG, message); Toast.makeText( getContext(), UiThread.get().getLooper(), message, Toast.LENGTH_SHORT) diff --git a/services/core/java/com/android/server/location/geofence/GeofenceManager.java b/services/core/java/com/android/server/location/geofence/GeofenceManager.java index 7f47805ee121..a52c9cefb27d 100644 --- a/services/core/java/com/android/server/location/geofence/GeofenceManager.java +++ b/services/core/java/com/android/server/location/geofence/GeofenceManager.java @@ -70,7 +70,7 @@ public class GeofenceManager extends private static final long WAKELOCK_TIMEOUT_MS = 30000; private static final int MAX_SPEED_M_S = 100; // 360 km/hr (high speed train) - private static final long MAX_LOCATION_AGE_NANOS = 5 * 60 * 1000000000L; // five minutes + private static final long MAX_LOCATION_AGE_MS = 5 * 60 * 1000L; // five minutes private static final long MAX_LOCATION_INTERVAL_MS = 2 * 60 * 60 * 1000; // two hours protected final class GeofenceRegistration extends @@ -472,7 +472,7 @@ public class GeofenceManager extends } if (location != null) { - if (location.getElapsedRealtimeAgeNanos() > MAX_LOCATION_AGE_NANOS) { + if (location.getElapsedRealtimeAgeMillis() > MAX_LOCATION_AGE_MS) { location = null; } } @@ -480,25 +480,25 @@ public class GeofenceManager extends return location; } - private void onUserChanged(int userId, int change) { + void onUserChanged(int userId, int change) { if (change == UserListener.CURRENT_USER_CHANGED) { updateRegistrations(registration -> registration.getIdentity().getUserId() == userId); } } - private void onLocationEnabledChanged(int userId) { + void onLocationEnabledChanged(int userId) { updateRegistrations(registration -> registration.getIdentity().getUserId() == userId); } - private void onLocationPackageBlacklistChanged(int userId) { + void onLocationPackageBlacklistChanged(int userId) { updateRegistrations(registration -> registration.getIdentity().getUserId() == userId); } - private void onLocationPermissionsChanged(String packageName) { + void onLocationPermissionsChanged(String packageName) { updateRegistrations(registration -> registration.onLocationPermissionsChanged(packageName)); } - private void onLocationPermissionsChanged(int uid) { + void onLocationPermissionsChanged(int uid) { updateRegistrations(registration -> registration.onLocationPermissionsChanged(uid)); } } diff --git a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java index 1e5a15e134e9..1cccf08b0367 100644 --- a/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java +++ b/services/core/java/com/android/server/location/gnss/GnssLocationProvider.java @@ -603,7 +603,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements Log.d(TAG, "injectBestLocation: " + location); } - if (location.isFromMockProvider()) { + if (location.isMock()) { return; } @@ -676,7 +676,7 @@ public class GnssLocationProvider extends AbstractLocationProvider implements } private void injectLocation(Location location) { - if (!location.isFromMockProvider()) { + if (!location.isMock()) { mGnssNative.injectLocation(location); } } diff --git a/services/core/java/com/android/server/location/provider/LocationProviderManager.java b/services/core/java/com/android/server/location/provider/LocationProviderManager.java index 102263b5f3c2..0be325fb6aa7 100644 --- a/services/core/java/com/android/server/location/provider/LocationProviderManager.java +++ b/services/core/java/com/android/server/location/provider/LocationProviderManager.java @@ -25,12 +25,12 @@ import static android.location.LocationManager.KEY_LOCATION_CHANGED; import static android.location.LocationManager.KEY_PROVIDER_ENABLED; import static android.location.LocationManager.PASSIVE_PROVIDER; import static android.os.IPowerManager.LOCATION_MODE_NO_CHANGE; +import static android.os.PowerExemptionManager.REASON_LOCATION_PROVIDER; +import static android.os.PowerExemptionManager.TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_ALLOWED; import static android.os.PowerManager.LOCATION_MODE_ALL_DISABLED_WHEN_SCREEN_OFF; import static android.os.PowerManager.LOCATION_MODE_FOREGROUND_ONLY; import static android.os.PowerManager.LOCATION_MODE_GPS_DISABLED_WHEN_SCREEN_OFF; import static android.os.PowerManager.LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF; -import static android.os.PowerWhitelistManager.REASON_LOCATION_PROVIDER; -import static android.os.PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED; import static com.android.server.location.LocationManagerService.D; import static com.android.server.location.LocationManagerService.TAG; @@ -148,10 +148,10 @@ public class LocationProviderManager extends private static final long MAX_HIGH_POWER_INTERVAL_MS = 5 * 60 * 1000; // max age of a location before it is no longer considered "current" - private static final long MAX_CURRENT_LOCATION_AGE_MS = 10 * 1000; + private static final long MAX_CURRENT_LOCATION_AGE_MS = 30 * 1000; // max timeout allowed for getting the current location - private static final long GET_CURRENT_LOCATION_MAX_TIMEOUT_MS = 30 * 1000; + private static final long MAX_GET_CURRENT_LOCATION_TIMEOUT_MS = 30 * 1000; // max jitter allowed for min update interval as a percentage of the interval private static final float FASTEST_INTERVAL_JITTER_PERCENTAGE = .10f; @@ -230,7 +230,7 @@ public class LocationProviderManager extends options.setDontSendToRestrictedApps(true); // allows apps to start a fg service in response to a location PI options.setTemporaryAppAllowlist(TEMPORARY_APP_ALLOWLIST_DURATION_MS, - TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED, + TEMPORARY_ALLOW_LIST_TYPE_FOREGROUND_SERVICE_ALLOWED, REASON_LOCATION_PROVIDER, ""); @@ -851,7 +851,7 @@ public class LocationProviderManager extends mUseWakeLock = false; final int size = locationResult.size(); for (int i = 0; i < size; ++i) { - if (!locationResult.get(i).isFromMockProvider()) { + if (!locationResult.get(i).isMock()) { mUseWakeLock = true; break; } @@ -1655,9 +1655,9 @@ public class LocationProviderManager extends public @Nullable ICancellationSignal getCurrentLocation(LocationRequest request, CallerIdentity identity, int permissionLevel, ILocationCallback callback) { - if (request.getDurationMillis() > GET_CURRENT_LOCATION_MAX_TIMEOUT_MS) { + if (request.getDurationMillis() > MAX_GET_CURRENT_LOCATION_TIMEOUT_MS) { request = new LocationRequest.Builder(request) - .setDurationMillis(GET_CURRENT_LOCATION_MAX_TIMEOUT_MS) + .setDurationMillis(MAX_GET_CURRENT_LOCATION_TIMEOUT_MS) .build(); } @@ -2302,7 +2302,7 @@ public class LocationProviderManager extends LocationResult filtered; if (mPassiveManager != null) { filtered = locationResult.filter(location -> { - if (!location.isFromMockProvider()) { + if (!location.isMock()) { if (location.getLatitude() == 0 && location.getLongitude() == 0) { Log.w(TAG, "blocking 0,0 location from " + mName + " provider"); return false; @@ -2539,16 +2539,16 @@ public class LocationProviderManager extends LastLocation() {} public void clearMock() { - if (mFineLocation != null && mFineLocation.isFromMockProvider()) { + if (mFineLocation != null && mFineLocation.isMock()) { mFineLocation = null; } - if (mCoarseLocation != null && mCoarseLocation.isFromMockProvider()) { + if (mCoarseLocation != null && mCoarseLocation.isMock()) { mCoarseLocation = null; } - if (mFineBypassLocation != null && mFineBypassLocation.isFromMockProvider()) { + if (mFineBypassLocation != null && mFineBypassLocation.isMock()) { mFineBypassLocation = null; } - if (mCoarseBypassLocation != null && mCoarseBypassLocation.isFromMockProvider()) { + if (mCoarseBypassLocation != null && mCoarseBypassLocation.isMock()) { mCoarseBypassLocation = null; } } diff --git a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java index c01523a4bc40..90694d0a5f64 100644 --- a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java +++ b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java @@ -205,6 +205,7 @@ class RebootEscrowManager { Slog.i(TAG, "Using server based resume on reboot"); rebootEscrowProvider = new RebootEscrowProviderServerBasedImpl(mContext, mStorage); } else { + Slog.i(TAG, "Using HAL based resume on reboot"); rebootEscrowProvider = new RebootEscrowProviderHalImpl(); } @@ -239,7 +240,7 @@ class RebootEscrowManager { return mKeyStoreManager; } - public RebootEscrowProviderInterface getRebootEscrowProvider() { + public RebootEscrowProviderInterface createRebootEscrowProviderIfNeeded() { // Initialize for the provider lazily. Because the device_config and service // implementation apps may change when system server is running. if (mRebootEscrowProvider == null) { @@ -249,6 +250,14 @@ class RebootEscrowManager { return mRebootEscrowProvider; } + public RebootEscrowProviderInterface getRebootEscrowProvider() { + return mRebootEscrowProvider; + } + + public void clearRebootEscrowProvider() { + mRebootEscrowProvider = null; + } + public int getBootCount() { return Settings.Global.getInt(mContext.getContentResolver(), Settings.Global.BOOT_COUNT, 0); @@ -308,8 +317,6 @@ class RebootEscrowManager { mStorage.removeRebootEscrow(user.id); } - // Clear the old key in keystore. - mKeyStoreManager.clearKeyStoreEncryptionKey(); onEscrowRestoreComplete(false, attemptCount); } @@ -395,9 +402,6 @@ class RebootEscrowManager { allUsersUnlocked &= restoreRebootEscrowForUser(user.id, escrowKey, kk); } - // Clear the old key in keystore. A new key will be generated by new RoR requests. - mKeyStoreManager.clearKeyStoreEncryptionKey(); - if (!allUsersUnlocked && mLoadEscrowDataErrorCode == ERROR_NONE) { mLoadEscrowDataErrorCode = ERROR_UNLOCK_ALL_USERS; } @@ -473,11 +477,17 @@ class RebootEscrowManager { if (success || (previousBootCount != -1 && bootCountDelta <= BOOT_COUNT_TOLERANCE)) { reportMetricOnRestoreComplete(success, attemptCount); } + + // Clear the old key in keystore. A new key will be generated by new RoR requests. + mKeyStoreManager.clearKeyStoreEncryptionKey(); + // Clear the saved reboot escrow provider + mInjector.clearRebootEscrowProvider(); clearMetricsStorage(); } private RebootEscrowKey getAndClearRebootEscrowKey(SecretKey kk) throws IOException { - RebootEscrowProviderInterface rebootEscrowProvider = mInjector.getRebootEscrowProvider(); + RebootEscrowProviderInterface rebootEscrowProvider = + mInjector.createRebootEscrowProviderIfNeeded(); if (rebootEscrowProvider == null) { Slog.w(TAG, "Had reboot escrow data for users, but RebootEscrowProvider is unavailable"); @@ -529,9 +539,8 @@ class RebootEscrowManager { return; } - if (mInjector.getRebootEscrowProvider() == null) { - Slog.w(TAG, - "Had reboot escrow data for users, but RebootEscrowProvider is unavailable"); + if (mInjector.createRebootEscrowProviderIfNeeded() == null) { + Slog.w(TAG, "Not storing escrow data, RebootEscrowProvider is unavailable"); return; } @@ -586,13 +595,17 @@ class RebootEscrowManager { mRebootEscrowWanted = false; setRebootEscrowReady(false); - RebootEscrowProviderInterface rebootEscrowProvider = mInjector.getRebootEscrowProvider(); + // We want to clear the internal data inside the provider, so always try to create the + // provider. + RebootEscrowProviderInterface rebootEscrowProvider = + mInjector.createRebootEscrowProviderIfNeeded(); if (rebootEscrowProvider == null) { Slog.w(TAG, "RebootEscrowProvider is unavailable for clear request"); } else { rebootEscrowProvider.clearRebootEscrowKey(); } + mInjector.clearRebootEscrowProvider(); clearMetricsStorage(); List<UserInfo> users = mUserManager.getUsers(); @@ -610,8 +623,7 @@ class RebootEscrowManager { RebootEscrowProviderInterface rebootEscrowProvider = mInjector.getRebootEscrowProvider(); if (rebootEscrowProvider == null) { - Slog.w(TAG, - "Had reboot escrow data for users, but RebootEscrowProvider is unavailable"); + Slog.w(TAG, "Not storing escrow key, RebootEscrowProvider is unavailable"); clearRebootEscrowIfNeeded(); return ARM_REBOOT_ERROR_NO_PROVIDER; } @@ -677,11 +689,12 @@ class RebootEscrowManager { } boolean prepareRebootEscrow() { - if (mInjector.getRebootEscrowProvider() == null) { + clearRebootEscrowIfNeeded(); + if (mInjector.createRebootEscrowProviderIfNeeded() == null) { + Slog.w(TAG, "No reboot escrow provider, skipping resume on reboot preparation."); return false; } - clearRebootEscrowIfNeeded(); mRebootEscrowWanted = true; mEventLog.addEntry(RebootEscrowEvent.REQUESTED_LSKF); return true; @@ -807,6 +820,10 @@ class RebootEscrowManager { pw.print("mPendingRebootEscrowKey is "); pw.println(keySet ? "set" : "not set"); + RebootEscrowProviderInterface provider = mInjector.getRebootEscrowProvider(); + String providerType = provider == null ? "null" : String.valueOf(provider.getType()); + pw.print("RebootEscrowProvider type is " + providerType); + pw.println(); pw.println("Event log:"); pw.increaseIndent(); diff --git a/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java b/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java index bb996a07ba66..9a190316f4eb 100644 --- a/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java +++ b/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java @@ -195,6 +195,7 @@ final class MediaButtonReceiverHolder { options.setTemporaryAppAllowlist(fgsAllowlistDurationMs, PowerWhitelistManager.TEMPORARY_ALLOWLIST_TYPE_FOREGROUND_SERVICE_ALLOWED, PowerWhitelistManager.REASON_MEDIA_BUTTON, ""); + options.setBackgroundActivityStartsAllowed(true); if (mPendingIntent != null) { if (DEBUG_KEY_EVENT) { Log.d(TAG, "Sending " + keyEvent + " to the last known PendingIntent " diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java index ba1e23ce022f..1dbc8a926996 100644 --- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java +++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java @@ -25,6 +25,7 @@ import static android.media.MediaRouter2Utils.getProviderId; import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage; +import android.Manifest; import android.annotation.NonNull; import android.annotation.Nullable; import android.app.ActivityManager; @@ -142,16 +143,14 @@ class MediaRouter2ServiceImpl { //////////////////////////////////////////////////////////////// @NonNull - public void checkModifyAudioRoutingPermission() { + public void enforceMediaContentControlPermission() { final int pid = Binder.getCallingPid(); final int uid = Binder.getCallingUid(); final long token = Binder.clearCallingIdentity(); try { - if (mContext.checkPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING, pid, uid) - != PackageManager.PERMISSION_GRANTED) { - throw new SecurityException("Must hold the MODIFY_AUDIO_ROUTING permission."); - } + mContext.enforcePermission(Manifest.permission.MEDIA_CONTENT_CONTROL, pid, uid, + "Must hold MEDIA_CONTENT_CONTROL permission."); } finally { Binder.restoreCallingIdentity(token); } @@ -890,6 +889,9 @@ class MediaRouter2ServiceImpl { return; } + mContext.enforcePermission(Manifest.permission.MEDIA_CONTENT_CONTROL, pid, uid, + "Must hold MEDIA_CONTENT_CONTROL permission."); + UserRecord userRecord = getOrCreateUserRecordLocked(userId); managerRecord = new ManagerRecord(userRecord, manager, uid, pid, packageName); try { diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java index 3d19b70ca95f..384bc99cb115 100644 --- a/services/core/java/com/android/server/media/MediaRouterService.java +++ b/services/core/java/com/android/server/media/MediaRouterService.java @@ -438,8 +438,8 @@ public final class MediaRouterService extends IMediaRouterService.Stub // Binder call @Override - public void checkModifyAudioRoutingPermission() { - mService2.checkModifyAudioRoutingPermission(); + public void enforceMediaContentControlPermission() { + mService2.enforceMediaContentControlPermission(); } // Binder call diff --git a/services/core/java/com/android/server/media/MediaSessionDeviceConfig.java b/services/core/java/com/android/server/media/MediaSessionDeviceConfig.java index 9bb8e2e93746..7e747ce60785 100644 --- a/services/core/java/com/android/server/media/MediaSessionDeviceConfig.java +++ b/services/core/java/com/android/server/media/MediaSessionDeviceConfig.java @@ -46,6 +46,18 @@ class MediaSessionDeviceConfig { private static volatile long sMediaSessionCallbackFgsAllowlistDurationMs = DEFAULT_MEDIA_SESSION_CALLBACK_FGS_ALLOWLIST_DURATION_MS; + /** + * Denotes the duration for which an app receiving a media session callback and the FGS started + * there can be temporarily allowed to have while-in-use permissions such as + * location/camera/microphone for a duration of time. + */ + private static final String KEY_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS = + "media_session_callback_fgs_while_in_use_temp_allow_duration_ms"; + private static final long DEFAULT_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS + = 10_000; + private static volatile long sMediaSessionCallbackFgsWhileInUseTempAllowDurationMs = + DEFAULT_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS; + private static void refresh(DeviceConfig.Properties properties) { final Set<String> keys = properties.getKeyset(); properties.getKeyset().forEach(key -> { @@ -58,6 +70,9 @@ class MediaSessionDeviceConfig { sMediaSessionCallbackFgsAllowlistDurationMs = properties.getLong(key, DEFAULT_MEDIA_SESSION_CALLBACK_FGS_ALLOWLIST_DURATION_MS); break; + case KEY_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS: + sMediaSessionCallbackFgsWhileInUseTempAllowDurationMs = properties.getLong(key, + DEFAULT_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS); } }); } @@ -86,6 +101,15 @@ class MediaSessionDeviceConfig { return sMediaSessionCallbackFgsAllowlistDurationMs; } + /** + * Return the duration for which an app receiving a media session callback and the FGS started + * there can be temporarily allowed to have while-in-use permissions such as + * location/camera/micrphone. + */ + public static long getMediaSessionCallbackFgsWhileInUseTempAllowDurationMs() { + return sMediaSessionCallbackFgsWhileInUseTempAllowDurationMs; + } + public static void dump(PrintWriter pw, String prefix) { pw.println("Media session config:"); final String dumpFormat = prefix + " %s: [cur: %s, def: %s]"; @@ -97,5 +121,9 @@ class MediaSessionDeviceConfig { KEY_MEDIA_SESSION_CALLBACK_FGS_ALLOWLIST_DURATION_MS, sMediaSessionCallbackFgsAllowlistDurationMs, DEFAULT_MEDIA_SESSION_CALLBACK_FGS_ALLOWLIST_DURATION_MS)); + pw.println(TextUtils.formatSimple(dumpFormat, + KEY_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS, + sMediaSessionCallbackFgsWhileInUseTempAllowDurationMs, + DEFAULT_MEDIA_SESSION_CALLBACK_FGS_WHILE_IN_USE_TEMP_ALLOW_DURATION_MS)); } } diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java index b10d56b62acc..abcf4fb939e1 100644 --- a/services/core/java/com/android/server/media/MediaSessionRecord.java +++ b/services/core/java/com/android/server/media/MediaSessionRecord.java @@ -384,7 +384,7 @@ public class MediaSessionRecord implements IBinder.DeathRecipient, MediaSessionR if (mPlaybackState == null) { return false; } - return mPlaybackState.isActiveState() == expected; + return mPlaybackState.isActive() == expected; } /** diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java index 50cfe1fbc333..491cd181b6f9 100644 --- a/services/core/java/com/android/server/media/MediaSessionService.java +++ b/services/core/java/com/android/server/media/MediaSessionService.java @@ -552,15 +552,30 @@ public class MediaSessionService extends SystemService implements Monitor { final long token = Binder.clearCallingIdentity(); try { enforcePackageName(callingPackage, callingUid); - if (targetUid != callingUid && mActivityManagerLocal.canStartForegroundService( - callingPid, callingUid, callingPackage)) { - final Context userContext = mContext.createContextAsUser( - UserHandle.of(UserHandle.getUserId(targetUid)), /* flags= */ 0); - final PowerExemptionManager powerExemptionManager = userContext.getSystemService( - PowerExemptionManager.class); - powerExemptionManager.addToTemporaryAllowList(targetPackage, - PowerExemptionManager.REASON_MEDIA_SESSION_CALLBACK, reason, - MediaSessionDeviceConfig.getMediaSessionCallbackFgsAllowlistDurationMs()); + if (targetUid != callingUid) { + Log.d(TAG, "tempAllowlistTargetPkgIfPossible callingPackage:" + + callingPackage + " targetPackage:" + targetPackage + + " reason:" + reason); + boolean canAllowWhileInUse = mActivityManagerLocal + .canAllowWhileInUsePermissionInFgs(callingPid, callingUid, callingPackage); + boolean canStartFgs = canAllowWhileInUse + || mActivityManagerLocal.canStartForegroundService(callingPid, callingUid, + callingPackage); + if (canAllowWhileInUse) { + mActivityManagerLocal.tempAllowWhileInUsePermissionInFgs(targetUid, + MediaSessionDeviceConfig + .getMediaSessionCallbackFgsWhileInUseTempAllowDurationMs()); + } + if (canStartFgs) { + final Context userContext = mContext.createContextAsUser( + UserHandle.of(UserHandle.getUserId(targetUid)), /* flags= */ 0); + final PowerExemptionManager powerExemptionManager = + userContext.getSystemService( + PowerExemptionManager.class); + powerExemptionManager.addToTemporaryAllowList(targetPackage, + PowerExemptionManager.REASON_MEDIA_SESSION_CALLBACK, reason, + MediaSessionDeviceConfig.getMediaSessionCallbackFgsAllowlistDurationMs()); + } } } finally { Binder.restoreCallingIdentity(token); diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java index 05922b3bb070..805f395bd1a5 100644 --- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java +++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java @@ -1942,7 +1942,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { * Collect all ifaces from a {@link NetworkStateSnapshot} into the given set. */ private static void collectIfaces(ArraySet<String> ifaces, NetworkStateSnapshot snapshot) { - ifaces.addAll(snapshot.linkProperties.getAllInterfaceNames()); + ifaces.addAll(snapshot.getLinkProperties().getAllInterfaceNames()); } /** @@ -2016,14 +2016,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { if (LOGV) Slog.v(TAG, "updateNetworkRulesNL()"); Trace.traceBegin(TRACE_TAG_NETWORK, "updateNetworkRulesNL"); - final List<NetworkStateSnapshot> snapshots = mConnManager.getAllNetworkStateSnapshot(); + final List<NetworkStateSnapshot> snapshots = mConnManager.getAllNetworkStateSnapshots(); // First, generate identities of all connected networks so we can // quickly compare them against all defined policies below. mNetIdToSubId.clear(); final ArrayMap<NetworkStateSnapshot, NetworkIdentity> identified = new ArrayMap<>(); for (final NetworkStateSnapshot snapshot : snapshots) { - mNetIdToSubId.put(snapshot.network.getNetId(), parseSubId(snapshot)); + mNetIdToSubId.put(snapshot.getNetwork().getNetId(), parseSubId(snapshot)); // Policies matched by NPMS only match by subscriber ID or by ssid. Thus subtype // in the object created here is never used and its value doesn't matter, so use @@ -2111,7 +2111,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { // One final pass to catch any metered ifaces that don't have explicitly // defined policies; typically Wi-Fi networks. for (final NetworkStateSnapshot snapshot : snapshots) { - if (!snapshot.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_METERED)) { + if (!snapshot.getNetworkCapabilities().hasCapability(NET_CAPABILITY_NOT_METERED)) { matchingIfaces.clear(); collectIfaces(matchingIfaces, snapshot); for (int j = matchingIfaces.size() - 1; j >= 0; j--) { @@ -2147,14 +2147,14 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { mSubscriptionOpportunisticQuota.clear(); for (final NetworkStateSnapshot snapshot : snapshots) { if (!quotaEnabled) continue; - if (snapshot.network == null) continue; - final int subId = getSubIdLocked(snapshot.network); + if (snapshot.getNetwork() == null) continue; + final int subId = getSubIdLocked(snapshot.getNetwork()); final SubscriptionPlan plan = getPrimarySubscriptionPlanLocked(subId); if (plan == null) continue; final long quotaBytes; final long limitBytes = plan.getDataLimitBytes(); - if (!snapshot.networkCapabilities.hasCapability(NET_CAPABILITY_NOT_ROAMING)) { + if (!snapshot.getNetworkCapabilities().hasCapability(NET_CAPABILITY_NOT_ROAMING)) { // Clamp to 0 when roaming quotaBytes = 0; } else if (limitBytes == SubscriptionPlan.BYTES_UNKNOWN) { @@ -2172,7 +2172,7 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { .truncatedTo(ChronoUnit.DAYS) .toInstant().toEpochMilli(); final long totalBytes = getTotalBytes( - NetworkTemplate.buildTemplateMobileAll(snapshot.subscriberId), + NetworkTemplate.buildTemplateMobileAll(snapshot.getSubscriberId()), start, startOfDay); final long remainingBytes = limitBytes - totalBytes; // Number of remaining days including current day @@ -5807,8 +5807,8 @@ public class NetworkPolicyManagerService extends INetworkPolicyManager.Stub { private int parseSubId(@NonNull NetworkStateSnapshot snapshot) { int subId = INVALID_SUBSCRIPTION_ID; - if (snapshot.networkCapabilities.hasTransport(TRANSPORT_CELLULAR)) { - NetworkSpecifier spec = snapshot.networkCapabilities.getNetworkSpecifier(); + if (snapshot.getNetworkCapabilities().hasTransport(TRANSPORT_CELLULAR)) { + NetworkSpecifier spec = snapshot.getNetworkCapabilities().getNetworkSpecifier(); if (spec instanceof TelephonyNetworkSpecifier) { subId = ((TelephonyNetworkSpecifier) spec).getSubscriptionId(); } diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java index 19f5e3cd5dfa..3c14440c6467 100644 --- a/services/core/java/com/android/server/net/NetworkStatsService.java +++ b/services/core/java/com/android/server/net/NetworkStatsService.java @@ -24,7 +24,6 @@ import static android.content.Intent.ACTION_UID_REMOVED; import static android.content.Intent.ACTION_USER_REMOVED; import static android.content.Intent.EXTRA_UID; import static android.content.pm.PackageManager.PERMISSION_GRANTED; -import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR; import static android.net.NetworkIdentity.SUBTYPE_COMBINED; import static android.net.NetworkStack.checkNetworkStackPermission; import static android.net.NetworkStats.DEFAULT_NETWORK_ALL; @@ -97,12 +96,12 @@ import android.net.INetworkStatsSession; import android.net.Network; import android.net.NetworkCapabilities; import android.net.NetworkIdentity; +import android.net.NetworkSpecifier; import android.net.NetworkStack; import android.net.NetworkStateSnapshot; import android.net.NetworkStats; import android.net.NetworkStats.NonMonotonicObserver; import android.net.NetworkStatsHistory; -import android.net.NetworkSpecifier; import android.net.NetworkTemplate; import android.net.TelephonyNetworkSpecifier; import android.net.TrafficStats; @@ -1296,9 +1295,9 @@ public class NetworkStatsService extends INetworkStatsService.Stub { final ArraySet<String> mobileIfaces = new ArraySet<>(); for (NetworkStateSnapshot snapshot : snapshots) { final int displayTransport = - getDisplayTransport(snapshot.networkCapabilities.getTransportTypes()); + getDisplayTransport(snapshot.getNetworkCapabilities().getTransportTypes()); final boolean isMobile = (NetworkCapabilities.TRANSPORT_CELLULAR == displayTransport); - final boolean isDefault = ArrayUtils.contains(mDefaultNetworks, snapshot.network); + final boolean isDefault = ArrayUtils.contains(mDefaultNetworks, snapshot.getNetwork()); final int subType = combineSubtypeEnabled ? SUBTYPE_COMBINED : getSubTypeForStateSnapshot(snapshot); final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, snapshot, @@ -1306,7 +1305,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // Traffic occurring on the base interface is always counted for // both total usage and UID details. - final String baseIface = snapshot.linkProperties.getInterfaceName(); + final String baseIface = snapshot.getLinkProperties().getInterfaceName(); if (baseIface != null) { findOrCreateNetworkIdentitySet(mActiveIfaces, baseIface).add(ident); findOrCreateNetworkIdentitySet(mActiveUidIfaces, baseIface).add(ident); @@ -1316,7 +1315,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // If IMS is metered, then the IMS network usage has already included VT usage. // VT is considered always metered in framework's layer. If VT is not metered // per carrier's policy, modem will report 0 usage for VT calls. - if (snapshot.networkCapabilities.hasCapability( + if (snapshot.getNetworkCapabilities().hasCapability( NetworkCapabilities.NET_CAPABILITY_IMS) && !ident.getMetered()) { // Copy the identify from IMS one but mark it as metered. @@ -1364,7 +1363,7 @@ public class NetworkStatsService extends INetworkStatsService.Stub { // accounting is explicitly bypassed for traffic from the clat uid. // // TODO: This code might be combined to above code. - for (String iface : snapshot.linkProperties.getAllInterfaceNames()) { + for (String iface : snapshot.getLinkProperties().getAllInterfaceNames()) { // baseIface has been handled, so ignore it. if (TextUtils.equals(baseIface, iface)) continue; if (iface != null) { @@ -1383,11 +1382,11 @@ public class NetworkStatsService extends INetworkStatsService.Stub { } private static int getSubIdForMobile(@NonNull NetworkStateSnapshot state) { - if (!state.networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { + if (!state.getNetworkCapabilities().hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { throw new IllegalArgumentException("Mobile state need capability TRANSPORT_CELLULAR"); } - final NetworkSpecifier spec = state.networkCapabilities.getNetworkSpecifier(); + final NetworkSpecifier spec = state.getNetworkCapabilities().getNetworkSpecifier(); if (spec instanceof TelephonyNetworkSpecifier) { return ((TelephonyNetworkSpecifier) spec).getSubscriptionId(); } else { @@ -1402,11 +1401,11 @@ public class NetworkStatsService extends INetworkStatsService.Stub { * transport types do not actually fill this value. */ private int getSubTypeForStateSnapshot(@NonNull NetworkStateSnapshot state) { - if (!state.networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { + if (!state.getNetworkCapabilities().hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) { return 0; } - return mNetworkStatsSubscriptionsMonitor.getRatTypeForSubscriberId(state.subscriberId); + return mNetworkStatsSubscriptionsMonitor.getRatTypeForSubscriberId(state.getSubscriberId()); } private static <K> NetworkIdentitySet findOrCreateNetworkIdentitySet( diff --git a/services/core/java/com/android/server/notification/BubbleExtractor.java b/services/core/java/com/android/server/notification/BubbleExtractor.java index fd92c4c82f24..2caad5065840 100644 --- a/services/core/java/com/android/server/notification/BubbleExtractor.java +++ b/services/core/java/com/android/server/notification/BubbleExtractor.java @@ -71,37 +71,38 @@ public class BubbleExtractor implements NotificationSignalExtractor { return null; } - int bubblePreference = - mConfig.getBubblePreference( - record.getSbn().getPackageName(), record.getSbn().getUid()); - NotificationChannel recordChannel = record.getChannel(); - boolean canPresentAsBubble = canPresentAsBubble(record) + boolean notifCanPresentAsBubble = canPresentAsBubble(record) && !mActivityManager.isLowRamDevice() && record.isConversation() && record.getShortcutInfo() != null && (record.getNotification().flags & FLAG_FOREGROUND_SERVICE) == 0; - if (!mConfig.bubblesEnabled() - || bubblePreference == BUBBLE_PREFERENCE_NONE - || !canPresentAsBubble) { + boolean userEnabledBubbles = mConfig.bubblesEnabled(record.getUser()); + int appPreference = + mConfig.getBubblePreference( + record.getSbn().getPackageName(), record.getSbn().getUid()); + NotificationChannel recordChannel = record.getChannel(); + if (!userEnabledBubbles + || appPreference == BUBBLE_PREFERENCE_NONE + || !notifCanPresentAsBubble) { record.setAllowBubble(false); - if (!canPresentAsBubble) { + if (!notifCanPresentAsBubble) { // clear out bubble metadata since it can't be used record.getNotification().setBubbleMetadata(null); } } else if (recordChannel == null) { // the app is allowed but there's no channel to check record.setAllowBubble(true); - } else if (bubblePreference == BUBBLE_PREFERENCE_ALL) { + } else if (appPreference == BUBBLE_PREFERENCE_ALL) { record.setAllowBubble(recordChannel.getAllowBubbles() != ALLOW_BUBBLE_OFF); - } else if (bubblePreference == BUBBLE_PREFERENCE_SELECTED) { + } else if (appPreference == BUBBLE_PREFERENCE_SELECTED) { record.setAllowBubble(recordChannel.canBubble()); } if (DBG) { Slog.d(TAG, "record: " + record.getKey() - + " appPref: " + bubblePreference + + " appPref: " + appPreference + " canBubble: " + record.canBubble() - + " canPresentAsBubble: " + canPresentAsBubble + + " canPresentAsBubble: " + notifCanPresentAsBubble + " flagRemoved: " + record.isFlagBubbleRemoved()); } diff --git a/services/core/java/com/android/server/notification/ManagedServices.java b/services/core/java/com/android/server/notification/ManagedServices.java index 5d61fef12845..202b315a7c82 100644 --- a/services/core/java/com/android/server/notification/ManagedServices.java +++ b/services/core/java/com/android/server/notification/ManagedServices.java @@ -1769,17 +1769,10 @@ abstract public class ManagedServices { UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE); if (userManager != null) { int currentUserId = ActivityManager.getCurrentUser(); - List<UserInfo> unlockedProfiles = new ArrayList<>(); - for (UserInfo user : userManager.getProfiles(currentUserId)) { - // Dependencies throw if we call APIs on a locked user. Only include - // unlocked users. - if (userManager.isUserUnlocked(user.id)) { - unlockedProfiles.add(user); - } - } + List<UserInfo> profiles = userManager.getProfiles(currentUserId); synchronized (mCurrentProfiles) { mCurrentProfiles.clear(); - for (UserInfo user : unlockedProfiles) { + for (UserInfo user : profiles) { mCurrentProfiles.put(user.id, user); } } diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index 1e6e5cb97f45..9ea8c3751eef 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -735,19 +735,22 @@ public class NotificationManagerService extends SystemService { final List<UserInfo> activeUsers = mUm.getUsers(); for (UserInfo userInfo : activeUsers) { int userId = userInfo.getUserHandle().getIdentifier(); - if (isNASMigrationDone(userId)) { + if (isNASMigrationDone(userId) || mUm.isManagedProfile(userId)) { continue; } if (mAssistants.hasUserSet(userId)) { - mAssistants.loadDefaultsFromConfig(false); ComponentName defaultFromConfig = mAssistants.getDefaultFromConfig(); List<ComponentName> allowedComponents = mAssistants.getAllowedComponents(userId); - if (allowedComponents.contains(defaultFromConfig)) { + if (allowedComponents.size() == 0) { + setNASMigrationDone(userId); + mAssistants.clearDefaults(); + continue; + } else if (allowedComponents.contains(defaultFromConfig)) { setNASMigrationDone(userId); mAssistants.resetDefaultFromConfig(); continue; } - //User selected different NAS or none, need onboarding + //User selected different NAS, need onboarding enqueueNotificationInternal(getContext().getPackageName(), getContext().getOpPackageName(), Binder.getCallingUid(), Binder.getCallingPid(), TAG, @@ -819,9 +822,11 @@ public class NotificationManagerService extends SystemService { } @VisibleForTesting - void setNASMigrationDone(int userId) { - Settings.Secure.putIntForUser(getContext().getContentResolver(), - Settings.Secure.NAS_SETTINGS_UPDATED, 1, userId); + void setNASMigrationDone(int baseUserId) { + for (int profileId : mUm.getProfileIds(baseUserId, false)) { + Settings.Secure.putIntForUser(getContext().getContentResolver(), + Settings.Secure.NAS_SETTINGS_UPDATED, 1, profileId); + } } @VisibleForTesting @@ -1778,8 +1783,6 @@ public class NotificationManagerService extends SystemService { } } else if (action.equals(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE)) { int userHandle = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1); - // Work profile user may now be locked. Refresh cache. - mUserProfiles.updateCache(context); if (userHandle >= 0) { cancelAllNotificationsInt(MY_UID, MY_PID, null, null, 0, 0, true, userHandle, REASON_PROFILE_TURNED_OFF, null); @@ -1874,7 +1877,7 @@ public class NotificationManagerService extends SystemService { private final Uri NOTIFICATION_BADGING_URI = Settings.Secure.getUriFor(Settings.Secure.NOTIFICATION_BADGING); private final Uri NOTIFICATION_BUBBLES_URI - = Settings.Global.getUriFor(Settings.Global.NOTIFICATION_BUBBLES); + = Settings.Secure.getUriFor(Settings.Secure.NOTIFICATION_BUBBLES); private final Uri NOTIFICATION_LIGHT_PULSE_URI = Settings.System.getUriFor(Settings.System.NOTIFICATION_LIGHT_PULSE); private final Uri NOTIFICATION_RATE_LIMIT_URI @@ -3467,8 +3470,7 @@ public class NotificationManagerService extends SystemService { android.Manifest.permission.INTERACT_ACROSS_USERS, "areBubblesEnabled for user " + user.getIdentifier()); } - // TODO: incorporate uid / per-user prefs once settings moves off global table. - return mPreferencesHelper.bubblesEnabled(); + return mPreferencesHelper.bubblesEnabled(user); } @Override @@ -5171,12 +5173,7 @@ public class NotificationManagerService extends SystemService { @Override public ComponentName getDefaultNotificationAssistant() { checkCallerIsSystem(); - ArraySet<ComponentName> defaultComponents = mAssistants.getDefaultComponents(); - if (defaultComponents.size() > 1) { - Slog.w(TAG, "More than one default NotificationAssistant: " - + defaultComponents.size()); - } - return CollectionUtils.firstOrNull(defaultComponents); + return mAssistants.getDefaultFromConfig(); } @Override @@ -9403,6 +9400,9 @@ public class NotificationManagerService extends SystemService { } ComponentName getDefaultFromConfig() { + if (mDefaultFromConfig == null) { + loadDefaultsFromConfig(false); + } return mDefaultFromConfig; } diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java index dc3b78afeedb..55a0949fb7c7 100644 --- a/services/core/java/com/android/server/notification/PreferencesHelper.java +++ b/services/core/java/com/android/server/notification/PreferencesHelper.java @@ -139,7 +139,7 @@ public class PreferencesHelper implements RankingConfig { private static final boolean DEFAULT_OEM_LOCKED_IMPORTANCE = false; private static final boolean DEFAULT_APP_LOCKED_IMPORTANCE = false; - static final boolean DEFAULT_GLOBAL_ALLOW_BUBBLE = true; + static final boolean DEFAULT_BUBBLES_ENABLED = true; @VisibleForTesting static final int DEFAULT_BUBBLE_PREFERENCE = BUBBLE_PREFERENCE_NONE; static final boolean DEFAULT_MEDIA_NOTIFICATION_FILTERING = true; @@ -173,9 +173,9 @@ public class PreferencesHelper implements RankingConfig { private final AppOpsManager mAppOps; private SparseBooleanArray mBadgingEnabled; + private SparseBooleanArray mBubblesEnabled; private SparseBooleanArray mLockScreenShowNotifications; private SparseBooleanArray mLockScreenPrivateNotifications; - private boolean mBubblesEnabledGlobally = DEFAULT_GLOBAL_ALLOW_BUBBLE; private boolean mIsMediaNotificationFilteringEnabled = DEFAULT_MEDIA_NOTIFICATION_FILTERING; private boolean mAreChannelsBypassingDnd; private boolean mHideSilentStatusBarIcons = DEFAULT_HIDE_SILENT_STATUS_BAR_ICONS; @@ -2372,20 +2372,6 @@ public class PreferencesHelper implements RankingConfig { .setPackageName(pkg); } - public void updateBubblesEnabled() { - final boolean newValue = Settings.Global.getInt(mContext.getContentResolver(), - Settings.Global.NOTIFICATION_BUBBLES, - DEFAULT_GLOBAL_ALLOW_BUBBLE ? 1 : 0) == 1; - if (newValue != mBubblesEnabledGlobally) { - mBubblesEnabledGlobally = newValue; - updateConfig(); - } - } - - public boolean bubblesEnabled() { - return mBubblesEnabledGlobally; - } - /** Requests check of the feature setting for showing media notifications in quick settings. */ public void updateMediaNotificationFilteringEnabled() { final boolean newValue = Settings.Global.getInt(mContext.getContentResolver(), @@ -2435,6 +2421,42 @@ public class PreferencesHelper implements RankingConfig { return mBadgingEnabled.get(userId, DEFAULT_SHOW_BADGE); } + /** Updates whether bubbles are enabled for this user. */ + public void updateBubblesEnabled() { + if (mBubblesEnabled == null) { + mBubblesEnabled = new SparseBooleanArray(); + } + boolean changed = false; + // update the cached values + for (int index = 0; index < mBubblesEnabled.size(); index++) { + int userId = mBubblesEnabled.keyAt(index); + final boolean oldValue = mBubblesEnabled.get(userId); + final boolean newValue = Settings.Secure.getIntForUser(mContext.getContentResolver(), + Settings.Secure.NOTIFICATION_BUBBLES, + DEFAULT_BUBBLES_ENABLED ? 1 : 0, userId) != 0; + mBubblesEnabled.put(userId, newValue); + changed |= oldValue != newValue; + } + if (changed) { + updateConfig(); + } + } + + /** Returns true if bubbles are enabled for this user. */ + public boolean bubblesEnabled(UserHandle userHandle) { + int userId = userHandle.getIdentifier(); + if (userId == UserHandle.USER_ALL) { + return false; + } + if (mBubblesEnabled.indexOfKey(userId) < 0) { + mBubblesEnabled.put(userId, + Settings.Secure.getIntForUser(mContext.getContentResolver(), + Settings.Secure.NOTIFICATION_BUBBLES, + DEFAULT_BUBBLES_ENABLED ? 1 : 0, userId) != 0); + } + return mBubblesEnabled.get(userId, DEFAULT_BUBBLES_ENABLED); + } + public void updateLockScreenPrivateNotifications() { if (mLockScreenPrivateNotifications == null) { mLockScreenPrivateNotifications = new SparseBooleanArray(); diff --git a/services/core/java/com/android/server/notification/RankingConfig.java b/services/core/java/com/android/server/notification/RankingConfig.java index 8991ced21fbd..b1d654671c2d 100644 --- a/services/core/java/com/android/server/notification/RankingConfig.java +++ b/services/core/java/com/android/server/notification/RankingConfig.java @@ -30,7 +30,8 @@ public interface RankingConfig { boolean canShowBadge(String packageName, int uid); boolean badgingEnabled(UserHandle userHandle); int getBubblePreference(String packageName, int uid); - boolean bubblesEnabled(); + /** Returns true when the bubbles feature is enabled for this user. */ + boolean bubblesEnabled(UserHandle userHandle); /** Returns true when feature is enabled that shows media notifications in quick settings. */ boolean isMediaNotificationFilteringEnabled(); boolean isGroupBlocked(String packageName, int uid, String groupId); diff --git a/services/core/java/com/android/server/pm/IncrementalStates.java b/services/core/java/com/android/server/pm/IncrementalStates.java index 4fd360bcd453..7627281d2188 100644 --- a/services/core/java/com/android/server/pm/IncrementalStates.java +++ b/services/core/java/com/android/server/pm/IncrementalStates.java @@ -16,13 +16,7 @@ package com.android.server.pm; -import static android.os.incremental.IStorageHealthListener.HEALTH_STATUS_OK; -import static android.os.incremental.IStorageHealthListener.HEALTH_STATUS_UNHEALTHY; -import static android.os.incremental.IStorageHealthListener.HEALTH_STATUS_UNHEALTHY_STORAGE; -import static android.os.incremental.IStorageHealthListener.HEALTH_STATUS_UNHEALTHY_TRANSPORT; - import android.content.pm.IncrementalStatesInfo; -import android.content.pm.PackageManager; import android.os.Handler; import android.util.Slog; @@ -30,17 +24,13 @@ import com.android.internal.annotations.GuardedBy; import com.android.internal.os.BackgroundThread; import com.android.internal.util.function.pooled.PooledLambda; -import java.util.function.Consumer; - /** * Manages state transitions of a package installed on Incremental File System. Currently manages: - * 1. startable state (whether a package is allowed to be launched), and - * 2. loading state (whether a package is still loading or has been fully loaded). + * 1. loading state (whether a package is still loading or has been fully loaded). * * The following events might change the states of a package: * 1. Installation commit - * 2. Incremental storage health changes - * 4. Loading progress changes + * 2. Loading progress changes * * @hide */ @@ -50,41 +40,24 @@ public final class IncrementalStates { private final Handler mHandler = BackgroundThread.getHandler(); private final Object mLock = new Object(); @GuardedBy("mLock") - private int mStorageHealthStatus = HEALTH_STATUS_OK; - @GuardedBy("mLock") private final LoadingState mLoadingState; @GuardedBy("mLock") - private StartableState mStartableState; - @GuardedBy("mLock") private Callback mCallback = null; - private final Consumer<Integer> mStatusConsumer; public IncrementalStates() { - // By default the package is not startable and not fully loaded (i.e., is loading) - this(false, true, 0); + // By default the package is not fully loaded (i.e., is loading) + this(true, 0); } - public IncrementalStates(boolean isStartable, boolean isLoading, float loadingProgress) { - mStartableState = new StartableState(isStartable); + public IncrementalStates(boolean isLoading, float loadingProgress) { mLoadingState = new LoadingState(isLoading, loadingProgress); - mStatusConsumer = new StatusConsumer(); } /** - * Callback interface to report that the startable state of this package has changed. + * Callback interface to report that the loading state of this package has changed. */ public interface Callback { /** - * Reports that the package is now unstartable and the unstartable reason. - */ - void onPackageUnstartable(int reason); - - /** - * Reports that the package is now startable. - */ - void onPackageStartable(); - - /** * Reports that package is fully loaded. */ void onPackageFullyLoaded(); @@ -92,7 +65,7 @@ public final class IncrementalStates { /** * By calling this method, the caller indicates that package installation has just been - * committed. The package becomes startable. Set the initial loading state after the package + * committed. Set the initial loading state after the package * is committed. Incremental packages are by-default loading; non-Incremental packages are not. * * @param isIncremental whether a package is installed on Incremental or not. @@ -101,66 +74,11 @@ public final class IncrementalStates { if (DEBUG) { Slog.i(TAG, "received package commit event"); } - final boolean startableStateChanged; - synchronized (mLock) { - startableStateChanged = mStartableState.adoptNewStartableStateLocked(true); - if (!isIncremental) { - updateProgressLocked(1); - } - } - if (startableStateChanged) { - onStartableStateChanged(); - } if (!isIncremental) { - onLoadingStateChanged(); - } - } - - /** - * Change the startable state if the app has crashed or ANR'd during loading. - * If the app is not loading (i.e., fully loaded), this event doesn't change startable state. - */ - public void onCrashOrAnr() { - if (DEBUG) { - Slog.i(TAG, "received package crash or ANR event"); - } - final boolean startableStateChanged; - synchronized (mLock) { - if (mStartableState.isStartable() && mLoadingState.isLoading()) { - // Changing from startable -> unstartable only if app is still loading. - startableStateChanged = mStartableState.adoptNewStartableStateLocked(false); - } else { - // If the app is fully loaded, the crash or ANR is caused by the app itself, so - // we do not change the startable state. - startableStateChanged = false; + synchronized (mLock) { + updateProgressLocked(1.0f); } - } - if (startableStateChanged) { - onStartableStateChanged(); - } - } - - private void onStartableStateChanged() { - // Disable startable state broadcasts - // TODO(b/171920377): completely remove unstartable state. - } - - private void reportStartableState() { - final Callback callback; - final boolean startable; - final int reason; - synchronized (mLock) { - callback = mCallback; - startable = mStartableState.isStartable(); - reason = mStartableState.getUnstartableReason(); - } - if (callback == null) { - return; - } - if (startable) { - callback.onPackageStartable(); - } else { - callback.onPackageUnstartable(reason); + onLoadingStateChanged(); } } @@ -180,38 +98,6 @@ public final class IncrementalStates { } } - private class StatusConsumer implements Consumer<Integer> { - @Override - public void accept(Integer storageStatus) { - final boolean startableStateChanged; - synchronized (mLock) { - if (!mLoadingState.isLoading()) { - // Do nothing if the package is already fully loaded - return; - } - mStorageHealthStatus = storageStatus; - startableStateChanged = updateStartableStateLocked(); - } - if (startableStateChanged) { - onStartableStateChanged(); - } - } - } - - /** - * By calling this method, the caller indicates that there issues with the Incremental - * Storage, - * on which the package is installed. The state will change according to the status - * code defined in {@code IStorageHealthListener}. - */ - public void onStorageHealthStatusChanged(int storageHealthStatus) { - if (DEBUG) { - Slog.i(TAG, "received storage health status changed event : storageHealthStatus=" - + storageHealthStatus); - } - mStatusConsumer.accept(storageHealthStatus); - } - /** * Use the specified callback to report state changing events. * @@ -227,25 +113,19 @@ public final class IncrementalStates { } /** - * Update the package loading progress to specified value. This might change startable state. + * Update the package loading progress to specified value. * * @param progress Value between [0, 1]. */ public void setProgress(float progress) { final boolean newLoadingState; - final boolean oldStartableState, newStartableState; synchronized (mLock) { - oldStartableState = mStartableState.isStartable(); updateProgressLocked(progress); newLoadingState = mLoadingState.isLoading(); - newStartableState = mStartableState.isStartable(); } if (!newLoadingState) { onLoadingStateChanged(); } - if (newStartableState != oldStartableState) { - onStartableStateChanged(); - } } /** @@ -253,41 +133,12 @@ public final class IncrementalStates { */ public IncrementalStatesInfo getIncrementalStatesInfo() { synchronized (mLock) { - return new IncrementalStatesInfo(mStartableState.isStartable(), + return new IncrementalStatesInfo( mLoadingState.isLoading(), mLoadingState.getProgress()); } } - /** - * Determine the next state based on the current state, current stream status and storage - * health - * status. If the next state is different from the current state, proceed with state - * change. - * @return True if the new startable state is different from the old one. - */ - private boolean updateStartableStateLocked() { - final boolean currentState = mStartableState.isStartable(); - boolean nextState = currentState; - if (!currentState) { - if (mStorageHealthStatus == HEALTH_STATUS_OK) { - // change from unstartable -> startable - nextState = true; - } - } else { - if (mStorageHealthStatus == HEALTH_STATUS_UNHEALTHY - || mStorageHealthStatus == HEALTH_STATUS_UNHEALTHY_STORAGE - || mStorageHealthStatus == HEALTH_STATUS_UNHEALTHY_TRANSPORT) { - // change from startable -> unstartable - nextState = false; - } - } - if (nextState == currentState) { - return false; - } - return mStartableState.adoptNewStartableStateLocked(nextState); - } - private void updateProgressLocked(float progress) { if (DEBUG) { Slog.i(TAG, "received progress update: " + progress); @@ -301,85 +152,6 @@ public final class IncrementalStates { if (mLoadingState.isLoading()) { mLoadingState.adoptNewLoadingStateLocked(false); } - // Also updates startable state if necessary - if (!mStartableState.isStartable()) { - mStartableState.adoptNewStartableStateLocked(true); - } - } - } - - private class StartableState { - private boolean mIsStartable; - private int mUnstartableReason = PackageManager.UNSTARTABLE_REASON_UNKNOWN; - - StartableState(boolean isStartable) { - mIsStartable = isStartable; - } - - public boolean isStartable() { - return mIsStartable; - } - - public int getUnstartableReason() { - return mUnstartableReason; - } - - /** - * Adopt new startable state if it is different from the current state. - * @param nextState True if startable, false if unstartable. - * @return True if the state has changed, false otherwise. - */ - public boolean adoptNewStartableStateLocked(boolean nextState) { - if (mIsStartable == nextState) { - return false; - } - if (!nextState) { - // Do nothing if the next state is "unstartable"; keep package always startable. - // TODO(b/171920377): completely remove unstartable state. - if (DEBUG) { - Slog.i(TAG, "Attempting to set startable state to false. Abort."); - } - return false; - } - if (DEBUG) { - Slog.i(TAG, - "startable state changed from " + mIsStartable + " to " + nextState); - } - mIsStartable = nextState; - mUnstartableReason = getUnstartableReasonLocked(); - return true; - } - - private int getUnstartableReasonLocked() { - if (mIsStartable) { - return PackageManager.UNSTARTABLE_REASON_UNKNOWN; - } - // Translate stream status to reason for unstartable state - switch (mStorageHealthStatus) { - case HEALTH_STATUS_UNHEALTHY_STORAGE: - return PackageManager.UNSTARTABLE_REASON_INSUFFICIENT_STORAGE; - case HEALTH_STATUS_UNHEALTHY_TRANSPORT: - return PackageManager.UNSTARTABLE_REASON_CONNECTION_ERROR; - default: - return PackageManager.UNSTARTABLE_REASON_UNKNOWN; - } - } - - @Override - public boolean equals(Object o) { - if (o == this) { - return true; - } - if (!(o instanceof StartableState)) { - return false; - } - StartableState l = (StartableState) o; - return l.mIsStartable == mIsStartable; - } - - @Override - public int hashCode() { - return Boolean.hashCode(mIsStartable); } } @@ -443,16 +215,11 @@ public final class IncrementalStates { return false; } IncrementalStates l = (IncrementalStates) o; - return l.mStorageHealthStatus == mStorageHealthStatus - && l.mStartableState.equals(mStartableState) - && l.mLoadingState.equals(mLoadingState); + return l.mLoadingState.equals(mLoadingState); } @Override public int hashCode() { - int hashCode = mStartableState.hashCode(); - hashCode = 31 * hashCode + mLoadingState.hashCode(); - hashCode = 31 * hashCode + mStorageHealthStatus; - return hashCode; + return mLoadingState.hashCode(); } } diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java index 27077b6b2a09..656f3474e797 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerService.java +++ b/services/core/java/com/android/server/pm/PackageInstallerService.java @@ -584,12 +584,16 @@ public class PackageInstallerService extends IPackageInstaller.Stub implements params.installFlags &= ~PackageManager.INSTALL_FROM_ADB; params.installFlags &= ~PackageManager.INSTALL_ALL_USERS; - params.installFlags &= ~PackageManager.INSTALL_ALLOW_TEST; params.installFlags |= PackageManager.INSTALL_REPLACE_EXISTING; if ((params.installFlags & PackageManager.INSTALL_VIRTUAL_PRELOAD) != 0 && !mPm.isCallerVerifier(callingUid)) { params.installFlags &= ~PackageManager.INSTALL_VIRTUAL_PRELOAD; } + if (mContext.checkCallingOrSelfPermission( + Manifest.permission.INSTALL_TEST_ONLY_PACKAGE) + != PackageManager.PERMISSION_GRANTED) { + params.installFlags &= ~PackageManager.INSTALL_ALLOW_TEST; + } } String originatingPackageName = null; diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java index b6a65ddb5ec2..adfa65da9e10 100644 --- a/services/core/java/com/android/server/pm/PackageInstallerSession.java +++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java @@ -3838,13 +3838,6 @@ public class PackageInstallerSession extends IPackageInstallerSession.Stub { sendPendingStreaming(mContext, statusReceiver, sessionId, e.getMessage()); } } - @Override - public void reportStreamHealth(int dataLoaderId, int streamStatus) { - // Currently the stream status is not used during package installation. It is - // technically possible for the data loader to report stream status via this - // callback, but if something is wrong with the streaming, it is more likely that - // prepareDataLoaderLocked will return false and the installation will be aborted. - } }; if (!manualStartAndDestroy) { diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java index 6b364bdcc0e0..ba6165c7db14 100644 --- a/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/services/core/java/com/android/server/pm/PackageManagerService.java @@ -287,11 +287,9 @@ import android.os.SystemProperties; import android.os.Trace; import android.os.UserHandle; import android.os.UserManager; -import android.os.incremental.IStorageHealthListener; import android.os.incremental.IncrementalManager; import android.os.incremental.IncrementalStorage; import android.os.incremental.PerUidReadTimeouts; -import android.os.incremental.StorageHealthCheckParams; import android.os.storage.DiskInfo; import android.os.storage.IStorageManager; import android.os.storage.StorageEventListener; @@ -818,14 +816,6 @@ public class PackageManagerService extends IPackageManager.Stub private static final String RANDOM_DIR_PREFIX = "~~"; - /** - * Timeout configurations for incremental storage health monitor. - * See {@link IStorageHealthListener} - */ - private static final int INCREMENTAL_STORAGE_BLOCKED_TIMEOUT_MS = 2000; - private static final int INCREMENTAL_STORAGE_UNHEALTHY_TIMEOUT_MS = 7000; - private static final int INCREMENTAL_STORAGE_UNHEALTHY_MONITORING_MS = 60000; - final Handler mHandler; private final ProcessLoggingHandler mProcessLoggingHandler; @@ -1495,6 +1485,9 @@ public class PackageManagerService extends IPackageManager.Stub // List of packages names to keep cached, even if they are uninstalled for all users private List<String> mKeepUninstalledPackages; + // Cached reference to IDevicePolicyManager. + private IDevicePolicyManager mDevicePolicyManager = null; + private File mCacheDir; private Future<?> mPrepareAppDataFuture; @@ -11644,15 +11637,7 @@ public class PackageManagerService extends IPackageManager.Stub } if (mIncrementalManager != null && isIncrementalPath(parsedPackage.getPath())) { if (pkgSetting != null && pkgSetting.isPackageLoading()) { - final StorageHealthCheckParams healthCheckParams = new StorageHealthCheckParams(); - healthCheckParams.blockedTimeoutMs = INCREMENTAL_STORAGE_BLOCKED_TIMEOUT_MS; - healthCheckParams.unhealthyTimeoutMs = INCREMENTAL_STORAGE_UNHEALTHY_TIMEOUT_MS; - healthCheckParams.unhealthyMonitoringMs = - INCREMENTAL_STORAGE_UNHEALTHY_MONITORING_MS; - // Continue monitoring health and loading progress of active incremental packages - mIncrementalManager.registerHealthListener(parsedPackage.getPath(), - healthCheckParams, - new IncrementalHealthListener(parsedPackage.getPackageName())); + // Continue monitoring loading progress of active incremental packages final IncrementalStatesCallback incrementalStatesCallback = new IncrementalStatesCallback(parsedPackage.getPackageName(), UserHandle.getUid(UserHandle.USER_ALL, pkgSetting.appId), @@ -18477,16 +18462,6 @@ public class PackageManagerService extends IPackageManager.Stub ps.setIncrementalStatesCallback(incrementalStatesCallback); mIncrementalManager.registerLoadingProgressCallback(codePath, new IncrementalProgressListener(ps.name)); - final IncrementalHealthListener incrementalHealthListener = - new IncrementalHealthListener(ps.name); - final StorageHealthCheckParams healthCheckParams = - new StorageHealthCheckParams(); - healthCheckParams.blockedTimeoutMs = INCREMENTAL_STORAGE_BLOCKED_TIMEOUT_MS; - healthCheckParams.unhealthyTimeoutMs = INCREMENTAL_STORAGE_UNHEALTHY_TIMEOUT_MS; - healthCheckParams.unhealthyMonitoringMs = - INCREMENTAL_STORAGE_UNHEALTHY_MONITORING_MS; - mIncrementalManager.registerHealthListener(codePath, healthCheckParams, - incrementalHealthListener); } // Ensure that the uninstall reason is UNKNOWN for users with the package installed. @@ -19478,65 +19453,11 @@ public class PackageManagerService extends IPackageManager.Stub ps, mInstalledUserIds, mSettings.getPackagesLocked()); codePath = ps.getPathString(); } - Bundle extras = new Bundle(); - extras.putInt(Intent.EXTRA_UID, mUid); - extras.putString(Intent.EXTRA_PACKAGE_NAME, mPackageName); - sendPackageBroadcast(Intent.ACTION_PACKAGE_FULLY_LOADED, mPackageName, - extras, 0 /*flags*/, - null /*targetPackage*/, null /*finishedReceiver*/, - mInstalledUserIds, null /* instantUserIds */, newBroadcastAllowList, null); // Unregister progress listener mIncrementalManager.unregisterLoadingProgressCallbacks(codePath); - // Unregister health listener as it will always be healthy from now - mIncrementalManager.unregisterHealthListener(codePath); // Make sure the information is preserved scheduleWriteSettingsLocked(); } - - @Override - public void onPackageUnstartable(int reason) { - final SparseArray<int[]> newBroadcastAllowList; - synchronized (mLock) { - final PackageSetting ps = mSettings.getPackageLPr(mPackageName); - if (ps == null) { - return; - } - newBroadcastAllowList = mAppsFilter.getVisibilityAllowList( - ps, mInstalledUserIds, mSettings.getPackagesLocked()); - } - Bundle extras = new Bundle(); - extras.putInt(Intent.EXTRA_UID, mUid); - extras.putString(Intent.EXTRA_PACKAGE_NAME, mPackageName); - extras.putInt(Intent.EXTRA_UNSTARTABLE_REASON, reason); - // send broadcast to users with this app installed - sendPackageBroadcast(Intent.ACTION_PACKAGE_UNSTARTABLE, mPackageName, - extras, 0 /*flags*/, - null /*targetPackage*/, null /*finishedReceiver*/, - mInstalledUserIds, null /* instantUserIds */, - newBroadcastAllowList, null); - } - - @Override - public void onPackageStartable() { - final SparseArray<int[]> newBroadcastAllowList; - synchronized (mLock) { - final PackageSetting ps = mSettings.getPackageLPr(mPackageName); - if (ps == null) { - return; - } - newBroadcastAllowList = mAppsFilter.getVisibilityAllowList( - ps, mInstalledUserIds, mSettings.getPackagesLocked()); - } - Bundle extras = new Bundle(); - extras.putInt(Intent.EXTRA_UID, mUid); - extras.putString(Intent.EXTRA_PACKAGE_NAME, mPackageName); - // send broadcast to users with this app installed - sendPackageBroadcast(Intent.ACTION_PACKAGE_STARTABLE, mPackageName, - extras, 0 /*flags*/, - null /*targetPackage*/, null /*finishedReceiver*/, - mInstalledUserIds, null /* instantUserIds */, - newBroadcastAllowList, null); - } } /** @@ -19561,29 +19482,6 @@ public class PackageManagerService extends IPackageManager.Stub } } - /** - * Incremental storage health status callback, used to listen for monitoring changes and update - * package setting. - */ - private class IncrementalHealthListener extends IStorageHealthListener.Stub { - private final String mPackageName; - IncrementalHealthListener(String packageName) { - mPackageName = packageName; - } - - @Override - public void onHealthStatus(int storageId, int status) throws RemoteException { - final PackageSetting ps; - synchronized (mLock) { - ps = mSettings.getPackageLPr(mPackageName); - } - if (ps == null) { - return; - } - ps.setStorageHealthStatus(status); - } - } - @Nullable PackageSetting getPackageSettingForUser(String packageName, int callingUid, int userId) { final PackageSetting ps; @@ -20807,8 +20705,7 @@ public class PackageManagerService extends IPackageManager.Stub } private boolean isPackageDeviceAdmin(String packageName, int userId) { - IDevicePolicyManager dpm = IDevicePolicyManager.Stub.asInterface( - ServiceManager.getService(Context.DEVICE_POLICY_SERVICE)); + final IDevicePolicyManager dpm = getDevicePolicyManager(); try { if (dpm != null) { final ComponentName deviceOwnerComponentName = dpm.getDeviceOwnerComponent( @@ -20840,6 +20737,16 @@ public class PackageManagerService extends IPackageManager.Stub return false; } + /** Returns the device policy manager interface. */ + private IDevicePolicyManager getDevicePolicyManager() { + if (mDevicePolicyManager == null) { + // No need to synchronize; worst-case scenario it will be fetched twice. + mDevicePolicyManager = IDevicePolicyManager.Stub.asInterface( + ServiceManager.getService(Context.DEVICE_POLICY_SERVICE)); + } + return mDevicePolicyManager; + } + private boolean shouldKeepUninstalledPackageLPr(String packageName) { return mKeepUninstalledPackages != null && mKeepUninstalledPackages.contains(packageName); } @@ -27305,20 +27212,6 @@ public class PackageManagerService extends IPackageManager.Stub } @Override - public void notifyPackageCrashOrAnr(@NonNull String packageName) { - final PackageSetting ps; - synchronized (mLock) { - ps = mSettings.getPackageLPr(packageName); - if (ps == null) { - Slog.w(TAG, "Failed notifyPackageCrash. Package " + packageName - + " is not installed"); - return; - } - } - ps.setStatesOnCrashOrAnr(); - } - - @Override public void requestChecksums(@NonNull String packageName, boolean includeSplits, @Checksum.Type int optional, @Checksum.Type int required, @Nullable List trustedInstallers, diff --git a/services/core/java/com/android/server/pm/PackageSetting.java b/services/core/java/com/android/server/pm/PackageSetting.java index ca5d2b49b99d..81ea46514d3d 100644 --- a/services/core/java/com/android/server/pm/PackageSetting.java +++ b/services/core/java/com/android/server/pm/PackageSetting.java @@ -344,7 +344,6 @@ public class PackageSetting extends PackageSettingBase { installSource.originatingPackageName); proto.end(sourceToken); } - proto.write(PackageProto.StatesProto.IS_STARTABLE, isPackageStartable()); proto.write(PackageProto.StatesProto.IS_LOADING, isPackageLoading()); writeUsersInfoToProto(proto, PackageProto.USERS); writePackageUserPermissionsProto(proto, PackageProto.USER_PERMISSIONS, users, dataProvider); diff --git a/services/core/java/com/android/server/pm/PackageSettingBase.java b/services/core/java/com/android/server/pm/PackageSettingBase.java index 38e100e80cd3..19b56b75d712 100644 --- a/services/core/java/com/android/server/pm/PackageSettingBase.java +++ b/services/core/java/com/android/server/pm/PackageSettingBase.java @@ -723,13 +723,6 @@ public abstract class PackageSettingBase extends SettingBase { } /** - * @return True if package is startable, false otherwise. - */ - public boolean isPackageStartable() { - return getIncrementalStates().isStartable(); - } - - /** * @return True if package is still being loaded, false if the package is fully loaded. */ public boolean isPackageLoading() { @@ -745,8 +738,8 @@ public abstract class PackageSettingBase extends SettingBase { /** * Called to indicate that the package installation has been committed. This will create a - * new startable state and a new loading state with default values. By default, the package is - * startable after commit. For a package installed on Incremental, the loading state is true. + * new loading state with default values. + * For a package installed on Incremental, the loading state is true. * For non-Incremental packages, the loading state is false. */ public void setStatesOnCommit() { @@ -754,15 +747,7 @@ public abstract class PackageSettingBase extends SettingBase { } /** - * Called to indicate that the running app has crashed or ANR'd. This might change the startable - * state of the package, depending on whether the package is fully loaded. - */ - public void setStatesOnCrashOrAnr() { - incrementalStates.onCrashOrAnr(); - } - - /** - * Called to set the callback to listen for startable state changes. + * Called to set the callback to listen for loading state changes. */ public void setIncrementalStatesCallback(IncrementalStates.Callback callback) { incrementalStates.setCallback(callback); @@ -776,13 +761,6 @@ public abstract class PackageSettingBase extends SettingBase { incrementalStates.setProgress(progress); } - /** - * @see IncrementalStates#onStorageHealthStatusChanged(int) - */ - public void setStorageHealthStatus(int status) { - incrementalStates.onStorageHealthStatusChanged(status); - } - public long getFirstInstallTime() { return firstInstallTime; } diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index 24f393070623..e409019e0da6 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -2698,9 +2698,6 @@ public final class Settings implements Watchable, Snappable { if (pkg.forceQueryableOverride) { serializer.attributeBoolean(null, "forceQueryable", true); } - if (pkg.isPackageStartable()) { - serializer.attributeBoolean(null, "isStartable", true); - } if (pkg.isPackageLoading()) { serializer.attributeBoolean(null, "isLoading", true); } @@ -3459,7 +3456,6 @@ public final class Settings implements Watchable, Snappable { PackageSetting packageSetting = null; long versionCode = 0; boolean installedForceQueryable = false; - boolean isStartable = false; boolean isLoading = false; float loadingProgress = 0; UUID domainSetId; @@ -3479,7 +3475,6 @@ public final class Settings implements Watchable, Snappable { cpuAbiOverrideString = parser.getAttributeValue(null, "cpuAbiOverride"); updateAvailable = parser.getAttributeBoolean(null, "updateAvailable", false); installedForceQueryable = parser.getAttributeBoolean(null, "forceQueryable", false); - isStartable = parser.getAttributeBoolean(null, "isStartable", false); isLoading = parser.getAttributeBoolean(null, "isLoading", false); loadingProgress = parser.getAttributeFloat(null, "loadingProgress", 0); @@ -3638,8 +3633,7 @@ public final class Settings implements Watchable, Snappable { packageSetting.secondaryCpuAbiString = secondaryCpuAbiString; packageSetting.updateAvailable = updateAvailable; packageSetting.forceQueryableOverride = installedForceQueryable; - packageSetting.incrementalStates = new IncrementalStates(isStartable, isLoading, - loadingProgress); + packageSetting.incrementalStates = new IncrementalStates(isLoading, loadingProgress); // Handle legacy string here for single-user mode final String enabledStr = parser.getAttributeValue(null, ATTR_ENABLED); if (enabledStr != null) { diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java index c6d98e768ce3..ada65860018a 100644 --- a/services/core/java/com/android/server/pm/ShortcutPackage.java +++ b/services/core/java/com/android/server/pm/ShortcutPackage.java @@ -92,6 +92,7 @@ import java.util.concurrent.CompletableFuture; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; +import java.util.stream.Collectors; /** * Package information used by {@link ShortcutService}. @@ -218,10 +219,12 @@ class ShortcutPackage extends ShortcutPackageItem { getPackageName(), getPackageUserId()); } + private boolean isAppSearchEnabled() { + return mShortcutUser.mService.isAppSearchEnabled(); + } + public int getShortcutCount() { - final int[] count = new int[1]; - forEachShortcut(si -> count[0]++); - return count[0]; + return mShortcuts.size(); } @Override @@ -441,15 +444,18 @@ class ShortcutPackage extends ShortcutPackageItem { } forceReplaceShortcutInner(newShortcut); - mShortcutUser.mService.injectPostToHandler(() -> awaitInAppSearch("reportUsage", - session -> { - final AndroidFuture<Boolean> future = new AndroidFuture<>(); - session.reportUsage( - new ReportUsageRequest.Builder(getPackageName()) - .setUri(newShortcut.getId()).build(), - mShortcutUser.mExecutor, result -> future.complete(result.isSuccess())); - return future; - })); + if (isAppSearchEnabled()) { + mShortcutUser.mService.injectPostToHandler(() -> awaitInAppSearch("reportUsage", + session -> { + final AndroidFuture<Boolean> future = new AndroidFuture<>(); + session.reportUsage( + new ReportUsageRequest.Builder(getPackageName()) + .setUri(newShortcut.getId()).build(), + mShortcutUser.mExecutor, + result -> future.complete(result.isSuccess())); + return future; + })); + } return deleted; } @@ -721,7 +727,7 @@ class ShortcutPackage extends ShortcutPackageItem { // If not reset yet, then reset. if (mLastResetTime < last) { - if (ShortcutService.DEBUG) { + if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) { Slog.d(TAG, String.format("%s: last reset=%d, now=%d, last=%d: resetting", getPackageName(), mLastResetTime, now, last)); } @@ -959,7 +965,7 @@ class ShortcutPackage extends ShortcutPackageItem { * the app's Xml resource. */ int getSharingShortcutCount() { - if (getShortcutCount() == 0 || mShareTargets.isEmpty()) { + if (mShareTargets.isEmpty()) { return 0; } @@ -1101,7 +1107,7 @@ class ShortcutPackage extends ShortcutPackageItem { } final int manifestShortcutSize = newManifestShortcutList == null ? 0 : newManifestShortcutList.size(); - if (ShortcutService.DEBUG) { + if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) { Slog.d(TAG, String.format("Package %s has %d manifest shortcut(s), and %d share target(s)", getPackageName(), manifestShortcutSize, mShareTargets.size())); @@ -1113,7 +1119,7 @@ class ShortcutPackage extends ShortcutPackageItem { // disabled. return false; } - if (ShortcutService.DEBUG) { + if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) { Slog.d(TAG, String.format("Package %s %s, version %d -> %d", getPackageName(), (isNewApp ? "added" : "updated"), getPackageInfo().getVersionCode(), pi.getLongVersionCode())); @@ -1202,7 +1208,7 @@ class ShortcutPackage extends ShortcutPackageItem { } private boolean publishManifestShortcuts(List<ShortcutInfo> newManifestShortcutList) { - if (ShortcutService.DEBUG) { + if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) { Slog.d(TAG, String.format( "Package %s: publishing manifest shortcuts", getPackageName())); } @@ -1699,7 +1705,7 @@ class ShortcutPackage extends ShortcutPackageItem { final int size = mShortcuts.size(); final int shareTargetSize = mShareTargets.size(); - if (size == 0 && shareTargetSize == 0 && mApiCallCount == 0 && getShortcutCount() == 0) { + if (size == 0 && shareTargetSize == 0 && mApiCallCount == 0) { return; // nothing to write. } @@ -1879,7 +1885,7 @@ class ShortcutPackage extends ShortcutPackageItem { final int depth = parser.getDepth(); final String tag = parser.getName(); - if (ShortcutService.DEBUG_LOAD) { + if (ShortcutService.DEBUG_LOAD || ShortcutService.DEBUG_REBOOT) { Slog.d(TAG, String.format("depth=%d type=%d name=%s", depth, type, tag)); } if ((depth == 1) && TAG_ROOT.equals(tag)) { @@ -2015,7 +2021,7 @@ class ShortcutPackage extends ShortcutPackageItem { } final int depth = parser.getDepth(); final String tag = parser.getName(); - if (ShortcutService.DEBUG_LOAD) { + if (ShortcutService.DEBUG_LOAD || ShortcutService.DEBUG_REBOOT) { Slog.d(TAG, String.format(" depth=%d type=%d name=%s", depth, type, tag)); } @@ -2099,7 +2105,7 @@ class ShortcutPackage extends ShortcutPackageItem { } final int depth = parser.getDepth(); final String tag = parser.getName(); - if (ShortcutService.DEBUG_LOAD) { + if (ShortcutService.DEBUG_LOAD || ShortcutService.DEBUG_REBOOT) { Slog.d(TAG, String.format(" depth=%d type=%d name=%s", depth, type, tag)); } @@ -2253,6 +2259,9 @@ class ShortcutPackage extends ShortcutPackageItem { } void updateVisibility(String packageName, byte[] certificate, boolean visible) { + if (!isAppSearchEnabled()) { + return; + } if (visible) { mPackageIdentifiers.put(packageName, new PackageIdentifier(packageName, certificate)); } else { @@ -2286,6 +2295,14 @@ class ShortcutPackage extends ShortcutPackageItem { private void saveShortcut(@NonNull final Collection<ShortcutInfo> shortcuts) { Objects.requireNonNull(shortcuts); + if (!isAppSearchEnabled()) { + // If AppSearch isn't enabled, save it in memory and we are done. + for (ShortcutInfo si : shortcuts) { + mShortcuts.put(si.getId(), si); + } + return; + } + // Otherwise, save pinned shortcuts in memory. shortcuts.forEach(si -> { if (si.isPinned()) { mShortcuts.put(si.getId(), si); @@ -2293,15 +2310,22 @@ class ShortcutPackage extends ShortcutPackageItem { mShortcuts.remove(si.getId()); } }); + // Then proceed to app search. saveToAppSearch(shortcuts); } private void saveToAppSearch(@NonNull final Collection<ShortcutInfo> shortcuts) { Objects.requireNonNull(shortcuts); - if (shortcuts.isEmpty()) { + if (!isAppSearchEnabled() || shortcuts.isEmpty()) { // No need to invoke AppSearch when there's nothing to save. return; } + if (ShortcutService.DEBUG_REBOOT) { + Slog.d(TAG, "Saving shortcuts for user=" + mShortcutUser.getUserId() + + " pkg=" + getPackageName() + " ids=[" + + shortcuts.stream().map(ShortcutInfo::getId) + .collect(Collectors.joining(",")) + "]"); + } awaitInAppSearch("Saving shortcuts", session -> { final AndroidFuture<Boolean> future = new AndroidFuture<>(); session.put(new PutDocumentsRequest.Builder() @@ -2328,6 +2352,9 @@ class ShortcutPackage extends ShortcutPackageItem { * Removes shortcuts from AppSearch. */ void removeShortcuts() { + if (!isAppSearchEnabled()) { + return; + } awaitInAppSearch("Removing all shortcuts from " + getPackageName(), session -> { final AndroidFuture<Boolean> future = new AndroidFuture<>(); session.remove("", getSearchSpec(), mShortcutUser.mExecutor, result -> { @@ -2345,6 +2372,9 @@ class ShortcutPackage extends ShortcutPackageItem { private void removeShortcut(@NonNull final String id) { Objects.requireNonNull(id); mShortcuts.remove(id); + if (!isAppSearchEnabled()) { + return; + } awaitInAppSearch("Removing shortcut with id=" + id, session -> { final AndroidFuture<Boolean> future = new AndroidFuture<>(); session.remove(new RemoveByUriRequest.Builder(getPackageName()).addUris(id).build(), @@ -2374,6 +2404,20 @@ class ShortcutPackage extends ShortcutPackageItem { shortcutIds.add(id); } } + if (!isAppSearchEnabled()) { + final List<ShortcutInfo> ret = new ArrayList<>(1); + for (int i = mShortcuts.size() - 1; i >= 0; i--) { + ShortcutInfo si = mShortcuts.valueAt(i); + if (shortcutIds.contains(si.getId())) { + ret.add(si); + } + } + return ret; + } + if (ShortcutService.DEBUG_REBOOT) { + Slog.d(TAG, "Getting shortcuts for user=" + mShortcutUser.getUserId() + + " pkg=" + getPackageName() + " ids: [" + String.join(",", ids) + "]"); + } return awaitInAppSearch("Getting shortcut by id", session -> { final AndroidFuture<List<ShortcutInfo>> future = new AndroidFuture<>(); session.getByUri( @@ -2418,6 +2462,17 @@ class ShortcutPackage extends ShortcutPackageItem { private void forEachShortcutMutateIf(@NonNull final String query, @NonNull final Function<ShortcutInfo, Boolean> cb) { + if (!isAppSearchEnabled()) { + for (int i = mShortcuts.size() - 1; i >= 0; i--) { + ShortcutInfo si = mShortcuts.valueAt(i); + cb.apply(si); + } + return; + } + if (ShortcutService.DEBUG_REBOOT) { + Slog.d(TAG, "Changing shortcuts for user=" + mShortcutUser.getUserId() + + " pkg=" + getPackageName()); + } final SearchResults res = awaitInAppSearch("Mutating shortcuts", session -> AndroidFuture.completedFuture(session.search(query, getSearchSpec()))); if (res == null) return; @@ -2439,6 +2494,19 @@ class ShortcutPackage extends ShortcutPackageItem { private void forEachShortcutStopWhen( @NonNull final String query, @NonNull final Function<ShortcutInfo, Boolean> cb) { + if (!isAppSearchEnabled()) { + for (int i = mShortcuts.size() - 1; i >= 0; i--) { + final ShortcutInfo si = mShortcuts.valueAt(i); + if (cb.apply(si)) { + return; + } + } + return; + } + if (ShortcutService.DEBUG_REBOOT) { + Slog.d(TAG, "Iterating shortcuts for user=" + mShortcutUser.getUserId() + + " pkg=" + getPackageName()); + } final SearchResults res = awaitInAppSearch("Iterating shortcuts", session -> AndroidFuture.completedFuture(session.search(query, getSearchSpec()))); if (res == null) return; @@ -2452,6 +2520,10 @@ class ShortcutPackage extends ShortcutPackageItem { } private List<ShortcutInfo> getNextPage(@NonNull final SearchResults res) { + if (ShortcutService.DEBUG_REBOOT) { + Slog.d(TAG, "Get next page for search result for user=" + mShortcutUser.getUserId() + + " pkg=" + getPackageName()); + } final AndroidFuture<List<ShortcutInfo>> future = new AndroidFuture<>(); final List<ShortcutInfo> ret = new ArrayList<>(); final long callingIdentity = Binder.clearCallingIdentity(); @@ -2494,6 +2566,10 @@ class ShortcutPackage extends ShortcutPackageItem { final boolean forceReset, @NonNull final String description, @NonNull final Function<AppSearchSession, CompletableFuture<T>> cb) { + if (!isAppSearchEnabled()) { + throw new IllegalStateException( + "awaitInAppSearch called when app search integration is disabled"); + } synchronized (mLock) { final StrictMode.ThreadPolicy oldPolicy = StrictMode.getThreadPolicy(); final long callingIdentity = Binder.clearCallingIdentity(); @@ -2529,6 +2605,10 @@ class ShortcutPackage extends ShortcutPackageItem { @NonNull private AndroidFuture<AppSearchSession> setupSchema( @NonNull final AppSearchSession session) { + if (ShortcutService.DEBUG_REBOOT) { + Slog.d(TAG, "Setup Schema for user=" + mShortcutUser.getUserId() + + " pkg=" + getPackageName()); + } SetSchemaRequest.Builder schemaBuilder = new SetSchemaRequest.Builder() .addSchemas(AppSearchPerson.SCHEMA, AppSearchShortcutInfo.SCHEMA) .setForceOverride(true); @@ -2569,6 +2649,15 @@ class ShortcutPackage extends ShortcutPackageItem { } private void restoreParsedShortcuts(final boolean replace) { + if (ShortcutService.DEBUG_REBOOT) { + if (replace) { + Slog.d(TAG, "Replacing all shortcuts with the ones parsed from xml for user=" + + mShortcutUser.getUserId() + " pkg=" + getPackageName()); + } else { + Slog.d(TAG, "Restoring pinned shortcuts from xml for user=" + + mShortcutUser.getUserId() + " pkg=" + getPackageName()); + } + } if (replace) { removeShortcuts(); } diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java index dcf730d4a0fd..ee3335fba915 100644 --- a/services/core/java/com/android/server/pm/ShortcutService.java +++ b/services/core/java/com/android/server/pm/ShortcutService.java @@ -15,6 +15,8 @@ */ package com.android.server.pm; +import static android.provider.DeviceConfig.NAMESPACE_SYSTEMUI; + import android.Manifest.permission; import android.annotation.IntDef; import android.annotation.NonNull; @@ -85,6 +87,7 @@ import android.os.ShellCallback; import android.os.ShellCommand; import android.os.SystemClock; import android.os.UserHandle; +import android.provider.DeviceConfig; import android.text.TextUtils; import android.text.format.TimeMigrationUtils; import android.util.ArraySet; @@ -104,6 +107,7 @@ import android.view.IWindowManager; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import com.android.internal.infra.AndroidFuture; import com.android.internal.logging.MetricsLogger; import com.android.internal.os.BackgroundThread; @@ -164,6 +168,7 @@ public class ShortcutService extends IShortcutService.Stub { static final boolean DEBUG = false; // STOPSHIP if true static final boolean DEBUG_LOAD = false; // STOPSHIP if true static final boolean DEBUG_PROCSTATE = false; // STOPSHIP if true + static final boolean DEBUG_REBOOT = true; @VisibleForTesting static final long DEFAULT_RESET_INTERVAL_SEC = 24 * 60 * 60; // 1 day @@ -446,6 +451,8 @@ public class ShortcutService extends IShortcutService.Stub { @GuardedBy("mLock") private final MetricsLogger mMetricsLogger = new MetricsLogger(); + private final boolean mIsAppSearchEnabled; + static class InvalidFileFormatException extends Exception { public InvalidFileFormatException(String message, Throwable cause) { super(message, cause); @@ -480,6 +487,8 @@ public class ShortcutService extends IShortcutService.Stub { mShortcutRequestPinProcessor = new ShortcutRequestPinProcessor(this, mLock); mShortcutBitmapSaver = new ShortcutBitmapSaver(this); mShortcutDumpFiles = new ShortcutDumpFiles(this); + mIsAppSearchEnabled = DeviceConfig.getBoolean(NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.SHORTCUT_APPSEARCH_INTEGRATION, false); if (onlyForPackageManagerApis) { return; // Don't do anything further. For unit tests only. @@ -517,6 +526,10 @@ public class ShortcutService extends IShortcutService.Stub { injectRegisterRoleHoldersListener(mOnRoleHoldersChangedListener); } + boolean isAppSearchEnabled() { + return mIsAppSearchEnabled; + } + long getStatStartTime() { return mStatLogger.getTime(); } @@ -659,7 +672,7 @@ public class ShortcutService extends IShortcutService.Stub { /** lifecycle event */ void onBootPhase(int phase) { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "onBootPhase: " + phase); } switch (phase) { @@ -674,7 +687,7 @@ public class ShortcutService extends IShortcutService.Stub { /** lifecycle event */ void handleUnlockUser(int userId) { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "handleUnlockUser: user=" + userId); } synchronized (mUnlockedUsers) { @@ -699,7 +712,7 @@ public class ShortcutService extends IShortcutService.Stub { /** lifecycle event */ void handleStopUser(int userId) { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "handleStopUser: user=" + userId); } synchronized (mLock) { @@ -713,7 +726,7 @@ public class ShortcutService extends IShortcutService.Stub { @GuardedBy("mLock") private void unloadUserLocked(int userId) { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "unloadUserLocked: user=" + userId); } // Save all dirty information. @@ -945,7 +958,7 @@ public class ShortcutService extends IShortcutService.Stub { @VisibleForTesting void saveBaseStateLocked() { final AtomicFile file = getBaseStateFile(); - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "Saving to " + file.getBaseFile()); } @@ -978,7 +991,7 @@ public class ShortcutService extends IShortcutService.Stub { mRawLastResetTime = 0; final AtomicFile file = getBaseStateFile(); - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "Loading from " + file.getBaseFile()); } try (FileInputStream in = file.openRead()) { @@ -1028,7 +1041,7 @@ public class ShortcutService extends IShortcutService.Stub { @GuardedBy("mLock") private void saveUserLocked(@UserIdInt int userId) { final File path = getUserFile(userId); - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "Saving to " + path); } @@ -1086,7 +1099,7 @@ public class ShortcutService extends IShortcutService.Stub { @Nullable private ShortcutUser loadUserLocked(@UserIdInt int userId) { final File path = getUserFile(userId); - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "Loading from " + path); } final AtomicFile file = new AtomicFile(path); @@ -1095,7 +1108,7 @@ public class ShortcutService extends IShortcutService.Stub { try { in = file.openRead(); } catch (FileNotFoundException e) { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "Not found " + path); } return null; @@ -1132,7 +1145,7 @@ public class ShortcutService extends IShortcutService.Stub { final int depth = parser.getDepth(); final String tag = parser.getName(); - if (DEBUG_LOAD) { + if (DEBUG_LOAD || DEBUG_REBOOT) { Slog.d(TAG, String.format("depth=%d type=%d name=%s", depth, type, tag)); } @@ -1157,7 +1170,7 @@ public class ShortcutService extends IShortcutService.Stub { private final Runnable mSaveDirtyInfoRunner = this::saveDirtyInfo; private void scheduleSaveInner(@UserIdInt int userId) { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "Scheduling to save for " + userId); } synchronized (mLock) { @@ -1172,7 +1185,7 @@ public class ShortcutService extends IShortcutService.Stub { @VisibleForTesting void saveDirtyInfo() { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "saveDirtyInfo"); } if (mShutdown.get()) { @@ -2942,6 +2955,10 @@ public class ShortcutService extends IShortcutService.Stub { @Nullable String packageName, @Nullable List<String> shortcutIds, @Nullable List<LocusId> locusIds, @Nullable ComponentName componentName, int queryFlags, int userId, int callingPid, int callingUid) { + if (DEBUG_REBOOT) { + Slog.d(TAG, "Getting shortcuts for launcher= " + callingPackage + + "user=" + userId + " pkg=" + packageName); + } final ArrayList<ShortcutInfo> ret = new ArrayList<>(); int flags = ShortcutInfo.CLONE_REMOVE_FOR_LAUNCHER; @@ -3639,7 +3656,7 @@ public class ShortcutService extends IShortcutService.Stub { */ @VisibleForTesting void checkPackageChanges(@UserIdInt int ownerUserId) { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "checkPackageChanges() ownerUserId=" + ownerUserId); } if (injectIsSafeModeEnabled()) { @@ -3685,6 +3702,9 @@ public class ShortcutService extends IShortcutService.Stub { @GuardedBy("mLock") private void rescanUpdatedPackagesLocked(@UserIdInt int userId, long lastScanTime) { + if (DEBUG_REBOOT) { + Slog.d(TAG, "rescan updated package user=" + userId + " last scanned=" + lastScanTime); + } final ShortcutUser user = getUserShortcutsLocked(userId); // Note after each OTA, we'll need to rescan all system apps, as their lastUpdateTime @@ -3708,7 +3728,7 @@ public class ShortcutService extends IShortcutService.Stub { } private void handlePackageAdded(String packageName, @UserIdInt int userId) { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, String.format("handlePackageAdded: %s user=%d", packageName, userId)); } synchronized (mLock) { @@ -3720,7 +3740,7 @@ public class ShortcutService extends IShortcutService.Stub { } private void handlePackageUpdateFinished(String packageName, @UserIdInt int userId) { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, String.format("handlePackageUpdateFinished: %s user=%d", packageName, userId)); } @@ -3736,7 +3756,7 @@ public class ShortcutService extends IShortcutService.Stub { } private void handlePackageRemoved(String packageName, @UserIdInt int packageUserId) { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, String.format("handlePackageRemoved: %s user=%d", packageName, packageUserId)); } @@ -3746,7 +3766,7 @@ public class ShortcutService extends IShortcutService.Stub { } private void handlePackageDataCleared(String packageName, int packageUserId) { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, String.format("handlePackageDataCleared: %s user=%d", packageName, packageUserId)); } @@ -3761,7 +3781,7 @@ public class ShortcutService extends IShortcutService.Stub { handlePackageRemoved(packageName, packageUserId); return; } - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, String.format("handlePackageChanged: %s user=%d", packageName, packageUserId)); } @@ -3948,7 +3968,7 @@ public class ShortcutService extends IShortcutService.Stub { private void forUpdatedPackages(@UserIdInt int userId, long lastScanTime, boolean afterOta, Consumer<ApplicationInfo> callback) { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "forUpdatedPackages for user " + userId + ", lastScanTime=" + lastScanTime + " afterOta=" + afterOta); } @@ -3960,7 +3980,7 @@ public class ShortcutService extends IShortcutService.Stub { // Also if it's right after an OTA, always re-scan all apps anyway, since the // shortcut parser might have changed. if (afterOta || (pi.lastUpdateTime >= lastScanTime)) { - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "Found updated package " + pi.packageName + " updateTime=" + pi.lastUpdateTime); } @@ -4313,7 +4333,7 @@ public class ShortcutService extends IShortcutService.Stub { @Override public void applyRestore(byte[] payload, @UserIdInt int userId) { enforceSystem(); - if (DEBUG) { + if (DEBUG || DEBUG_REBOOT) { Slog.d(TAG, "Restoring user " + userId); } synchronized (mLock) { diff --git a/services/core/java/com/android/server/pm/ShortcutUser.java b/services/core/java/com/android/server/pm/ShortcutUser.java index 069944d955ea..e66cb03950cc 100644 --- a/services/core/java/com/android/server/pm/ShortcutUser.java +++ b/services/core/java/com/android/server/pm/ShortcutUser.java @@ -328,6 +328,10 @@ class ShortcutUser { public void rescanPackageIfNeeded(@NonNull String packageName, boolean forceRescan) { final boolean isNewApp = !mPackages.containsKey(packageName); + if (ShortcutService.DEBUG_REBOOT) { + Slog.d(TAG, "rescanPackageIfNeeded " + getUserId() + "@" + packageName + + ", forceRescan=" + forceRescan + " , isNewApp=" + isNewApp); + } final ShortcutPackage shortcutPackage = getPackageShortcuts(packageName); @@ -397,7 +401,7 @@ class ShortcutUser { } else { // Save each ShortcutPackageItem in a separate Xml file. final File path = getShortcutPackageItemFile(spi); - if (ShortcutService.DEBUG) { + if (ShortcutService.DEBUG || ShortcutService.DEBUG_REBOOT) { Slog.d(TAG, "Saving package item " + spi.getPackageName() + " to " + path); } diff --git a/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java b/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java index fd9aa3e07b25..b1676d0e545f 100644 --- a/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java +++ b/services/core/java/com/android/server/pm/permission/LegacyPermissionManagerService.java @@ -21,9 +21,11 @@ import android.annotation.Nullable; import android.app.AppOpsManager; import android.app.admin.DevicePolicyManager; import android.content.Context; +import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.content.pm.PackageManagerInternal; import android.os.Binder; +import android.os.Build; import android.os.Process; import android.os.ServiceManager; import android.os.UserHandle; @@ -87,19 +89,7 @@ public class LegacyPermissionManagerService extends ILegacyPermissionManager.Stu @Override public int checkDeviceIdentifierAccess(@Nullable String packageName, @Nullable String message, @Nullable String callingFeatureId, int pid, int uid) { - // If the check is being requested by an app then only allow the app to query its own - // access status. - int callingUid = mInjector.getCallingUid(); - int callingPid = mInjector.getCallingPid(); - if (UserHandle.getAppId(callingUid) >= Process.FIRST_APPLICATION_UID && (callingUid != uid - || callingPid != pid)) { - String response = String.format( - "Calling uid %d, pid %d cannot check device identifier access for package %s " - + "(uid=%d, pid=%d)", - callingUid, callingPid, packageName, uid, pid); - Log.w(TAG, response); - throw new SecurityException(response); - } + verifyCallerCanCheckAccess(packageName, message, pid, uid); // Allow system and root access to the device identifiers. final int appId = UserHandle.getAppId(uid); if (appId == Process.SYSTEM_UID || appId == Process.ROOT_UID) { @@ -138,6 +128,110 @@ public class LegacyPermissionManagerService extends ILegacyPermissionManager.Stu } @Override + public int checkPhoneNumberAccess(@Nullable String packageName, @Nullable String message, + @Nullable String callingFeatureId, int pid, int uid) { + verifyCallerCanCheckAccess(packageName, message, pid, uid); + if (mInjector.checkPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, pid, + uid) == PackageManager.PERMISSION_GRANTED) { + // Skip checking for runtime permission since caller has privileged permission + return PackageManager.PERMISSION_GRANTED; + } + // if the packageName is null then just return now as the rest of the checks require a + // valid package name. + if (packageName == null) { + return PackageManager.PERMISSION_DENIED; + } + // If the target SDK version is below R then also check for READ_PHONE_STATE; prior to R + // the phone number was accessible with the READ_PHONE_STATE permission granted. + boolean preR = false; + int result = PackageManager.PERMISSION_DENIED; + try { + ApplicationInfo info = mInjector.getApplicationInfo(packageName, uid); + preR = info.targetSdkVersion <= Build.VERSION_CODES.Q; + } catch (PackageManager.NameNotFoundException nameNotFoundException) { + } + if (preR) { + // For target SDK < R if the READ_PHONE_STATE permission is granted but the appop + // is not granted then the caller should receive null / empty data instead of a + // potentially crashing SecurityException. Save the result of the READ_PHONE_STATE + // permission / appop check; if both do not pass then first check if the app meets + // any of the other requirements for access, if not then return the result of this + // check. + result = checkPermissionAndAppop(packageName, + android.Manifest.permission.READ_PHONE_STATE, + AppOpsManager.OPSTR_READ_PHONE_STATE, callingFeatureId, message, pid, uid); + if (result == PackageManager.PERMISSION_GRANTED) { + return result; + } + } + // Default SMS app can always read it. + if (checkPermissionAndAppop(packageName, null, AppOpsManager.OPSTR_WRITE_SMS, + callingFeatureId, message, pid, uid) == PackageManager.PERMISSION_GRANTED) { + return PackageManager.PERMISSION_GRANTED; + } + // Can be read with READ_PHONE_NUMBERS too. + if (checkPermissionAndAppop(packageName, android.Manifest.permission.READ_PHONE_NUMBERS, + AppOpsManager.OPSTR_READ_PHONE_NUMBERS, callingFeatureId, message, pid, uid) + == PackageManager.PERMISSION_GRANTED) { + return PackageManager.PERMISSION_GRANTED; + } + // Can be read with READ_SMS too. + if (checkPermissionAndAppop(packageName, android.Manifest.permission.READ_SMS, + AppOpsManager.OPSTR_READ_SMS, callingFeatureId, message, pid, uid) + == PackageManager.PERMISSION_GRANTED) { + return PackageManager.PERMISSION_GRANTED; + } + return result; + } + + private void verifyCallerCanCheckAccess(String packageName, String message, int pid, int uid) { + // If the check is being requested by an app then only allow the app to query its own + // access status. + int callingUid = mInjector.getCallingUid(); + int callingPid = mInjector.getCallingPid(); + if (UserHandle.getAppId(callingUid) >= Process.FIRST_APPLICATION_UID && (callingUid != uid + || callingPid != pid)) { + String response = String.format( + "Calling uid %d, pid %d cannot access for package %s (uid=%d, pid=%d): %s", + callingUid, callingPid, packageName, uid, pid, message); + Log.w(TAG, response); + throw new SecurityException(response); + } + } + + /** + * Returns whether the specified {@code packageName} with {@code pid} and {@code uid} has been + * granted the provided {@code permission} and {@code appop}, using the {@code callingFeatureId} + * and {@code message} for the {@link + * AppOpsManager#noteOpNoThrow(int, int, String, String, String)} call. + + * @return <ul> + * <li>{@link PackageManager#PERMISSION_GRANTED} if both the permission and the appop + * are granted to the package</li> + * <li>{@link android.app.AppOpsManager#MODE_IGNORED} if the permission is granted to the + * package but the appop is not</li> + * <li>{@link PackageManager#PERMISSION_DENIED} if the permission is not granted to the + * package</li> + * </ul> + */ + private int checkPermissionAndAppop(String packageName, String permission, String appop, + String callingFeatureId, String message, int pid, int uid) { + if (permission != null) { + if (mInjector.checkPermission(permission, pid, uid) + != PackageManager.PERMISSION_GRANTED) { + return PackageManager.PERMISSION_DENIED; + } + } + AppOpsManager appOpsManager = (AppOpsManager) mInjector.getSystemService( + Context.APP_OPS_SERVICE); + if (appOpsManager.noteOpNoThrow(appop, uid, packageName, callingFeatureId, message) + != AppOpsManager.MODE_ALLOWED) { + return AppOpsManager.MODE_IGNORED; + } + return PackageManager.PERMISSION_GRANTED; + } + + @Override public void grantDefaultPermissionsToActiveLuiApp(String packageName, int userId) { final int callingUid = Binder.getCallingUid(); PackageManagerServiceUtils.enforceSystemOrPhoneCaller( @@ -348,5 +442,16 @@ public class LegacyPermissionManagerService extends ILegacyPermissionManager.Stu public Object getSystemService(@NonNull String name) { return mContext.getSystemService(name); } + + /** + * Returns the {@link ApplicationInfo} for the specified {@code packageName} under the + * provided {@code uid}. + */ + public ApplicationInfo getApplicationInfo(@Nullable String packageName, int uid) + throws PackageManager.NameNotFoundException { + + return mContext.getPackageManager().getApplicationInfoAsUser(packageName, 0, + UserHandle.getUserHandleForUid(uid)); + } } } diff --git a/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java b/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java index cd7f6854a37d..6f6bdac61fad 100644 --- a/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java +++ b/services/core/java/com/android/server/policy/DeviceStateProviderImpl.java @@ -394,13 +394,13 @@ public final class DeviceStateProviderImpl implements DeviceStateProvider, throw new IllegalStateException("Have not received sensor event."); } - if (latestEvent.values.length != mExpectedValues.size()) { + if (latestEvent.values.length < mExpectedValues.size()) { throw new RuntimeException("Number of supplied numeric range(s) does not " + "match the number of values in the latest sensor event for sensor: " + mSensor); } - for (int i = 0; i < latestEvent.values.length; i++) { + for (int i = 0; i < mExpectedValues.size(); i++) { if (!adheresToRange(latestEvent.values[i], mExpectedValues.get(i))) { return false; } diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java index a7e2d1dcceec..a82c91e2352b 100644 --- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java @@ -1,5 +1,5 @@ /* - * Copyright (C) 2020 The Android Open Source Project + * Copyright 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. @@ -432,6 +432,7 @@ public class StatsPullAtomService extends SystemService { mContext = context; } + private native void initializeNativePullers(); /** * Use of this StatsPullAtomCallbackImpl means we avoid one class per tagId, which we would * get if we used lambdas. @@ -713,6 +714,7 @@ public class StatsPullAtomService extends SystemService { super.onBootPhase(phase); if (phase == PHASE_SYSTEM_SERVICES_READY) { BackgroundThread.getHandler().post(() -> { + initializeNativePullers(); // Initialize pullers that need JNI. initializePullersState(); registerPullers(); registerEventListeners(); diff --git a/services/core/java/com/android/server/timedetector/ServerFlags.java b/services/core/java/com/android/server/timedetector/ServerFlags.java index fda0e3cd947c..7145f5ea4a64 100644 --- a/services/core/java/com/android/server/timedetector/ServerFlags.java +++ b/services/core/java/com/android/server/timedetector/ServerFlags.java @@ -30,7 +30,9 @@ import com.android.server.timezonedetector.ServiceConfigAccessor; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import java.time.DateTimeException; import java.time.Duration; +import java.time.Instant; import java.util.Map; import java.util.Objects; import java.util.Optional; @@ -62,6 +64,8 @@ public final class ServerFlags { KEY_LOCATION_TIME_ZONE_DETECTION_UNCERTAINTY_DELAY_MILLIS, KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE, KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT, + KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE, + KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE, }) @Retention(RetentionPolicy.SOURCE) @interface DeviceConfigKey {} @@ -144,6 +148,14 @@ public final class ServerFlags { public static final String KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE = "time_detector_origin_priorities_override"; + /** + * The key to override the time detector lower bound configuration. The values is the number of + * milliseconds since the beginning of the Unix epoch. + */ + @DeviceConfigKey + public static final String KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE = + "time_detector_lower_bound_millis_override"; + @GuardedBy("mListeners") private final ArrayMap<ConfigurationChangeListener, Set<String>> mListeners = new ArrayMap<>(); @@ -231,6 +243,25 @@ public final class ServerFlags { } /** + * Returns an {@link Instant} from {@link DeviceConfig} from the system_time + * namespace, returns the {@code defaultValue} if the value is missing or invalid. + */ + @NonNull + public Optional<Instant> getOptionalInstant(@DeviceConfigKey String key) { + String value = DeviceConfig.getProperty(NAMESPACE_SYSTEM_TIME, key); + if (value == null) { + return Optional.empty(); + } + + try { + long millis = Long.parseLong(value); + return Optional.of(Instant.ofEpochMilli(millis)); + } catch (DateTimeException | NumberFormatException e) { + return Optional.empty(); + } + } + + /** * Returns an optional boolean value from {@link DeviceConfig} from the system_time * namespace, returns {@link Optional#empty()} if there is no explicit value set. */ diff --git a/services/core/java/com/android/server/timedetector/ServiceConfigAccessor.java b/services/core/java/com/android/server/timedetector/ServiceConfigAccessor.java index 381b77e5d1d2..7f7d01c29710 100644 --- a/services/core/java/com/android/server/timedetector/ServiceConfigAccessor.java +++ b/services/core/java/com/android/server/timedetector/ServiceConfigAccessor.java @@ -15,6 +15,7 @@ */ package com.android.server.timedetector; +import static com.android.server.timedetector.ServerFlags.KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE; import static com.android.server.timedetector.ServerFlags.KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE; import static com.android.server.timedetector.TimeDetectorStrategy.ORIGIN_NETWORK; import static com.android.server.timedetector.TimeDetectorStrategy.ORIGIN_TELEPHONY; @@ -63,8 +64,10 @@ final class ServiceConfigAccessor { private static final Instant TIME_LOWER_BOUND_DEFAULT = Instant.ofEpochMilli( Long.max(android.os.Environment.getRootDirectory().lastModified(), Build.TIME)); + /** Device config keys that affect the {@link TimeDetectorService}. */ private static final Set<String> SERVER_FLAGS_KEYS_TO_WATCH = Collections.unmodifiableSet( new ArraySet<>(new String[] { + KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE, KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE, })); @@ -137,8 +140,10 @@ final class ServiceConfigAccessor { return mSystemClockUpdateThresholdMillis; } + @NonNull Instant autoTimeLowerBound() { - return TIME_LOWER_BOUND_DEFAULT; + return mServerFlags.getOptionalInstant(KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE) + .orElse(TIME_LOWER_BOUND_DEFAULT); } /** diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java b/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java index 3cb21aaf85ce..721986bc6e93 100644 --- a/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java +++ b/services/core/java/com/android/server/timedetector/TimeDetectorShellCommand.java @@ -16,8 +16,10 @@ package com.android.server.timedetector; import static android.app.timedetector.TimeDetector.SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED; +import static android.app.timedetector.TimeDetector.SHELL_COMMAND_SERVICE_NAME; import static android.provider.DeviceConfig.NAMESPACE_SYSTEM_TIME; +import static com.android.server.timedetector.ServerFlags.KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE; import static com.android.server.timedetector.ServerFlags.KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE; import android.os.ShellCommand; @@ -60,23 +62,22 @@ class TimeDetectorShellCommand extends ShellCommand { @Override public void onHelp() { final PrintWriter pw = getOutPrintWriter(); - pw.println("Time Detector (time_detector) commands:"); - pw.println(" help"); - pw.println(" Print this help text."); + pw.printf("Time Detector (%s) commands:\n", SHELL_COMMAND_SERVICE_NAME); + pw.printf(" help\n"); + pw.printf(" Print this help text.\n"); pw.printf(" %s\n", SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED); - pw.println(" Prints true/false according to the automatic time detection setting"); + pw.printf(" Prints true/false according to the automatic time detection setting.\n"); pw.println(); pw.printf("This service is also affected by the following device_config flags in the" + " %s namespace:\n", NAMESPACE_SYSTEM_TIME); - pw.printf(" %s - [default=null], a comma separated list of origins. See" - + " TimeDetectorStrategy for details\n", - KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE); + pw.printf(" %s\n", KEY_TIME_DETECTOR_LOWER_BOUND_MILLIS_OVERRIDE); + pw.printf(" The lower bound used to validate time suggestions when they are received." + + "\n"); + pw.printf(" Specified in milliseconds since the start of the Unix epoch.\n"); + pw.printf(" %s\n", KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE); + pw.printf(" A comma separated list of origins. See TimeDetectorStrategy for details.\n"); pw.println(); - pw.println("Example:"); - pw.printf(" $ adb shell cmd device_config put %s %s %s\n", - NAMESPACE_SYSTEM_TIME, KEY_TIME_DETECTOR_ORIGIN_PRIORITIES_OVERRIDE, - "external"); - pw.println("See adb shell cmd device_config for more information."); + pw.printf("See \"adb shell cmd device_config\" for more information on setting flags.\n"); pw.println(); } } diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java index db8a59e0ab26..357c23222658 100644 --- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java +++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java @@ -325,9 +325,9 @@ public final class TimeDetectorStrategyImpl implements TimeDetectorStrategy { ipw.println("mEnvironment.systemClockMillis()=" + mEnvironment.systemClockMillis()); ipw.println("mEnvironment.systemClockUpdateThresholdMillis()=" + mEnvironment.systemClockUpdateThresholdMillis()); + Instant autoTimeLowerBound = mEnvironment.autoTimeLowerBound(); ipw.printf("mEnvironment.autoTimeLowerBound()=%s(%s)\n", - mEnvironment.autoTimeLowerBound(), - mEnvironment.autoTimeLowerBound().toEpochMilli()); + autoTimeLowerBound, autoTimeLowerBound.toEpochMilli()); String priorities = Arrays.stream(mEnvironment.autoOriginPriorities()) .mapToObj(TimeDetectorStrategy::originToString) diff --git a/services/core/java/com/android/server/timezonedetector/ServiceConfigAccessor.java b/services/core/java/com/android/server/timezonedetector/ServiceConfigAccessor.java index dddb11b7e249..4a1d9c40a11c 100644 --- a/services/core/java/com/android/server/timezonedetector/ServiceConfigAccessor.java +++ b/services/core/java/com/android/server/timezonedetector/ServiceConfigAccessor.java @@ -70,6 +70,10 @@ public final class ServiceConfigAccessor { */ public static final @ProviderMode String PROVIDER_MODE_ENABLED = "enabled"; + /** + * Device config keys that affect the {@link TimeZoneDetectorService} service and {@link + * com.android.server.timezonedetector.location.LocationTimeZoneManagerService}. + */ private static final Set<String> SERVER_FLAGS_KEYS_TO_WATCH = Collections.unmodifiableSet( new ArraySet<>(new String[] { ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED, diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java index 8c529c42fc8a..9899b448ba07 100644 --- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java +++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorShellCommand.java @@ -18,12 +18,19 @@ package com.android.server.timezonedetector; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_IS_GEO_DETECTION_ENABLED; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_IS_GEO_DETECTION_SUPPORTED; +import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SERVICE_NAME; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SET_AUTO_DETECTION_ENABLED; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SET_GEO_DETECTION_ENABLED; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SUGGEST_GEO_LOCATION_TIME_ZONE; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SUGGEST_MANUAL_TIME_ZONE; import static android.app.timezonedetector.TimeZoneDetector.SHELL_COMMAND_SUGGEST_TELEPHONY_TIME_ZONE; +import static android.provider.DeviceConfig.NAMESPACE_SYSTEM_TIME; +import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED; +import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT; +import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE; + +import android.app.time.LocationTimeZoneManager; import android.app.time.TimeZoneConfiguration; import android.app.timezonedetector.ManualTimeZoneSuggestion; import android.app.timezonedetector.TelephonyTimeZoneSuggestion; @@ -155,20 +162,21 @@ class TimeZoneDetectorShellCommand extends ShellCommand { @Override public void onHelp() { final PrintWriter pw = getOutPrintWriter(); - pw.println("Time Zone Detector (time_zone_detector) commands:"); - pw.println(" help"); - pw.println(" Print this help text."); + pw.printf("Time Zone Detector (%s) commands:\n", SHELL_COMMAND_SERVICE_NAME); + pw.printf(" help\n"); + pw.printf(" Print this help text.\n"); pw.printf(" %s\n", SHELL_COMMAND_IS_AUTO_DETECTION_ENABLED); - pw.println(" Prints true/false according to the automatic tz detection setting"); + pw.printf(" Prints true/false according to the automatic time zone detection setting\n"); pw.printf(" %s true|false\n", SHELL_COMMAND_SET_AUTO_DETECTION_ENABLED); - pw.println(" Sets the automatic tz detection setting."); + pw.printf(" Sets the automatic time zone detection setting.\n"); pw.printf(" %s\n", SHELL_COMMAND_IS_GEO_DETECTION_SUPPORTED); - pw.println(" Prints true/false according to whether geolocation time zone detection is" - + " supported on this device"); + pw.printf(" Prints true/false according to whether geolocation time zone detection is" + + " supported on this device.\n"); pw.printf(" %s\n", SHELL_COMMAND_IS_GEO_DETECTION_ENABLED); - pw.println(" Prints true/false according to the geolocation tz detection setting"); + pw.printf(" Prints true/false according to the geolocation time zone detection setting." + + "\n"); pw.printf(" %s true|false\n", SHELL_COMMAND_SET_GEO_DETECTION_ENABLED); - pw.println(" Sets the geolocation tz detection setting."); + pw.printf(" Sets the geolocation time zone detection enabled setting.\n"); pw.printf(" %s <geolocation suggestion opts>\n", SHELL_COMMAND_SUGGEST_GEO_LOCATION_TIME_ZONE); pw.printf(" %s <manual suggestion opts>\n", @@ -182,5 +190,27 @@ class TimeZoneDetectorShellCommand extends ShellCommand { pw.println(); TelephonyTimeZoneSuggestion.printCommandLineOpts(pw); pw.println(); + pw.printf("This service is also affected by the following device_config flags in the" + + " %s namespace:\n", NAMESPACE_SYSTEM_TIME); + pw.printf(" %s\n", KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED); + pw.printf(" Only observed if the geolocation time zone detection feature is enabled in" + + " config.\n"); + pw.printf(" Set this to false to disable the feature.\n"); + pw.printf(" %s\n", KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT); + pw.printf(" Only used if the device does not have an explicit 'geolocation time zone" + + " detection enabled' setting stored [*].\n"); + pw.printf(" The default is when unset is false.\n"); + pw.printf(" %s\n", KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE); + pw.printf(" Used to override the device's 'geolocation time zone detection enabled'" + + " setting [*].\n"); + pw.println(); + pw.printf("[*] To be enabled, the user must still have location = on / auto time zone" + + " detection = on.\n"); + pw.println(); + pw.printf("See \"adb shell cmd device_config\" for more information on setting flags.\n"); + pw.println(); + pw.printf("Also see \"adb shell cmd %s help\" for lower-level location time zone" + + " commands / settings.\n", LocationTimeZoneManager.SERVICE_NAME); + pw.println(); } } diff --git a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java index c6df6241bf21..0f0de5004be9 100644 --- a/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java +++ b/services/core/java/com/android/server/timezonedetector/location/LocationTimeZoneManagerShellCommand.java @@ -24,9 +24,6 @@ import static android.app.time.LocationTimeZoneManager.SHELL_COMMAND_START; import static android.app.time.LocationTimeZoneManager.SHELL_COMMAND_STOP; import static android.provider.DeviceConfig.NAMESPACE_SYSTEM_TIME; -import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED; -import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT; -import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE; import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_DETECTION_UNCERTAINTY_DELAY_MILLIS; import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_FUZZ_MILLIS; import static com.android.server.timedetector.ServerFlags.KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_MILLIS; @@ -48,6 +45,7 @@ import android.app.time.GeolocationTimeZoneSuggestionProto; import android.app.time.LocationTimeZoneManagerProto; import android.app.time.LocationTimeZoneManagerServiceStateProto; import android.app.time.TimeZoneProviderStateProto; +import android.app.timezonedetector.TimeZoneDetector; import android.os.Bundle; import android.os.ShellCommand; import android.util.IndentingPrintWriter; @@ -103,84 +101,68 @@ class LocationTimeZoneManagerShellCommand extends ShellCommand { public void onHelp() { final PrintWriter pw = getOutPrintWriter(); pw.printf("Location Time Zone Manager (%s) commands for tests:\n", SERVICE_NAME); - pw.println(" help"); - pw.println(" Print this help text."); + pw.printf(" help\n"); + pw.printf(" Print this help text.\n"); pw.printf(" %s\n", SHELL_COMMAND_START); - pw.println(" Starts the location_time_zone_manager, creating time zone providers."); + pw.printf(" Starts the service, creating location time zone providers.\n"); pw.printf(" %s\n", SHELL_COMMAND_STOP); - pw.println(" Stops the location_time_zone_manager, destroying time zone providers."); + pw.printf(" Stops the service, destroying location time zone providers.\n"); pw.printf(" %s (true|false)\n", SHELL_COMMAND_RECORD_PROVIDER_STATES); pw.printf(" Enables / disables provider state recording mode. See also %s. The default" + " state is always \"false\".\n", SHELL_COMMAND_DUMP_STATE); - pw.println(" Note: When enabled, this mode consumes memory and it is only intended for" - + " testing."); - pw.println(" It should be disabled after use, or the device can be rebooted to" - + " reset the mode to disabled."); - pw.println(" Disabling (or enabling repeatedly) clears any existing stored states."); + pw.printf(" Note: When enabled, this mode consumes memory and it is only intended for" + + " testing.\n"); + pw.printf(" It should be disabled after use, or the device can be rebooted to" + + " reset the mode to disabled.\n"); + pw.printf(" Disabling (or enabling repeatedly) clears any existing stored states.\n"); pw.printf(" %s [%s]\n", SHELL_COMMAND_DUMP_STATE, DUMP_STATE_OPTION_PROTO); - pw.println(" Dumps Location Time Zone Manager state for tests as text or binary proto" - + " form."); - pw.println(" See the LocationTimeZoneManagerServiceStateProto definition for details."); + pw.printf(" Dumps service state for tests as text or binary proto form.\n"); + pw.printf(" See the LocationTimeZoneManagerServiceStateProto definition for details.\n"); pw.printf(" %s <provider index> <test command>\n", SHELL_COMMAND_SEND_PROVIDER_TEST_COMMAND); - pw.println(" Passes a test command to the named provider."); + pw.printf(" Passes a test command to the named provider.\n"); pw.println(); - pw.println("<provider index> = 0 (primary), 1 (secondary)"); + pw.printf("<provider index> = 0 (primary), 1 (secondary)\n"); pw.println(); pw.printf("%s details:\n", SHELL_COMMAND_SEND_PROVIDER_TEST_COMMAND); pw.println(); - pw.println("Provider <test command> encoding:"); + pw.printf("Provider <test command> encoding:\n"); pw.println(); TestCommand.printShellCommandEncodingHelp(pw); pw.println(); - pw.println("Simulated provider mode can be used to test the system server behavior or to" - + " reproduce bugs without the complexity of using real providers."); + pw.printf("Simulated provider mode can be used to test the system server behavior or to" + + " reproduce bugs without the complexity of using real providers.\n"); pw.println(); - pw.println("The test commands for simulated providers are:"); + pw.printf("The test commands for simulated providers are:\n"); SimulatedLocationTimeZoneProviderProxy.printTestCommandShellHelp(pw); pw.println(); - pw.println("Test commands cannot currently be passed to real provider implementations."); + pw.printf("Test commands cannot currently be passed to real provider implementations.\n"); pw.println(); pw.printf("This service is also affected by the following device_config flags in the" + " %s namespace:\n", NAMESPACE_SYSTEM_TIME); - pw.printf(" %s - [default=true], only observed if the feature is enabled in config," - + "set this to false to disable the feature\n", - KEY_LOCATION_TIME_ZONE_DETECTION_FEATURE_SUPPORTED); - pw.printf(" %s - [default=false]. Only used if the device does not have an explicit" - + " 'location time zone detection enabled' setting configured [*].\n", - KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT); - pw.printf(" %s - [default=<unset>]. Used to override the device's 'location time zone" - + " detection enabled' setting [*]\n", - KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_OVERRIDE); - pw.printf(" %s - Overrides the mode of the primary provider. Values=%s|%s|%s\n", - KEY_PRIMARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE, + pw.printf(" %s\n", KEY_PRIMARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE); + pw.printf(" Overrides the mode of the primary provider. Values=%s|%s|%s\n", PROVIDER_MODE_DISABLED, PROVIDER_MODE_ENABLED, PROVIDER_MODE_SIMULATED); - pw.printf(" %s - Overrides the mode of the secondary provider. Values=%s|%s|%s\n", - KEY_SECONDARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE, + pw.printf(" %s\n", KEY_SECONDARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE); + pw.printf(" Overrides the mode of the secondary provider. Values=%s|%s|%s\n", PROVIDER_MODE_DISABLED, PROVIDER_MODE_ENABLED, PROVIDER_MODE_SIMULATED); - pw.printf(" %s - \n", - KEY_SECONDARY_LOCATION_TIME_ZONE_PROVIDER_MODE_OVERRIDE); - pw.printf(" %s - Sets the amount of time the service waits when uncertain before making" - + " an 'uncertain' suggestion to the time zone detector.\n", - KEY_LOCATION_TIME_ZONE_DETECTION_UNCERTAINTY_DELAY_MILLIS); - pw.printf(" %s - Sets the initialization time passed to the location time zone providers" - + "\n", - KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_MILLIS); - pw.printf(" %s - Sets the amount of extra time added to the location time zone providers" - + " initialization time\n", - KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_FUZZ_MILLIS); - pw.println(); - pw.println("[*] The user must still have location = on / auto time zone detection = on"); + pw.printf(" %s\n", KEY_LOCATION_TIME_ZONE_DETECTION_UNCERTAINTY_DELAY_MILLIS); + pw.printf(" Sets the amount of time the service waits when uncertain before making an" + + " 'uncertain' suggestion to the time zone detector.\n"); + pw.printf(" %s\n", KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_MILLIS); + pw.printf(" Sets the initialization time passed to the providers.\n"); + pw.printf(" %s\n", KEY_LOCATION_TIME_ZONE_PROVIDER_INITIALIZATION_TIMEOUT_FUZZ_MILLIS); + pw.printf(" Sets the amount of extra time added to the providers' initialization time." + + "\n"); pw.println(); pw.printf("Typically, use '%s' to stop the service before setting individual" + " flags and '%s' after to restart it.\n", SHELL_COMMAND_STOP, SHELL_COMMAND_START); pw.println(); - pw.println("Example:"); - pw.printf(" $ adb shell cmd device_config put %s %s %s\n", - NAMESPACE_SYSTEM_TIME, KEY_LOCATION_TIME_ZONE_DETECTION_SETTING_ENABLED_DEFAULT, - "true"); - pw.println("See adb shell cmd device_config for more information."); + pw.printf("See \"adb shell cmd device_config\" for more information on setting flags.\n"); + pw.println(); + pw.printf("Also see \"adb shell cmd %s help\" for higher-level location time zone" + + " commands / settings.\n", TimeZoneDetector.SHELL_COMMAND_SERVICE_NAME); pw.println(); } diff --git a/services/core/java/com/android/server/tv/TvInputManagerService.java b/services/core/java/com/android/server/tv/TvInputManagerService.java index e728ab0944a7..49170f38bd07 100755 --- a/services/core/java/com/android/server/tv/TvInputManagerService.java +++ b/services/core/java/com/android/server/tv/TvInputManagerService.java @@ -24,7 +24,6 @@ import android.annotation.NonNull; import android.annotation.Nullable; import android.annotation.UserIdInt; import android.app.ActivityManager; -import android.app.ActivityManager.RunningAppProcessInfo; import android.content.BroadcastReceiver; import android.content.ComponentName; import android.content.ContentResolver; @@ -109,6 +108,7 @@ import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.UUID; import java.util.regex.Matcher; @@ -511,11 +511,21 @@ public final class TvInputManagerService extends SystemService { sessionStatesToRelease.add(sessionState); } } + boolean notifyInfoUpdated = false; for (SessionState sessionState : sessionStatesToRelease) { try { sessionState.session.release(); + sessionState.currentChannel = null; + if (sessionState.isCurrent) { + sessionState.isCurrent = false; + notifyInfoUpdated = true; + } } catch (RemoteException e) { Slog.e(TAG, "error in release", e); + } finally { + if (notifyInfoUpdated) { + notifyCurrentChannelInfosUpdatedLocked(userState); + } } clearSessionAndNotifyClientLocked(sessionState); } @@ -576,12 +586,22 @@ public final class TvInputManagerService extends SystemService { return; } // Release all created sessions. + boolean notifyInfoUpdated = false; for (SessionState state : userState.sessionStateMap.values()) { if (state.session != null) { try { state.session.release(); + state.currentChannel = null; + if (state.isCurrent) { + state.isCurrent = false; + notifyInfoUpdated = true; + } } catch (RemoteException e) { Slog.e(TAG, "error in release", e); + } finally { + if (notifyInfoUpdated) { + notifyCurrentChannelInfosUpdatedLocked(userState); + } } } } @@ -826,9 +846,11 @@ public final class TvInputManagerService extends SystemService { sessionState.session.asBinder().unlinkToDeath(sessionState, 0); sessionState.session.release(); } - sessionState.isCurrent = false; sessionState.currentChannel = null; - notifyCurrentChannelInfosUpdatedLocked(userState); + if (sessionState.isCurrent) { + sessionState.isCurrent = false; + notifyCurrentChannelInfosUpdatedLocked(userState); + } } catch (RemoteException | SessionNotFoundException e) { Slog.e(TAG, "error in releaseSession", e); } finally { @@ -898,6 +920,11 @@ public final class TvInputManagerService extends SystemService { } ITvInputSession session = getSessionLocked(sessionState); session.setMain(isMain); + if (sessionState.isMainSession != isMain) { + UserState userState = getUserStateLocked(userId); + sessionState.isMainSession = isMain; + notifyCurrentChannelInfosUpdatedLocked(userState); + } } catch (RemoteException | SessionNotFoundException e) { Slog.e(TAG, "error in setMain", e); } @@ -987,6 +1014,10 @@ public final class TvInputManagerService extends SystemService { try { ITvInputManagerCallback callback = userState.mCallbacks.getBroadcastItem(i); Pair<Integer, Integer> pidUid = userState.callbackPidUidMap.get(callback); + if (mContext.checkPermission(android.Manifest.permission.ACCESS_TUNED_INFO, + pidUid.first, pidUid.second) != PackageManager.PERMISSION_GRANTED) { + continue; + } List<TunedInfo> infos = getCurrentTunedInfosInternalLocked( userState, pidUid.first, pidUid.second); callback.onCurrentTunedInfosUpdated(infos); @@ -1517,6 +1548,11 @@ public final class TvInputManagerService extends SystemService { getSessionLocked(sessionState.hardwareSessionToken, Process.SYSTEM_UID, resolvedUserId).setSurface(surface); } + boolean isVisible = (surface == null); + if (sessionState.isVisible != isVisible) { + sessionState.isVisible = isVisible; + notifyCurrentChannelInfosUpdatedLocked(userState); + } } catch (RemoteException | SessionNotFoundException e) { Slog.e(TAG, "error in setSurface", e); } @@ -1609,9 +1645,12 @@ public final class TvInputManagerService extends SystemService { UserState userState = getOrCreateUserStateLocked(resolvedUserId); SessionState sessionState = getSessionStateLocked(sessionToken, callingUid, userState); - sessionState.isCurrent = true; - sessionState.currentChannel = channelUri; - notifyCurrentChannelInfosUpdatedLocked(userState); + if (!sessionState.isCurrent + || !Objects.equals(sessionState.currentChannel, channelUri)) { + sessionState.isCurrent = true; + sessionState.currentChannel = channelUri; + notifyCurrentChannelInfosUpdatedLocked(userState); + } if (TvContract.isChannelUriForPassthroughInput(channelUri)) { // Do not log the watch history for passthrough inputs. return; @@ -2309,6 +2348,11 @@ public final class TvInputManagerService extends SystemService { @Override public List<TunedInfo> getCurrentTunedInfos(@UserIdInt int userId) { + if (mContext.checkCallingPermission(android.Manifest.permission.ACCESS_TUNED_INFO) + != PackageManager.PERMISSION_GRANTED) { + throw new SecurityException( + "The caller does not have access tuned info permission"); + } int callingPid = Binder.getCallingPid(); int callingUid = Binder.getCallingUid(); final int resolvedUserId = resolveCallingUserId(callingPid, callingUid, userId, @@ -2524,7 +2568,8 @@ public final class TvInputManagerService extends SystemService { state.inputId, watchedProgramsAccess ? state.currentChannel : null, state.isRecordingSession, - isForeground(state.callingPid), + state.isVisible, + state.isMainSession, appType, appTag)); } @@ -2532,23 +2577,6 @@ public final class TvInputManagerService extends SystemService { return channelInfos; } - private boolean isForeground(int pid) { - if (mActivityManager == null) { - return false; - } - List<RunningAppProcessInfo> appProcesses = mActivityManager.getRunningAppProcesses(); - if (appProcesses == null) { - return false; - } - for (RunningAppProcessInfo appProcess : appProcesses) { - if (appProcess.pid == pid - && appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { - return true; - } - } - return false; - } - private boolean hasAccessWatchedProgramsPermission(int callingPid, int callingUid) { return mContext.checkPermission(PERMISSION_ACCESS_WATCHED_PROGRAMS, callingPid, callingUid) == PackageManager.PERMISSION_GRANTED; @@ -2788,6 +2816,8 @@ public final class TvInputManagerService extends SystemService { private boolean isCurrent = false; private Uri currentChannel = null; + private boolean isVisible = false; + private boolean isMainSession = false; private SessionState(IBinder sessionToken, String inputId, ComponentName componentName, boolean isRecordingSession, ITvInputClient client, int seq, int callingUid, @@ -3039,16 +3069,19 @@ public final class TvInputManagerService extends SystemService { if (mSessionState.session == null || mSessionState.client == null) { return; } - mSessionState.isCurrent = true; - mSessionState.currentChannel = channelUri; - UserState userState = getOrCreateUserStateLocked(mSessionState.userId); - notifyCurrentChannelInfosUpdatedLocked(userState); try { // TODO: Consider adding this channel change in the watch log. When we do // that, how we can protect the watch log from malicious tv inputs should // be addressed. e.g. add a field which represents where the channel change // originated from. mSessionState.client.onChannelRetuned(channelUri, mSessionState.seq); + if (!mSessionState.isCurrent + || !Objects.equals(mSessionState.currentChannel, channelUri)) { + UserState userState = getOrCreateUserStateLocked(mSessionState.userId); + mSessionState.isCurrent = true; + mSessionState.currentChannel = channelUri; + notifyCurrentChannelInfosUpdatedLocked(userState); + } } catch (RemoteException e) { Slog.e(TAG, "error in onChannelRetuned", e); } diff --git a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java index 23fb95b4fa40..77bfc5f46168 100644 --- a/services/core/java/com/android/server/vcn/VcnGatewayConnection.java +++ b/services/core/java/com/android/server/vcn/VcnGatewayConnection.java @@ -2046,7 +2046,11 @@ public class VcnGatewayConnection extends StateMachine { pw.println("VcnGatewayConnection (" + mConnectionConfig.getGatewayConnectionName() + "):"); pw.increaseIndent(); - pw.println("Current state: " + getCurrentState().getClass().getSimpleName()); + pw.println( + "Current state: " + + (getCurrentState() == null + ? null + : getCurrentState().getClass().getSimpleName())); pw.println("mIsQuitting: " + mIsQuitting); pw.println("mIsInSafeMode: " + mIsInSafeMode); pw.println("mCurrentToken: " + mCurrentToken); @@ -2057,7 +2061,11 @@ public class VcnGatewayConnection extends StateMachine { pw.println("mUnderlying:"); pw.increaseIndent(); - mUnderlying.dump(pw); + if (mUnderlying != null) { + mUnderlying.dump(pw); + } else { + pw.println("null"); + } pw.decreaseIndent(); pw.println(); @@ -2127,7 +2135,7 @@ public class VcnGatewayConnection extends StateMachine { (VcnControlPlaneIkeConfig) mConnectionConfig.getControlPlaneConfig(); final IkeSessionParams.Builder builder = new IkeSessionParams.Builder(controlPlaneConfig.getIkeSessionParams()); - builder.setConfiguredNetwork(network); + builder.setNetwork(network); return builder.build(); } diff --git a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java index 89b7bbd45072..9acbdcc177cc 100644 --- a/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java +++ b/services/core/java/com/android/server/wallpaper/WallpaperManagerService.java @@ -2378,6 +2378,46 @@ public class WallpaperManagerService extends IWallpaperManager.Stub } } + /** + * Propagate a wake event to the wallpaper engine. + */ + public void notifyWakingUp(int x, int y, @NonNull Bundle extras) { + synchronized (mLock) { + final WallpaperData data = mWallpaperMap.get(mCurrentUserId); + data.connection.forEachDisplayConnector( + displayConnector -> { + if (displayConnector.mEngine != null) { + try { + displayConnector.mEngine.dispatchWallpaperCommand( + WallpaperManager.COMMAND_WAKING_UP, x, y, -1, extras); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + }); + } + } + + /** + * Propagate a sleep event to the wallpaper engine. + */ + public void notifyGoingToSleep(int x, int y, @NonNull Bundle extras) { + synchronized (mLock) { + final WallpaperData data = mWallpaperMap.get(mCurrentUserId); + data.connection.forEachDisplayConnector( + displayConnector -> { + if (displayConnector.mEngine != null) { + try { + displayConnector.mEngine.dispatchWallpaperCommand( + WallpaperManager.COMMAND_GOING_TO_SLEEP, x, y, -1, extras); + } catch (RemoteException e) { + e.printStackTrace(); + } + } + }); + } + } + @Override public boolean setLockWallpaperCallback(IWallpaperManagerCallback cb) { checkPermission(android.Manifest.permission.INTERNAL_SYSTEM_WINDOW); diff --git a/services/core/java/com/android/server/wm/ActivityClientController.java b/services/core/java/com/android/server/wm/ActivityClientController.java index c5115b283f0a..efee0a1133b6 100644 --- a/services/core/java/com/android/server/wm/ActivityClientController.java +++ b/services/core/java/com/android/server/wm/ActivityClientController.java @@ -45,8 +45,10 @@ import android.app.ActivityTaskManager; import android.app.IActivityClientController; import android.app.IRequestFinishCallback; import android.app.PictureInPictureParams; +import android.app.PictureInPictureUiState; import android.app.servertransaction.ClientTransaction; import android.app.servertransaction.EnterPipRequestedItem; +import android.app.servertransaction.PipStateTransactionItem; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -779,6 +781,26 @@ class ActivityClientController extends IActivityClientController.Stub { } } + /** + * Alert the client that the Picture-in-Picture state has changed. + */ + void onPictureInPictureStateChanged(@NonNull ActivityRecord r, + PictureInPictureUiState pipState) { + if (!r.inPinnedWindowingMode()) { + throw new IllegalStateException("Activity is not in PIP mode"); + } + + try { + final ClientTransaction transaction = ClientTransaction.obtain( + r.app.getThread(), r.token); + transaction.addCallback(PipStateTransactionItem.obtain(pipState)); + mService.getLifecycleManager().scheduleTransaction(transaction); + } catch (Exception e) { + Slog.w(TAG, "Failed to send pip state transaction item: " + + r.intent.getComponent(), e); + } + } + @Override public void toggleFreeformWindowingMode(IBinder token) { final long ident = Binder.clearCallingIdentity(); diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java index c39358e7ad4a..4c392f0906aa 100644 --- a/services/core/java/com/android/server/wm/ActivityRecord.java +++ b/services/core/java/com/android/server/wm/ActivityRecord.java @@ -1090,6 +1090,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (info.configChanges != 0) { pw.println(prefix + "configChanges=0x" + Integer.toHexString(info.configChanges)); } + pw.println(prefix + "neverSandboxDisplayApis=" + info.neverSandboxDisplayApis()); + pw.println(prefix + "alwaysSandboxDisplayApis=" + info.alwaysSandboxDisplayApis()); } if (mLastParentBeforePip != null) { pw.println(prefix + "lastParentTaskIdBeforePip=" + mLastParentBeforePip.mTaskId); @@ -1417,14 +1419,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return mLetterboxUiController.isFullyTransparentBarAllowed(rect); } - /** - * @return {@code true} if there is a letterbox and any part of that letterbox overlaps with - * the given {@code rect}. - */ - boolean isLetterboxOverlappingWith(Rect rect) { - return mLetterboxUiController.isLetterboxOverlappingWith(rect); - } - static class Token extends IApplicationToken.Stub { private WeakReference<ActivityRecord> weakActivity; private final String name; @@ -5160,6 +5154,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A // Task#ensureActivitiesVisible will bring the activity to a proper // active state. if (!isState(STARTED, RESUMED, PAUSED, STOPPED, STOPPING) + // TODO (b/185876784) Check could we remove the check condition + // mTranslucentActivityWaiting != null here || getRootTask().mTranslucentActivityWaiting != null) { return false; } @@ -6899,7 +6895,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A getResolvedOverrideConfiguration().seq = mConfigurationSeq; // Sandbox max bounds by setting it to the activity bounds, if activity is letterboxed, or - // has or will have mCompatDisplayInsets for size compat. + // has or will have mCompatDisplayInsets for size compat. Also forces an activity to be + // sandboxed or not depending upon the configuration settings. if (providesMaxBounds()) { mTmpBounds.set(resolvedConfig.windowConfiguration.getBounds()); if (mTmpBounds.isEmpty()) { @@ -6909,11 +6906,15 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A } if (DEBUG_CONFIGURATION) { ProtoLog.d(WM_DEBUG_CONFIGURATION, "Sandbox max bounds for uid %s to bounds %s. " + + "config to never sandbox = %s, " + + "config to always sandbox = %s, " + "letterboxing from mismatch with parent bounds = %s, " + "has mCompatDisplayInsets = %s, " + "should create compatDisplayInsets = %s", getUid(), mTmpBounds, + info.neverSandboxDisplayApis(), + info.alwaysSandboxDisplayApis(), !matchParentBounds(), mCompatDisplayInsets != null, shouldCreateCompatDisplayInsets()); @@ -7311,12 +7312,14 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A if (mDisplayContent != null && !mDisplayContent.sandboxDisplayApis()) { return false; } - // Max bounds should be sandboxed where an activity is letterboxed (activity bounds will be - // smaller than task bounds). - if (!matchParentBounds()) { + // Never apply sandboxing to an app that should be explicitly excluded from the config. + if (info != null && info.neverSandboxDisplayApis()) { + return false; + } + // Always apply sandboxing to an app that should be explicitly included from the config. + if (info != null && info.alwaysSandboxDisplayApis()) { return true; } - // Max bounds should be sandboxed when an activity should have compatDisplayInsets, and it // will keep the same bounds and screen configuration when it was first launched regardless // how its parent window changes, so that the sandbox API will provide a consistent result. @@ -7324,8 +7327,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A return true; } - // No need to sandbox for resizable apps in multi-window because resizableActivity=true - // indicates that they support multi-window. + // No need to sandbox for resizable apps in (including in multi-window) because + // resizableActivity=true indicates that they support multi-window. Likewise, do not sandbox + // for activities in letterbox since the activity has declared it can handle resizing. return false; } @@ -7800,7 +7804,11 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A configChangeFlags = 0; return; } - + // Do not waiting for translucent activity if it is going to relaunch. + final Task rootTask = getRootTask(); + if (rootTask != null && rootTask.mTranslucentActivityWaiting == this) { + rootTask.checkTranslucentActivityWaiting(null); + } final boolean andResume = shouldBeResumed(null /*activeActivity*/); List<ResultInfo> pendingResults = null; List<ReferrerIntent> pendingNewIntents = null; diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java index b83945e950b6..ee503d54382f 100644 --- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java +++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java @@ -141,6 +141,7 @@ import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.app.PictureInPictureParams; +import android.app.PictureInPictureUiState; import android.app.ProfilerInfo; import android.app.RemoteAction; import android.app.WaitResult; @@ -3644,6 +3645,17 @@ public class ActivityTaskManagerService extends IActivityTaskManager.Stub { } } + @Override + public void onPictureInPictureStateChanged(PictureInPictureUiState pipState) { + enforceTaskPermission("onPictureInPictureStateChanged"); + final Task rootPinnedStask = mRootWindowContainer.getDefaultTaskDisplayArea() + .getRootPinnedTask(); + if (rootPinnedStask != null && rootPinnedStask.getTopMostActivity() != null) { + mWindowManager.mAtmService.mActivityClientController.onPictureInPictureStateChanged( + rootPinnedStask.getTopMostActivity(), pipState); + } + } + void dumpLastANRLocked(PrintWriter pw) { pw.println("ACTIVITY MANAGER LAST ANR (dumpsys activity lastanr)"); if (mLastANRState == null) { diff --git a/services/core/java/com/android/server/wm/DisplayHashController.java b/services/core/java/com/android/server/wm/DisplayHashController.java index 5a8af457c8ed..af0c3e3f319e 100644 --- a/services/core/java/com/android/server/wm/DisplayHashController.java +++ b/services/core/java/com/android/server/wm/DisplayHashController.java @@ -16,8 +16,8 @@ package com.android.server.wm; -import static android.service.displayhash.DisplayHasherService.EXTRA_VERIFIED_DISPLAY_HASH; -import static android.service.displayhash.DisplayHasherService.SERVICE_META_DATA; +import static android.service.displayhash.DisplayHashingService.EXTRA_VERIFIED_DISPLAY_HASH; +import static android.service.displayhash.DisplayHashingService.SERVICE_META_DATA; import static android.view.displayhash.DisplayHashResultCallback.DISPLAY_HASH_ERROR_INVALID_HASH_ALGORITHM; import static android.view.displayhash.DisplayHashResultCallback.DISPLAY_HASH_ERROR_TOO_MANY_REQUESTS; import static android.view.displayhash.DisplayHashResultCallback.DISPLAY_HASH_ERROR_UNKNOWN; @@ -52,8 +52,8 @@ import android.os.RemoteCallback; import android.os.RemoteException; import android.os.UserHandle; import android.service.displayhash.DisplayHashParams; -import android.service.displayhash.DisplayHasherService; -import android.service.displayhash.IDisplayHasherService; +import android.service.displayhash.DisplayHashingService; +import android.service.displayhash.IDisplayHashingService; import android.util.AttributeSet; import android.util.Size; import android.util.Slog; @@ -79,7 +79,7 @@ import java.util.concurrent.TimeUnit; import java.util.function.BiConsumer; /** - * Handles requests into {@link android.service.displayhash.DisplayHasherService} + * Handles requests into {@link DisplayHashingService} * * Do not hold the {@link WindowManagerService#mGlobalLock} when calling methods since they are * blocking calls into another service. @@ -91,7 +91,7 @@ public class DisplayHashController { private final Object mServiceConnectionLock = new Object(); @GuardedBy("mServiceConnectionLock") - private DisplayHasherServiceConnection mServiceConnection; + private DisplayHashingServiceConnection mServiceConnection; private final Context mContext; @@ -150,7 +150,7 @@ public class DisplayHashController { private boolean mDisplayHashThrottlingEnabled = true; private interface Command { - void run(IDisplayHasherService service) throws RemoteException; + void run(IDisplayHashingService service) throws RemoteException; } DisplayHashController(Context context) { @@ -233,7 +233,7 @@ public class DisplayHashController { (float) size.getHeight() / boundsInWindow.height()); } - args.setGrayscale(displayHashParams.isGrayscaleBuffer()); + args.setGrayscale(displayHashParams.isUseGrayscale()); SurfaceControl.ScreenshotHardwareBuffer screenshotHardwareBuffer = SurfaceControl.captureLayers(args.build()); @@ -405,9 +405,9 @@ public class DisplayHashController { } } - TypedArray sa = res.obtainAttributes(attrs, R.styleable.DisplayHasherService); + TypedArray sa = res.obtainAttributes(attrs, R.styleable.DisplayHashingService); mThrottleDurationMillis = sa.getInt( - R.styleable.DisplayHasherService_throttleDurationMillis, 0); + R.styleable.DisplayHashingService_throttleDurationMillis, 0); sa.recycle(); mParsedXml = true; return true; @@ -424,7 +424,7 @@ public class DisplayHashController { if (DEBUG) Slog.v(TAG, "creating connection"); // Create the connection - mServiceConnection = new DisplayHasherServiceConnection(); + mServiceConnection = new DisplayHashingServiceConnection(); final ComponentName component = getServiceComponentName(); if (DEBUG) Slog.v(TAG, "binding to: " + component); @@ -455,7 +455,7 @@ public class DisplayHashController { return null; } - final Intent intent = new Intent(DisplayHasherService.SERVICE_INTERFACE); + final Intent intent = new Intent(DisplayHashingService.SERVICE_INTERFACE); intent.setPackage(packageName); final ResolveInfo resolveInfo = mContext.getPackageManager().resolveService(intent, PackageManager.GET_SERVICES | PackageManager.GET_META_DATA); @@ -472,10 +472,10 @@ public class DisplayHashController { if (serviceInfo == null) return null; final ComponentName name = new ComponentName(serviceInfo.packageName, serviceInfo.name); - if (!Manifest.permission.BIND_DISPLAY_HASHER_SERVICE + if (!Manifest.permission.BIND_DISPLAY_HASHING_SERVICE .equals(serviceInfo.permission)) { Slog.w(TAG, name.flattenToShortString() + " requires permission " - + Manifest.permission.BIND_DISPLAY_HASHER_SERVICE); + + Manifest.permission.BIND_DISPLAY_HASHING_SERVICE); return null; } @@ -488,7 +488,7 @@ public class DisplayHashController { private Bundle mResult; private final CountDownLatch mCountDownLatch = new CountDownLatch(1); - public Bundle run(BiConsumer<IDisplayHasherService, RemoteCallback> func) { + public Bundle run(BiConsumer<IDisplayHashingService, RemoteCallback> func) { connectAndRun(service -> { RemoteCallback callback = new RemoteCallback(result -> { mResult = result; @@ -507,9 +507,9 @@ public class DisplayHashController { } } - private class DisplayHasherServiceConnection implements ServiceConnection { + private class DisplayHashingServiceConnection implements ServiceConnection { @GuardedBy("mServiceConnectionLock") - private IDisplayHasherService mRemoteService; + private IDisplayHashingService mRemoteService; @GuardedBy("mServiceConnectionLock") private ArrayList<Command> mQueuedCommands; @@ -518,7 +518,7 @@ public class DisplayHashController { public void onServiceConnected(ComponentName name, IBinder service) { if (DEBUG) Slog.v(TAG, "onServiceConnected(): " + name); synchronized (mServiceConnectionLock) { - mRemoteService = IDisplayHasherService.Stub.asInterface(service); + mRemoteService = IDisplayHashingService.Stub.asInterface(service); if (mQueuedCommands != null) { final int size = mQueuedCommands.size(); if (DEBUG) Slog.d(TAG, "running " + size + " queued commands"); diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java index 8c5470578e80..203214d536dd 100644 --- a/services/core/java/com/android/server/wm/DisplayPolicy.java +++ b/services/core/java/com/android/server/wm/DisplayPolicy.java @@ -146,7 +146,6 @@ import android.view.View; import android.view.ViewDebug; import android.view.WindowInsets.Type; import android.view.WindowInsets.Type.InsetsType; -import android.view.WindowInsetsController.Appearance; import android.view.WindowManager; import android.view.WindowManager.LayoutParams; import android.view.WindowManagerGlobal; @@ -2495,12 +2494,10 @@ public class DisplayPolicy { mService.getRootTaskBounds(inSplitScreen ? WINDOWING_MODE_SPLIT_SCREEN_SECONDARY : WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_UNDEFINED, mNonDockedRootTaskBounds); - final int fullscreenAppearance = updateLightStatusBarLw(0 /* appearance */, - mTopFullscreenOpaqueWindowState, mTopFullscreenOpaqueOrDimmingWindowState, - mNonDockedRootTaskBounds); - final int dockedAppearance = updateLightStatusBarLw(0 /* appearance */, - mTopDockedOpaqueWindowState, mTopDockedOpaqueOrDimmingWindowState, - mDockedRootTaskBounds); + final int fullscreenAppearance = getStatusBarAppearance(mTopFullscreenOpaqueWindowState, + mTopFullscreenOpaqueOrDimmingWindowState); + final int dockedAppearance = getStatusBarAppearance(mTopDockedOpaqueWindowState, + mTopDockedOpaqueOrDimmingWindowState); final int disableFlags = win.getDisableFlags(); final int opaqueAppearance = updateSystemBarsLw(win, disableFlags); final WindowState navColorWin = chooseNavigationColorWindowLw( @@ -2560,30 +2557,12 @@ public class DisplayPolicy { return true; } - private int updateLightStatusBarLw(@Appearance int appearance, WindowState opaque, - WindowState opaqueOrDimming, Rect rootTaskBounds) { - final DisplayRotation displayRotation = mDisplayContent.getDisplayRotation(); - final int statusBarHeight = mStatusBarHeightForRotation[displayRotation.getRotation()]; - final boolean rootTaskBoundsContainStatusBar = - rootTaskBounds.isEmpty() ? false : rootTaskBounds.top < statusBarHeight; + private int getStatusBarAppearance(WindowState opaque, WindowState opaqueOrDimming) { final boolean onKeyguard = isKeyguardShowing() && !isKeyguardOccluded(); - final WindowState statusColorWin = onKeyguard ? mNotificationShade : opaqueOrDimming; - if (rootTaskBoundsContainStatusBar && statusColorWin != null) { - if (statusColorWin == opaque || onKeyguard) { - // If the top fullscreen-or-dimming window is also the top fullscreen, respect - // its light flag. - appearance &= ~APPEARANCE_LIGHT_STATUS_BARS; - appearance |= statusColorWin.mAttrs.insetsFlags.appearance - & APPEARANCE_LIGHT_STATUS_BARS; - } else if (statusColorWin.isDimming()) { - // Otherwise if it's dimming, clear the light flag. - appearance &= ~APPEARANCE_LIGHT_STATUS_BARS; - } - if (!isLightBarAllowed(statusColorWin, TYPE_STATUS_BAR)) { - appearance &= ~APPEARANCE_LIGHT_STATUS_BARS; - } - } - return appearance; + final WindowState colorWin = onKeyguard ? mNotificationShade : opaqueOrDimming; + return isLightBarAllowed(colorWin, ITYPE_STATUS_BAR) && (colorWin == opaque || onKeyguard) + ? (colorWin.mAttrs.insetsFlags.appearance & APPEARANCE_LIGHT_STATUS_BARS) + : 0; } @VisibleForTesting @@ -2642,9 +2621,9 @@ public class DisplayPolicy { // Clear the light flag for dimming window. appearance &= ~APPEARANCE_LIGHT_NAVIGATION_BARS; } - if (!isLightBarAllowed(navColorWin, TYPE_NAVIGATION_BAR)) { - appearance &= ~APPEARANCE_LIGHT_NAVIGATION_BARS; - } + } + if (!isLightBarAllowed(navColorWin, ITYPE_NAVIGATION_BAR)) { + appearance &= ~APPEARANCE_LIGHT_NAVIGATION_BARS; } return appearance; } @@ -2697,11 +2676,12 @@ public class DisplayPolicy { return appearance; } - private boolean isLightBarAllowed(WindowState win, int windowType) { + private boolean isLightBarAllowed(WindowState win, @InternalInsetsType int type) { if (win == null) { - return true; + return false; } - return !win.isLetterboxedOverlappingWith(getBarContentFrameForWindow(win, windowType)); + final InsetsSource source = win.getInsetsState().peekSource(type); + return source != null && Rect.intersects(win.getFrame(), source.getFrame()); } private Rect getBarContentFrameForWindow(WindowState win, int windowType) { diff --git a/services/core/java/com/android/server/wm/FadeRotationAnimationController.java b/services/core/java/com/android/server/wm/FadeRotationAnimationController.java index b14d4a1e4b5a..644256a071ff 100644 --- a/services/core/java/com/android/server/wm/FadeRotationAnimationController.java +++ b/services/core/java/com/android/server/wm/FadeRotationAnimationController.java @@ -66,9 +66,14 @@ public class FadeRotationAnimationController extends FadeAnimationController { } else { mNavBarToken = null; } + // Do not fade notification shade when running fixed rotation (not frozen) because it may + // need to animate with the launching app. + final WindowState notificationShade = mFrozenTimeoutRunnable == null + ? displayPolicy.getNotificationShade() : null; displayContent.forAllWindows(w -> { if (w.mActivityRecord == null && w.mHasSurface && !w.mForceSeamlesslyRotate - && !w.mIsWallpaper && !w.mIsImWindow && w != navigationBar) { + && !w.mIsWallpaper && !w.mIsImWindow && w != navigationBar + && w != notificationShade) { mTargetWindowTokens.add(w.mToken); } }, true /* traverseTopToBottom */); diff --git a/services/core/java/com/android/server/wm/Letterbox.java b/services/core/java/com/android/server/wm/Letterbox.java index af82f755152c..3dbe79df6722 100644 --- a/services/core/java/com/android/server/wm/Letterbox.java +++ b/services/core/java/com/android/server/wm/Letterbox.java @@ -150,18 +150,6 @@ public class Letterbox { } /** - * Returns true if any part of the letterbox overlaps with the given {@code rect}. - */ - public boolean isOverlappingWith(Rect rect) { - for (LetterboxSurface surface : mSurfaces) { - if (surface.isOverlappingWith(rect)) { - return true; - } - } - return false; - } - - /** * Hides the letterbox. * * The caller must use {@link #applySurfaceChanges} to apply the new layout to the surface. @@ -339,17 +327,6 @@ public class Letterbox { return Math.max(0, mLayoutFrameGlobal.height()); } - /** - * Returns if the given {@code rect} overlaps with this letterbox piece. - * @param rect the area to check for overlap in global coordinates - */ - public boolean isOverlappingWith(Rect rect) { - if (mLayoutFrameGlobal.isEmpty()) { - return false; - } - return Rect.intersects(rect, mLayoutFrameGlobal); - } - public void applySurfaceChanges(SurfaceControl.Transaction t) { if (!needsApplySurfaceChanges()) { // Nothing changed. diff --git a/services/core/java/com/android/server/wm/LetterboxUiController.java b/services/core/java/com/android/server/wm/LetterboxUiController.java index 130f68097331..05728cd35afc 100644 --- a/services/core/java/com/android/server/wm/LetterboxUiController.java +++ b/services/core/java/com/android/server/wm/LetterboxUiController.java @@ -112,14 +112,6 @@ final class LetterboxUiController { return mLetterbox == null || mLetterbox.notIntersectsOrFullyContains(rect); } - /** - * @return {@code true} if there is a letterbox and any part of that letterbox overlaps with - * the given {@code rect}. - */ - boolean isLetterboxOverlappingWith(Rect rect) { - return mLetterbox != null && mLetterbox.isOverlappingWith(rect); - } - void updateLetterboxSurface(WindowState winHint) { final WindowState w = mActivityRecord.findMainWindow(); if (w != winHint && winHint != null && w != null) { diff --git a/services/core/java/com/android/server/wm/ShellRoot.java b/services/core/java/com/android/server/wm/ShellRoot.java index 0902948bf559..b56e76d91370 100644 --- a/services/core/java/com/android/server/wm/ShellRoot.java +++ b/services/core/java/com/android/server/wm/ShellRoot.java @@ -76,8 +76,11 @@ public class ShellRoot { throw new IllegalArgumentException(shellRootLayer + " is not an acceptable shell root layer."); } - mToken = new WindowToken( - dc.mWmService, client.asBinder(), windowType, true, dc, true, false); + mToken = new WindowToken.Builder(dc.mWmService, client.asBinder(), windowType) + .setDisplayContent(dc) + .setPersistOnEmpty(true) + .setOwnerCanManageAppTokens(true) + .build(); mSurfaceControl = mToken.makeChildSurface(null) .setContainerLayer() .setName("Shell Root Leash " + dc.getDisplayId()) diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java index 191c3a117e85..bea733b0267e 100644 --- a/services/core/java/com/android/server/wm/WindowContainer.java +++ b/services/core/java/com/android/server/wm/WindowContainer.java @@ -1257,7 +1257,14 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer< mOrientation = orientation; final WindowContainer parent = getParent(); if (parent != null) { - if (getConfiguration().orientation != getRequestedConfigurationOrientation()) { + if (getConfiguration().orientation != getRequestedConfigurationOrientation() + // Update configuration directly only if the change won't be dispatched from + // ancestor. This prevents from computing intermediate configuration when the + // parent also needs to be updated from the ancestor. E.g. the app requests + // portrait but the task is still in landscape. While updating from display, + // the task can be updated to portrait first so the configuration can be + // computed in a consistent environment. + && (inMultiWindowMode() || !handlesOrientationChangeFromDescendant())) { // Resolve the requested orientation. onConfigurationChanged(parent.getConfiguration()); } diff --git a/services/core/java/com/android/server/wm/WindowContextListenerController.java b/services/core/java/com/android/server/wm/WindowContextListenerController.java index 0bb56e451363..b417832d3be1 100644 --- a/services/core/java/com/android/server/wm/WindowContextListenerController.java +++ b/services/core/java/com/android/server/wm/WindowContextListenerController.java @@ -271,6 +271,21 @@ class WindowContextListenerController { if (mDeathRecipient == null) { throw new IllegalStateException("Invalid client token: " + mClientToken); } + final WindowToken windowToken = mContainer.asWindowToken(); + if (windowToken != null && windowToken.isFromClient()) { + // If the WindowContext created WindowToken is removed by + // WMS#postWindowRemoveCleanupLocked, the WindowContext should switch back to + // listen to previous associated DisplayArea. + final DisplayContent dc = windowToken.mWmService.mRoot + .getDisplayContent(mLastReportedDisplay); + // If we cannot obtain the DisplayContent, the DisplayContent may also be removed. + // We should proceed the removal process. + if (dc != null) { + final DisplayArea da = dc.findAreaForToken(windowToken); + updateContainer(da); + return; + } + } mDeathRecipient.unlinkToDeath(); IWindowToken windowTokenClient = IWindowToken.Stub.asInterface(mClientToken); try { diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 61fce88414da..12c9b972cecc 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -1543,13 +1543,20 @@ public class WindowManagerService extends IWindowManager.Stub final IBinder binder = attrs.token != null ? attrs.token : windowContextToken; final Bundle options = mWindowContextListenerController .getOptions(windowContextToken); - token = new WindowToken(this, binder, type, false /* persistOnEmpty */, - displayContent, session.mCanAddInternalSystemWindow, - isRoundedCornerOverlay, true /* fromClientToken */, options); + token = new WindowToken.Builder(this, binder, type) + .setDisplayContent(displayContent) + .setOwnerCanManageAppTokens(session.mCanAddInternalSystemWindow) + .setRoundedCornerOverlay(isRoundedCornerOverlay) + .setFromClientToken(true) + .setOptions(options) + .build(); } else { final IBinder binder = attrs.token != null ? attrs.token : client.asBinder(); - token = new WindowToken(this, binder, type, false, displayContent, - session.mCanAddInternalSystemWindow, isRoundedCornerOverlay); + token = new WindowToken.Builder(this, binder, type) + .setDisplayContent(displayContent) + .setOwnerCanManageAppTokens(session.mCanAddInternalSystemWindow) + .setRoundedCornerOverlay(isRoundedCornerOverlay) + .build(); } } else if (rootType >= FIRST_APPLICATION_WINDOW && rootType <= LAST_APPLICATION_WINDOW) { @@ -1620,8 +1627,10 @@ public class WindowManagerService extends IWindowManager.Stub // It is not valid to use an app token with other system types; we will // instead make a new token for it (as if null had been passed in for the token). attrs.token = null; - token = new WindowToken(this, client.asBinder(), type, false /* persistOnEmpty */, - displayContent, session.mCanAddInternalSystemWindow); + token = new WindowToken.Builder(this, client.asBinder(), type) + .setDisplayContent(displayContent) + .setOwnerCanManageAppTokens(session.mCanAddInternalSystemWindow) + .build(); } final WindowState win = new WindowState(this, session, client, token, parentWindow, @@ -2510,7 +2519,8 @@ public class WindowManagerService extends IWindowManager.Stub } else if (win.isWinVisibleLw() && winAnimator.applyAnimationLocked(transit, false)) { focusMayChange = true; win.mAnimatingExit = true; - } else if (win.mDisplayContent.okToAnimate() && win.isAnimating(TRANSITION | PARENTS)) { + } else if (win.mDisplayContent.okToAnimate() && win.isAnimating(TRANSITION | PARENTS, + WindowState.EXIT_ANIMATING_TYPES)) { // Currently in a hide animation... turn this into // an exit. win.mAnimatingExit = true; @@ -2647,9 +2657,12 @@ public class WindowManagerService extends IWindowManager.Stub new WallpaperWindowToken(this, binder, true, dc, true /* ownerCanManageAppTokens */, options); } else { - new WindowToken(this, binder, type, true /* persistOnEmpty */, dc, - true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */, - false /* fromClientToken */, options); + new WindowToken.Builder(this, binder, type) + .setDisplayContent(dc) + .setPersistOnEmpty(true) + .setOwnerCanManageAppTokens(true) + .setOptions(options) + .build(); } } } diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java index 1a5042ffd56d..83f74cd49b59 100644 --- a/services/core/java/com/android/server/wm/WindowState.java +++ b/services/core/java/com/android/server/wm/WindowState.java @@ -132,6 +132,7 @@ import static com.android.server.wm.MoveAnimationSpecProto.FROM; import static com.android.server.wm.MoveAnimationSpecProto.TO; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_ALL; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION; +import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS; import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_WINDOW_ANIMATION; import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS; import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION; @@ -517,6 +518,13 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP */ boolean mSurfacePlacementNeeded; + /** + * The animation types that will call {@link #onExitAnimationDone} so {@link #mAnimatingExit} + * is guaranteed to be cleared. + */ + static final int EXIT_ANIMATING_TYPES = ANIMATION_TYPE_APP_TRANSITION + | ANIMATION_TYPE_WINDOW_ANIMATION | ANIMATION_TYPE_RECENTS; + /** Currently running an exit animation? */ boolean mAnimatingExit; @@ -2456,8 +2464,8 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP mWmService.mAccessibilityController.onWindowTransition(this, transit); } } - final boolean isAnimating = mAnimatingExit || isAnimating(TRANSITION | PARENTS, - ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_WINDOW_ANIMATION) + final boolean isAnimating = mAnimatingExit + || isAnimating(TRANSITION | PARENTS, EXIT_ANIMATING_TYPES) && (mActivityRecord == null || !mActivityRecord.isWaitingForTransitionStart()); final boolean lastWindowIsStartingWindow = startingWindow && mActivityRecord != null && mActivityRecord.isLastWindow(this); @@ -4001,10 +4009,6 @@ class WindowState extends WindowContainer<WindowState> implements WindowManagerP return mActivityRecord == null || mActivityRecord.isFullyTransparentBarAllowed(frame); } - public boolean isLetterboxedOverlappingWith(Rect rect) { - return mActivityRecord != null && mActivityRecord.isLetterboxOverlappingWith(rect); - } - boolean isDragResizeChanged() { return mDragResizing != computeDragResizing(); } diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java index ef39560e59fc..fbfa400ba852 100644 --- a/services/core/java/com/android/server/wm/WindowToken.java +++ b/services/core/java/com/android/server/wm/WindowToken.java @@ -53,6 +53,7 @@ import android.view.DisplayInfo; import android.view.InsetsState; import android.view.SurfaceControl; import android.view.WindowManager; +import android.view.WindowManager.LayoutParams.WindowType; import android.window.WindowContext; import com.android.internal.protolog.common.ProtoLog; @@ -70,10 +71,10 @@ import java.util.Comparator; class WindowToken extends WindowContainer<WindowState> { private static final String TAG = TAG_WITH_CLASS_NAME ? "WindowToken" : TAG_WM; - // The actual token. + /** The actual token */ final IBinder token; - // The type of window this token is for, as per WindowManager.LayoutParams. + /** The type of window this token is for, as per {@link WindowManager.LayoutParams} */ final int windowType; /** @@ -86,8 +87,10 @@ class WindowToken extends WindowContainer<WindowState> { /** {@code true} if this holds the rounded corner overlay */ final boolean mRoundedCornerOverlay; - // Set if this token was explicitly added by a client, so should - // persist (not be removed) when all windows are removed. + /** + * Set if this token was explicitly added by a client, so should persist (not be removed) + * when all windows are removed. + */ boolean mPersistOnEmpty; // For printing. @@ -198,21 +201,15 @@ class WindowToken extends WindowContainer<WindowState> { return isFirstChildWindowGreaterThanSecond(newWindow, existingWindow) ? 1 : -1; }; - WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty, - DisplayContent dc, boolean ownerCanManageAppTokens) { - this(service, _token, type, persistOnEmpty, dc, ownerCanManageAppTokens, - false /* roundedCornerOverlay */); - } - - WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty, - DisplayContent dc, boolean ownerCanManageAppTokens, boolean roundedCornerOverlay) { + protected WindowToken(WindowManagerService service, IBinder _token, int type, + boolean persistOnEmpty, DisplayContent dc, boolean ownerCanManageAppTokens) { this(service, _token, type, persistOnEmpty, dc, ownerCanManageAppTokens, - roundedCornerOverlay, false /* fromClientToken */, null /* options */); + false /* roundedCornerOverlay */, false /* fromClientToken */, null /* options */); } - WindowToken(WindowManagerService service, IBinder _token, int type, boolean persistOnEmpty, - DisplayContent dc, boolean ownerCanManageAppTokens, boolean roundedCornerOverlay, - boolean fromClientToken, @Nullable Bundle options) { + protected WindowToken(WindowManagerService service, IBinder _token, int type, + boolean persistOnEmpty, DisplayContent dc, boolean ownerCanManageAppTokens, + boolean roundedCornerOverlay, boolean fromClientToken, @Nullable Bundle options) { super(service); token = _token; windowType = type; @@ -770,7 +767,69 @@ class WindowToken extends WindowContainer<WindowState> { } @Override - @WindowManager.LayoutParams.WindowType int getWindowType() { + @WindowType int getWindowType() { return windowType; } + + static class Builder { + private final WindowManagerService mService; + private final IBinder mToken; + @WindowType + private final int mType; + + private boolean mPersistOnEmpty; + private DisplayContent mDisplayContent; + private boolean mOwnerCanManageAppTokens; + private boolean mRoundedCornerOverlay; + private boolean mFromClientToken; + @Nullable + private Bundle mOptions; + + Builder(WindowManagerService service, IBinder token, int type) { + mService = service; + mToken = token; + mType = type; + } + + /** @see WindowToken#mPersistOnEmpty */ + Builder setPersistOnEmpty(boolean persistOnEmpty) { + mPersistOnEmpty = persistOnEmpty; + return this; + } + + /** Sets the {@link DisplayContent} to be associated. */ + Builder setDisplayContent(DisplayContent dc) { + mDisplayContent = dc; + return this; + } + + /** @see WindowToken#mOwnerCanManageAppTokens */ + Builder setOwnerCanManageAppTokens(boolean ownerCanManageAppTokens) { + mOwnerCanManageAppTokens = ownerCanManageAppTokens; + return this; + } + + /** @see WindowToken#mRoundedCornerOverlay */ + Builder setRoundedCornerOverlay(boolean roundedCornerOverlay) { + mRoundedCornerOverlay = roundedCornerOverlay; + return this; + } + + /** @see WindowToken#mFromClientToken */ + Builder setFromClientToken(boolean fromClientToken) { + mFromClientToken = fromClientToken; + return this; + } + + /** @see WindowToken#mOptions */ + Builder setOptions(Bundle options) { + mOptions = options; + return this; + } + + WindowToken build() { + return new WindowToken(mService, mToken, mType, mPersistOnEmpty, mDisplayContent, + mOwnerCanManageAppTokens, mRoundedCornerOverlay, mFromClientToken, mOptions); + } + } } diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp index 74fbb428fe02..4ce959180753 100644 --- a/services/core/jni/Android.bp +++ b/services/core/jni/Android.bp @@ -34,6 +34,7 @@ cc_library_static { "gnss/GnssMeasurement.cpp", "gnss/GnssMeasurementCallback.cpp", "gnss/Utils.cpp", + "stats/SurfaceFlingerPuller.cpp", "com_android_server_adb_AdbDebuggingManager.cpp", "com_android_server_am_BatteryStatsService.cpp", "com_android_server_biometrics_SurfaceToNativeHandleConverter.cpp", @@ -53,6 +54,7 @@ cc_library_static { "com_android_server_SerialService.cpp", "com_android_server_soundtrigger_middleware_AudioSessionProviderImpl.cpp", "com_android_server_soundtrigger_middleware_ExternalCaptureStateTracker.cpp", + "com_android_server_stats_pull_StatsPullAtomService.cpp", "com_android_server_storage_AppFuseBridge.cpp", "com_android_server_SystemServer.cpp", "com_android_server_tv_TvUinputBridge.cpp", @@ -127,6 +129,7 @@ cc_defaults { "libsensorservice", "libsensorservicehidl", "libgui", + "libtimestats_atoms_proto", "libusbhost", "libtinyalsa", "libEGL", diff --git a/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp index f0210eeb80e8..db5268337f5d 100644 --- a/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp +++ b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp @@ -171,17 +171,23 @@ static inline int32_t readLEInt32(borrowed_fd fd) { return result; } -static inline std::vector<char> readBytes(borrowed_fd fd) { - int32_t size = readLEInt32(fd); - std::vector<char> result(size); - android::base::ReadFully(fd, result.data(), size); - return result; +static inline bool skipBytes(borrowed_fd fd, int* max_size) { + int32_t size = std::min(readLEInt32(fd), *max_size); + if (size <= 0) { + return false; + } + *max_size -= size; + return (TEMP_FAILURE_RETRY(lseek64(fd.get(), size, SEEK_CUR)) >= 0); } static inline int32_t skipIdSigHeaders(borrowed_fd fd) { - readLEInt32(fd); // version - readBytes(fd); // hashingInfo - readBytes(fd); // signingInfo + // version + auto version = readLEInt32(fd); + int max_size = INCFS_MAX_SIGNATURE_SIZE - sizeof(version); + // hashingInfo and signingInfo + if (!skipBytes(fd, &max_size) || !skipBytes(fd, &max_size)) { + return -1; + } return readLEInt32(fd); // size of the verity tree } @@ -253,8 +259,12 @@ static inline InputDescs openLocalFile(JNIEnv* env, const JniIds& jni, jobject s unique_fd idsigFd = openLocalFile(env, jni, shellCommand, idsigPath); if (idsigFd.ok()) { - auto treeSize = verityTreeSizeForFile(size); auto actualTreeSize = skipIdSigHeaders(idsigFd); + if (actualTreeSize < 0) { + ALOGE("Error reading .idsig file: wrong format."); + return {}; + } + auto treeSize = verityTreeSizeForFile(size); if (treeSize != actualTreeSize) { ALOGE("Verity tree size mismatch: %d vs .idsig: %d.", int(treeSize), int(actualTreeSize)); diff --git a/services/core/jni/com_android_server_stats_pull_StatsPullAtomService.cpp b/services/core/jni/com_android_server_stats_pull_StatsPullAtomService.cpp new file mode 100644 index 000000000000..46fe595d49af --- /dev/null +++ b/services/core/jni/com_android_server_stats_pull_StatsPullAtomService.cpp @@ -0,0 +1,61 @@ +/* + * Copyright 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. + */ + +#define LOG_TAG "StatsPullAtomService" + +#include <jni.h> +#include <log/log.h> +#include <nativehelper/JNIHelp.h> +#include <stats_event.h> +#include <stats_pull_atom_callback.h> +#include <statslog.h> + +#include "stats/SurfaceFlingerPuller.h" + +namespace android { + +static server::stats::SurfaceFlingerPuller gSurfaceFlingerPuller; + +static AStatsManager_PullAtomCallbackReturn onSurfaceFlingerPullCallback(int32_t atom_tag, + AStatsEventList* data, + void* cookie) { + return gSurfaceFlingerPuller.pull(atom_tag, data); +} + +static void initializeNativePullers(JNIEnv* env, jobject javaObject) { + // Surface flinger layer & global info. + gSurfaceFlingerPuller = server::stats::SurfaceFlingerPuller(); + AStatsManager_setPullAtomCallback(android::util::SURFACEFLINGER_STATS_GLOBAL_INFO, + /* metadata= */ nullptr, onSurfaceFlingerPullCallback, + /* cookie= */ nullptr); + AStatsManager_setPullAtomCallback(android::util::SURFACEFLINGER_STATS_LAYER_INFO, + /* metadata= */ nullptr, onSurfaceFlingerPullCallback, + /* cookie= */ nullptr); +} + +static const JNINativeMethod sMethods[] = { + {"initializeNativePullers", "()V", (void*)initializeNativePullers}}; + +int register_android_server_stats_pull_StatsPullAtomService(JNIEnv* env) { + int res = jniRegisterNativeMethods(env, "com/android/server/stats/pull/StatsPullAtomService", + sMethods, NELEM(sMethods)); + if (res < 0) { + ALOGE("failed to register native methods"); + } + return res; +} + +} // namespace android
\ No newline at end of file diff --git a/services/core/jni/onload.cpp b/services/core/jni/onload.cpp index f257686cbf3d..b043e643b2bd 100644 --- a/services/core/jni/onload.cpp +++ b/services/core/jni/onload.cpp @@ -61,6 +61,7 @@ int register_android_server_com_android_server_pm_PackageManagerShellCommandData int register_android_server_AdbDebuggingManager(JNIEnv* env); int register_android_server_FaceService(JNIEnv* env); int register_android_server_GpuService(JNIEnv* env); +int register_android_server_stats_pull_StatsPullAtomService(JNIEnv* env); }; using namespace android; @@ -115,5 +116,6 @@ extern "C" jint JNI_OnLoad(JavaVM* vm, void* /* reserved */) register_android_server_AdbDebuggingManager(env); register_android_server_FaceService(env); register_android_server_GpuService(env); + register_android_server_stats_pull_StatsPullAtomService(env); return JNI_VERSION_1_4; } diff --git a/services/core/jni/stats/OWNERS b/services/core/jni/stats/OWNERS new file mode 100644 index 000000000000..2611e5b6cee2 --- /dev/null +++ b/services/core/jni/stats/OWNERS @@ -0,0 +1,8 @@ +jeffreyhuang@google.com +jtnguyen@google.com +muhammadq@google.com +sharaieko@google.com +singhtejinder@google.com +tsaichristine@google.com +yaochen@google.com +yro@google.com diff --git a/services/core/jni/stats/SurfaceFlingerPuller.cpp b/services/core/jni/stats/SurfaceFlingerPuller.cpp new file mode 100644 index 000000000000..0e28da764ea7 --- /dev/null +++ b/services/core/jni/stats/SurfaceFlingerPuller.cpp @@ -0,0 +1,168 @@ +/* + * Copyright 2021 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. + */ + +#define LOG_TAG "SurfaceFlingerPuller" + +#include "SurfaceFlingerPuller.h" + +#include <gui/SurfaceComposerClient.h> +#include <log/log.h> +#include <statslog.h> +#include <timestatsatomsproto/TimeStatsAtomsProtoHeader.h> + +#include <vector> + +namespace android { +namespace server { +namespace stats { + +using android::util::BytesField; +using std::optional; + +namespace { +optional<BytesField> getBytes(const google::protobuf::MessageLite& proto, std::string& data) { + if (!proto.SerializeToString(&data)) { + ALOGW("Unable to serialize surface flinger bytes field"); + return std::nullopt; + } + return {BytesField(data.data(), data.size())}; +} +} // namespace + +AStatsManager_PullAtomCallbackReturn SurfaceFlingerPuller::pull(int32_t atomTag, + AStatsEventList* data) { + // Don't need mutexes here, since there is no global state. + // SurfaceComposerClient is thread safe, and surfaceflinger is internally thread safe. + + bool success = false; + std::string pullDataProto; + status_t err = SurfaceComposerClient::onPullAtom(atomTag, &pullDataProto, &success); + if (!success || err != NO_ERROR) { + ALOGW("Failed to pull atom %" PRId32 + " from surfaceflinger. Success is %d, binder status is %s", + atomTag, (int)success, binder::Status::exceptionToString(err).c_str()); + return AStatsManager_PULL_SKIP; + } + + switch (atomTag) { + case android::util::SURFACEFLINGER_STATS_GLOBAL_INFO: + return parseGlobalInfoPull(pullDataProto, data); + case android::util::SURFACEFLINGER_STATS_LAYER_INFO: + return parseLayerInfoPull(pullDataProto, data); + default: + ALOGW("Invalid atom id for surfaceflinger pullers: %" PRId32, atomTag); + return AStatsManager_PULL_SKIP; + } +} + +AStatsManager_PullAtomCallbackReturn SurfaceFlingerPuller::parseGlobalInfoPull( + const std::string& protoData, AStatsEventList* data) { + android::surfaceflinger::SurfaceflingerStatsGlobalInfoWrapper atomList; + if (!atomList.ParseFromString(protoData)) { + ALOGW("Error parsing surface flinger global stats to proto"); + return AStatsManager_PULL_SKIP; + } + + for (const auto& atom : atomList.atom()) { + // The strings must outlive the BytesFields, which only have a pointer to the data. + std::string frameDurationStr, renderEngineTimeStr, deadlineMissesStr, predictionErrorsStr; + optional<BytesField> frameDuration = getBytes(atom.frame_duration(), frameDurationStr); + optional<BytesField> renderEngineTime = + getBytes(atom.render_engine_timing(), renderEngineTimeStr); + optional<BytesField> deadlineMisses = + getBytes(atom.sf_deadline_misses(), deadlineMissesStr); + optional<BytesField> predictionErrors = + getBytes(atom.sf_prediction_errors(), predictionErrorsStr); + + // Fail if any serialization to bytes failed. + if (!frameDuration || !renderEngineTime || !deadlineMisses || !predictionErrors) { + return AStatsManager_PULL_SKIP; + } + + android::util::addAStatsEvent(data, android::util::SURFACEFLINGER_STATS_GLOBAL_INFO, + atom.total_frames(), atom.missed_frames(), + atom.client_composition_frames(), atom.display_on_millis(), + atom.animation_millis(), atom.event_connection_count(), + frameDuration.value(), renderEngineTime.value(), + atom.total_timeline_frames(), atom.total_janky_frames(), + atom.total_janky_frames_with_long_cpu(), + atom.total_janky_frames_with_long_gpu(), + atom.total_janky_frames_sf_unattributed(), + atom.total_janky_frames_app_unattributed(), + atom.total_janky_frames_sf_scheduling(), + atom.total_jank_frames_sf_prediction_error(), + atom.total_jank_frames_app_buffer_stuffing(), + atom.display_refresh_rate_bucket(), deadlineMisses.value(), + predictionErrors.value(), atom.render_rate_bucket()); + } + return AStatsManager_PULL_SUCCESS; +} + +AStatsManager_PullAtomCallbackReturn SurfaceFlingerPuller::parseLayerInfoPull( + const std::string& protoData, AStatsEventList* data) { + android::surfaceflinger::SurfaceflingerStatsLayerInfoWrapper atomList; + if (!atomList.ParseFromString(protoData)) { + ALOGW("Error parsing surface flinger layer stats to proto"); + return AStatsManager_PULL_SKIP; + } + + for (const auto& atom : atomList.atom()) { + // The strings must outlive the BytesFields, which only have a pointer to the data. + std::string present2PresentStr, post2presentStr, acquire2PresentStr, latch2PresentStr, + desired2PresentStr, post2AcquireStr, frameRateVoteStr, appDeadlineMissesStr; + optional<BytesField> present2Present = + getBytes(atom.present_to_present(), present2PresentStr); + optional<BytesField> post2present = getBytes(atom.post_to_present(), post2presentStr); + optional<BytesField> acquire2Present = + getBytes(atom.acquire_to_present(), acquire2PresentStr); + optional<BytesField> latch2Present = getBytes(atom.latch_to_present(), latch2PresentStr); + optional<BytesField> desired2Present = + getBytes(atom.desired_to_present(), desired2PresentStr); + optional<BytesField> post2Acquire = getBytes(atom.post_to_acquire(), post2AcquireStr); + optional<BytesField> frameRateVote = getBytes(atom.set_frame_rate_vote(), frameRateVoteStr); + optional<BytesField> appDeadlineMisses = + getBytes(atom.app_deadline_misses(), appDeadlineMissesStr); + + // Fail if any serialization to bytes failed. + if (!present2Present || !post2present || !acquire2Present || !latch2Present || + !desired2Present || !post2Acquire || !frameRateVote || !appDeadlineMisses) { + return AStatsManager_PULL_SKIP; + } + + android::util::addAStatsEvent(data, android::util::SURFACEFLINGER_STATS_LAYER_INFO, + atom.layer_name().c_str(), atom.total_frames(), + atom.dropped_frames(), present2Present.value(), + post2present.value(), acquire2Present.value(), + latch2Present.value(), desired2Present.value(), + post2Acquire.value(), atom.late_acquire_frames(), + atom.bad_desired_present_frames(), atom.uid(), + atom.total_timeline_frames(), atom.total_janky_frames(), + atom.total_janky_frames_with_long_cpu(), + atom.total_janky_frames_with_long_gpu(), + atom.total_janky_frames_sf_unattributed(), + atom.total_janky_frames_app_unattributed(), + atom.total_janky_frames_sf_scheduling(), + atom.total_jank_frames_sf_prediction_error(), + atom.total_jank_frames_app_buffer_stuffing(), + atom.display_refresh_rate_bucket(), atom.render_rate_bucket(), + frameRateVote.value(), appDeadlineMisses.value()); + } + return AStatsManager_PULL_SUCCESS; +} + +} // namespace stats +} // namespace server +} // namespace android diff --git a/services/core/jni/stats/SurfaceFlingerPuller.h b/services/core/jni/stats/SurfaceFlingerPuller.h new file mode 100644 index 000000000000..301af1d64a22 --- /dev/null +++ b/services/core/jni/stats/SurfaceFlingerPuller.h @@ -0,0 +1,44 @@ +/* + * Copyright 2021 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. + */ + +#pragma once + +#include <stats_event.h> +#include <stats_pull_atom_callback.h> +#include <utils/String16.h> + +namespace android { +namespace server { +namespace stats { + +/** + * Pulls data from surfaceflinger. + * The indirection is needed because surfaceflinger is a bootstrap process. + */ +class SurfaceFlingerPuller { +public: + AStatsManager_PullAtomCallbackReturn pull(int32_t atomTag, AStatsEventList* data); + +private: + AStatsManager_PullAtomCallbackReturn parseGlobalInfoPull(const std::string& protoData, + AStatsEventList* data); + AStatsManager_PullAtomCallbackReturn parseLayerInfoPull(const std::string& protoData, + AStatsEventList* data); +}; + +} // namespace stats +} // namespace server +} // namespace android
\ No newline at end of file diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java index 6283b4e56402..9a996795622c 100644 --- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java +++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java @@ -626,6 +626,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @EnabledSince(targetSdkVersion = Build.VERSION_CODES.S) private static final long PREVENT_SETTING_PASSWORD_QUALITY_ON_PARENT = 165573442L; + private static final String CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG = + "The alias provided must be contained in the aliases specified in the credential " + + "management app's authentication policy"; + final Context mContext; final Injector mInjector; final IPackageManager mIPackageManager; @@ -2497,9 +2501,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { int reqPolicy, @Nullable String permission) throws SecurityException { ensureLocked(); - final int callingUid = mInjector.binderGetCallingUid(); + final CallerIdentity caller = getCallerIdentity(); - ActiveAdmin result = getActiveAdminWithPolicyForUidLocked(who, reqPolicy, callingUid); + ActiveAdmin result = getActiveAdminWithPolicyForUidLocked(who, reqPolicy, caller.getUid()); if (result != null) { return result; } else if (permission != null && hasCallingPermission(permission)) { @@ -2510,11 +2514,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { // that satisfies the required policy. // Throws a security exception with the right error message. if (who != null) { - final int userId = UserHandle.getUserId(callingUid); - final DevicePolicyData policy = getUserData(userId); + final DevicePolicyData policy = getUserData(caller.getUserId()); ActiveAdmin admin = policy.mAdminMap.get(who); - final boolean isDeviceOwner = isDeviceOwner(admin.info.getComponent(), userId); - final boolean isProfileOwner = isProfileOwner(admin.info.getComponent(), userId); + final boolean isDeviceOwner = isDeviceOwner(admin.info.getComponent(), + caller.getUserId()); + final boolean isProfileOwner = isProfileOwner(admin.info.getComponent(), + caller.getUserId()); if (DA_DISALLOWED_POLICIES.contains(reqPolicy) && !isDeviceOwner && !isProfileOwner) { throw new SecurityException("Admin " + admin.info.getComponent() @@ -2526,7 +2531,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { + admin.info.getTagForPolicy(reqPolicy)); } else { throw new SecurityException("No active admin owned by uid " - + callingUid + " for policy #" + reqPolicy + (permission == null ? "" + + caller.getUid() + " for policy #" + reqPolicy + (permission == null ? "" : ", which doesn't have " + permission)); } } @@ -3617,10 +3622,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { + adminReceiver); return; } - if (admin.getUid() != mInjector.binderGetCallingUid()) { - mContext.enforceCallingOrSelfPermission( - android.Manifest.permission.MANAGE_DEVICE_ADMINS, null); - } + Preconditions.checkCallAuthorization(admin.getUid() == caller.getUid() + || hasCallingOrSelfPermission(permission.MANAGE_DEVICE_ADMINS)); mInjector.binderWithCleanCallingIdentity(() -> removeActiveAdminLocked(adminReceiver, userHandle)); } @@ -4628,8 +4631,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { DevicePolicyEventLogger .createEvent(DevicePolicyEnums.GET_USER_PASSWORD_COMPLEXITY_LEVEL) .setStrings(parent ? CALLED_FROM_PARENT : NOT_CALLED_FROM_PARENT, - mInjector.getPackageManager().getPackagesForUid( - mInjector.binderGetCallingUid())) + mInjector.getPackageManager().getPackagesForUid(caller.getUid())) .write(); enforceUserUnlocked(caller.getUserId()); @@ -5048,8 +5050,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean getDoNotAskCredentialsOnBoot() { - mContext.enforceCallingOrSelfPermission( - android.Manifest.permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT, null); + Preconditions.checkCallAuthorization( + hasCallingOrSelfPermission(permission.QUERY_DO_NOT_ASK_CREDENTIALS_ON_BOOT)); synchronized (getLockObject()) { DevicePolicyData policyData = getUserData(UserHandle.USER_SYSTEM); return policyData.mDoNotAskCredentialsOnBoot; @@ -5450,11 +5452,17 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { boolean isUserSelectable) { final CallerIdentity caller = getCallerIdentity(who, callerPackage); final boolean isCallerDelegate = isCallerDelegate(caller, DELEGATION_CERT_INSTALL); - final boolean isCredentialManagementApp = - isCredentialManagementApp(caller, alias, isUserSelectable); + final boolean isCredentialManagementApp = isCredentialManagementApp(caller); Preconditions.checkCallAuthorization((caller.hasAdminComponent() && (isProfileOwner(caller) || isDeviceOwner(caller))) || (caller.hasPackage() && (isCallerDelegate || isCredentialManagementApp))); + if (isCredentialManagementApp) { + Preconditions.checkCallAuthorization(isUserSelectable, "The credential " + + "management app is not allowed to install a user selectable key pair"); + Preconditions.checkCallAuthorization( + isAliasInCredentialManagementAppPolicy(caller, alias), + CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG); + } checkCanExecuteOrThrowUnsafe(DevicePolicyManager.OPERATION_INSTALL_KEY_PAIR); final long id = mInjector.binderClearCallingIdentity(); @@ -5509,10 +5517,15 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { public boolean removeKeyPair(ComponentName who, String callerPackage, String alias) { final CallerIdentity caller = getCallerIdentity(who, callerPackage); final boolean isCallerDelegate = isCallerDelegate(caller, DELEGATION_CERT_INSTALL); - final boolean isCredentialManagementApp = isCredentialManagementApp(caller, alias); + final boolean isCredentialManagementApp = isCredentialManagementApp(caller); Preconditions.checkCallAuthorization((caller.hasAdminComponent() && (isProfileOwner(caller) || isDeviceOwner(caller))) || (caller.hasPackage() && (isCallerDelegate || isCredentialManagementApp))); + if (isCredentialManagementApp) { + Preconditions.checkCallAuthorization( + isAliasInCredentialManagementAppPolicy(caller, alias), + CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG); + } checkCanExecuteOrThrowUnsafe(DevicePolicyManager.OPERATION_REMOVE_KEY_PAIR); final long id = Binder.clearCallingIdentity(); @@ -5546,8 +5559,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean hasKeyPair(String callerPackage, String alias) { final CallerIdentity caller = getCallerIdentity(callerPackage); + final boolean isCredentialManagementApp = isCredentialManagementApp(caller); Preconditions.checkCallAuthorization(canManageCertificates(caller) - || isCredentialManagementApp(caller, alias)); + || isCredentialManagementApp); + if (isCredentialManagementApp) { + Preconditions.checkCallAuthorization( + isAliasInCredentialManagementAppPolicy(caller, alias), + CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG); + } return mInjector.binderWithCleanCallingIdentity(() -> { try (KeyChainConnection keyChainConnection = @@ -5782,7 +5801,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final CallerIdentity caller = getCallerIdentity(who, callerPackage); final boolean isCallerDelegate = isCallerDelegate(caller, DELEGATION_CERT_INSTALL); - final boolean isCredentialManagementApp = isCredentialManagementApp(caller, alias); + final boolean isCredentialManagementApp = isCredentialManagementApp(caller); if (deviceIdAttestationRequired && attestationUtilsFlags.length > 0) { // TODO: replace enforce methods enforceCallerCanRequestDeviceIdAttestation(caller); @@ -5791,6 +5810,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { Preconditions.checkCallAuthorization((caller.hasAdminComponent() && (isProfileOwner(caller) || isDeviceOwner(caller))) || (caller.hasPackage() && (isCallerDelegate || isCredentialManagementApp))); + if (isCredentialManagementApp) { + Preconditions.checkCallAuthorization( + isAliasInCredentialManagementAppPolicy(caller, alias), + CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG); + } } if (TextUtils.isEmpty(alias)) { @@ -5815,11 +5839,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { keySpec = specBuilder.build(); } - final UserHandle userHandle = mInjector.binderGetCallingUserHandle(); final long id = mInjector.binderClearCallingIdentity(); try { try (KeyChainConnection keyChainConnection = - KeyChain.bindAsUser(mContext, userHandle)) { + KeyChain.bindAsUser(mContext, caller.getUserHandle())) { IKeyChainService keyChain = keyChainConnection.getService(); final int generationResult = keyChain.generateKeyPair(algorithm, @@ -5918,10 +5941,15 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { byte[] cert, byte[] chain, boolean isUserSelectable) { final CallerIdentity caller = getCallerIdentity(who, callerPackage); final boolean isCallerDelegate = isCallerDelegate(caller, DELEGATION_CERT_INSTALL); - final boolean isCredentialManagementApp = isCredentialManagementApp(caller, alias); + final boolean isCredentialManagementApp = isCredentialManagementApp(caller); Preconditions.checkCallAuthorization((caller.hasAdminComponent() && (isProfileOwner(caller) || isDeviceOwner(caller))) || (caller.hasPackage() && (isCallerDelegate || isCredentialManagementApp))); + if (isCredentialManagementApp) { + Preconditions.checkCallAuthorization( + isAliasInCredentialManagementAppPolicy(caller, alias), + CREDENTIAL_MANAGEMENT_APP_INVALID_ALIAS_MSG); + } final long id = mInjector.binderClearCallingIdentity(); try (final KeyChainConnection keyChainConnection = @@ -5953,12 +5981,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void choosePrivateKeyAlias(final int uid, final Uri uri, final String alias, final IBinder response) { + final CallerIdentity caller = getCallerIdentity(); enforceSystemCaller("choose private key alias"); - final UserHandle caller = mInjector.binderGetCallingUserHandle(); // If there is a profile owner, redirect to that; otherwise query the device owner. - ComponentName aliasChooser = getProfileOwnerAsUser(caller.getIdentifier()); - if (aliasChooser == null && caller.isSystem()) { + ComponentName aliasChooser = getProfileOwnerAsUser(caller.getUserId()); + if (aliasChooser == null && caller.getUserHandle().isSystem()) { synchronized (getLockObject()) { final ActiveAdmin deviceOwnerAdmin = getDeviceOwnerAdminLocked(); if (deviceOwnerAdmin != null) { @@ -5980,7 +6008,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { final ComponentName delegateReceiver; delegateReceiver = resolveDelegateReceiver(DELEGATION_CERT_SELECTION, - DeviceAdminReceiver.ACTION_CHOOSE_PRIVATE_KEY_ALIAS, caller.getIdentifier()); + DeviceAdminReceiver.ACTION_CHOOSE_PRIVATE_KEY_ALIAS, caller.getUserId()); final boolean isDelegate; if (delegateReceiver != null) { @@ -5992,7 +6020,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } mInjector.binderWithCleanCallingIdentity(() -> { - mContext.sendOrderedBroadcastAsUser(intent, caller, null, new BroadcastReceiver() { + mContext.sendOrderedBroadcastAsUser(intent, caller.getUserHandle(), null, + new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { final String chosenAlias = getResultData(); @@ -6367,55 +6396,36 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { * privileged APIs. * <p> * This is done by checking that the calling package is authorized to perform the app operation - * {@link android.app.AppOpsManager#OP_MANAGE_CREDENTIALS}. The alias provided must be contained - * in the aliases specified in the credential management app's authentication policy. The - * key pair to install must not be user selectable. + * {@link android.app.AppOpsManager#OP_MANAGE_CREDENTIALS}. * * @param caller the calling identity * @return {@code true} if the calling process is the credential management app. */ - private boolean isCredentialManagementApp(CallerIdentity caller, String alias, - boolean isUserSelectable) { - // Should not be user selectable - if (isUserSelectable) { - Slogf.e(LOG_TAG, "The credential management app is not allowed to install a " - + "user selectable key pair"); - return false; - } - return isCredentialManagementApp(caller, alias); + private boolean isCredentialManagementApp(CallerIdentity caller) { + return mInjector.binderWithCleanCallingIdentity(() -> { + AppOpsManager appOpsManager = mInjector.getAppOpsManager(); + if (appOpsManager == null) return false; + return appOpsManager.noteOpNoThrow(AppOpsManager.OP_MANAGE_CREDENTIALS, caller.getUid(), + caller.getPackageName(), null, null) == AppOpsManager.MODE_ALLOWED; + }); } /** - * Check whether a caller application is the credential mangement app, which can access - * privileged APIs. - * <p> - * This is done by checking that the calling package is authorized to perform the app operation - * {@link android.app.AppOpsManager#OP_MANAGE_CREDENTIALS}. The alias provided must be contained + * If the caller is the credential management app, the alias provided must be contained * in the aliases specified in the credential management app's authentication policy. - * - * @param caller the calling identity - * @return {@code true} if the calling process is the credential management app. */ - private boolean isCredentialManagementApp(CallerIdentity caller, String alias) { + private boolean isAliasInCredentialManagementAppPolicy(CallerIdentity caller, String alias) { return mInjector.binderWithCleanCallingIdentity(() -> { - // Should include alias in authentication policy try (KeyChainConnection connection = KeyChain.bindAsUser(mContext, caller.getUserHandle())) { // The policy will be null if there is no credential management app AppUriAuthenticationPolicy policy = connection.getService().getCredentialManagementAppPolicy(); - if (policy == null || policy.getAppAndUriMappings().isEmpty() - || !containsAlias(policy, alias)) { - return false; - } + return policy != null && !policy.getAppAndUriMappings().isEmpty() + && containsAlias(policy, alias); } catch (RemoteException | InterruptedException e) { return false; } - - AppOpsManager appOpsManager = mInjector.getAppOpsManager(); - if (appOpsManager == null) return false; - return appOpsManager.noteOpNoThrow(AppOpsManager.OP_MANAGE_CREDENTIALS, caller.getUid(), - caller.getPackageName(), null, null) == AppOpsManager.MODE_ALLOWED; }); } @@ -6836,18 +6846,17 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return null; } + final CallerIdentity caller = getCallerIdentity(who); final int frpManagementAgentUid = getFrpManagementAgentUidOrThrow(); final ActiveAdmin admin; synchronized (getLockObject()) { if (who == null) { - Preconditions.checkCallAuthorization( - frpManagementAgentUid == mInjector.binderGetCallingUid() + Preconditions.checkCallAuthorization(frpManagementAgentUid == caller.getUid() || hasCallingPermission(permission.MASTER_CLEAR), "Must be called by the FRP management agent on device"); admin = getDeviceOwnerOrProfileOwnerOfOrganizationOwnedDeviceLocked( UserHandle.getUserId(frpManagementAgentUid)); } else { - final CallerIdentity caller = getCallerIdentity(who); Preconditions.checkCallAuthorization( isDeviceOwner(caller) || isProfileOwnerOfOrganizationOwnedDevice(caller)); admin = getProfileOwnerOrDeviceOwnerLocked(caller); @@ -8420,16 +8429,14 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void clearDeviceOwner(String packageName) { Objects.requireNonNull(packageName, "packageName is null"); - final int callingUid = mInjector.binderGetCallingUid(); - if (!isCallingFromPackage(packageName, callingUid)) { - throw new SecurityException("Invalid packageName"); - } + + final CallerIdentity caller = getCallerIdentity(packageName); synchronized (getLockObject()) { final ComponentName deviceOwnerComponent = mOwners.getDeviceOwnerComponent(); final int deviceOwnerUserId = mOwners.getDeviceOwnerUserId(); if (!mOwners.hasDeviceOwner() || !deviceOwnerComponent.getPackageName().equals(packageName) - || (deviceOwnerUserId != UserHandle.getUserId(callingUid))) { + || (deviceOwnerUserId != caller.getUserId())) { throw new SecurityException( "clearDeviceOwner can only be called by the device owner"); } @@ -9003,7 +9010,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean checkDeviceIdentifierAccess(String packageName, int pid, int uid) { - ensureCallerIdentityMatchesIfNotSystem(packageName, pid, uid); + final CallerIdentity caller = getCallerIdentity(); + ensureCallerIdentityMatchesIfNotSystem(packageName, pid, uid, caller); // Verify that the specified packages matches the provided uid. if (!doesPackageMatchUid(packageName, uid)) { @@ -9011,8 +9019,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } // A device or profile owner must also have the READ_PHONE_STATE permission to access device // identifiers. If the package being checked does not have this permission then deny access. - if (mContext.checkPermission(android.Manifest.permission.READ_PHONE_STATE, pid, uid) - != PackageManager.PERMISSION_GRANTED) { + if (!hasPermission(permission.READ_PHONE_STATE, pid, uid)) { return false; } @@ -9061,10 +9068,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return true; } - private void ensureCallerIdentityMatchesIfNotSystem(String packageName, int pid, int uid) { + private void ensureCallerIdentityMatchesIfNotSystem(String packageName, int pid, int uid, + CallerIdentity caller) { // If the caller is not a system app then it should only be able to check its own device // identifier access. - int callingUid = mInjector.binderGetCallingUid(); + int callingUid = caller.getUid(); int callingPid = mInjector.binderGetCallingPid(); if (UserHandle.getAppId(callingUid) >= Process.FIRST_APPLICATION_UID && (callingUid != uid || callingPid != pid)) { @@ -9242,6 +9250,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { || hasCallingOrSelfPermission(permission.MANAGE_USERS); } + private boolean hasPermission(String permission, int pid, int uid) { + return mContext.checkPermission(permission, pid, uid) == PackageManager.PERMISSION_GRANTED; + } + private boolean hasCallingPermission(String permission) { return mContext.checkCallingPermission(permission) == PackageManager.PERMISSION_GRANTED; } @@ -9615,7 +9627,7 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public boolean isCallerApplicationRestrictionsManagingPackage(String callerPackage) { - return isCallerDelegate(callerPackage, mInjector.binderGetCallingUid(), + return isCallerDelegate(callerPackage, getCallerIdentity().getUid(), DELEGATION_APP_RESTRICTIONS); } @@ -10279,11 +10291,10 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { // Create user. UserHandle user = null; synchronized (getLockObject()) { - final int callingUid = mInjector.binderGetCallingUid(); final long id = mInjector.binderClearCallingIdentity(); try { targetSdkVersion = mInjector.getPackageManagerInternal().getUidTargetSdkVersion( - callingUid); + caller.getUid()); // Return detail error code for checks inside // UserManagerService.createUserInternalUnchecked. @@ -12835,13 +12846,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public Intent createAdminSupportIntent(String restriction) { Objects.requireNonNull(restriction); - final int uid = mInjector.binderGetCallingUid(); - final int userId = UserHandle.getUserId(uid); + final CallerIdentity caller = getCallerIdentity(); Intent intent = null; if (DevicePolicyManager.POLICY_DISABLE_CAMERA.equals(restriction) || DevicePolicyManager.POLICY_DISABLE_SCREEN_CAPTURE.equals(restriction)) { synchronized (getLockObject()) { - final DevicePolicyData policy = getUserData(userId); + final DevicePolicyData policy = getUserData(caller.getUserId()); final int N = policy.mAdminList.size(); for (int i = 0; i < N; i++) { final ActiveAdmin admin = policy.mAdminList.get(i); @@ -12849,7 +12859,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { DevicePolicyManager.POLICY_DISABLE_CAMERA.equals(restriction)) || (admin.disableScreenCapture && DevicePolicyManager .POLICY_DISABLE_SCREEN_CAPTURE.equals(restriction))) { - intent = createShowAdminSupportIntent(admin.info.getComponent(), userId); + intent = createShowAdminSupportIntent(admin.info.getComponent(), + caller.getUserId()); break; } } @@ -12866,7 +12877,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } } else { // if valid, |restriction| can only be a user restriction - intent = mLocalService.createUserRestrictionSupportIntent(userId, restriction); + intent = mLocalService.createUserRestrictionSupportIntent(caller.getUserId(), + restriction); } if (intent != null) { intent.putExtra(DevicePolicyManager.EXTRA_RESTRICTION, restriction); @@ -13043,7 +13055,8 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { @Override public void notifyPendingSystemUpdate(@Nullable SystemUpdateInfo info) { - mContext.enforceCallingOrSelfPermission(permission.NOTIFY_PENDING_SYSTEM_UPDATE, + Preconditions.checkCallAuthorization( + hasCallingOrSelfPermission(permission.NOTIFY_PENDING_SYSTEM_UPDATE), "Only the system update service can broadcast update information"); if (UserHandle.getCallingUserId() != UserHandle.USER_SYSTEM) { @@ -13285,12 +13298,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { public boolean isProvisioningAllowed(String action, String packageName) { Objects.requireNonNull(packageName); - final int callingUid = mInjector.binderGetCallingUid(); + final CallerIdentity caller = getCallerIdentity(); final long ident = mInjector.binderClearCallingIdentity(); try { final int uidForPackage = mInjector.getPackageManager().getPackageUidAsUser( - packageName, UserHandle.getUserId(callingUid)); - Preconditions.checkArgument(callingUid == uidForPackage, + packageName, caller.getUserId()); + Preconditions.checkArgument(caller.getUid() == uidForPackage, "Caller uid doesn't match the one for the provided package."); } catch (NameNotFoundException e) { throw new IllegalArgumentException("Invalid package provided " + packageName, e); @@ -13609,12 +13622,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return; } Objects.requireNonNull(who, "ComponentName is null"); - final int userHandle = mInjector.userHandleGetCallingUserId(); + final CallerIdentity caller = getCallerIdentity(who); synchronized (getLockObject()) { - ActiveAdmin admin = getActiveAdminForUidLocked(who, mInjector.binderGetCallingUid()); + ActiveAdmin admin = getActiveAdminForUidLocked(who, caller.getUid()); if (!TextUtils.equals(admin.shortSupportMessage, message)) { admin.shortSupportMessage = message; - saveSettingsLocked(userHandle); + saveSettingsLocked(caller.getUserId()); } } DevicePolicyEventLogger @@ -13629,8 +13642,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return null; } Objects.requireNonNull(who, "ComponentName is null"); + final CallerIdentity caller = getCallerIdentity(who); synchronized (getLockObject()) { - ActiveAdmin admin = getActiveAdminForUidLocked(who, mInjector.binderGetCallingUid()); + ActiveAdmin admin = getActiveAdminForUidLocked(who, caller.getUid()); return admin.shortSupportMessage; } } @@ -13641,12 +13655,12 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return; } Objects.requireNonNull(who, "ComponentName is null"); - final int userHandle = mInjector.userHandleGetCallingUserId(); + final CallerIdentity caller = getCallerIdentity(who); synchronized (getLockObject()) { - ActiveAdmin admin = getActiveAdminForUidLocked(who, mInjector.binderGetCallingUid()); + ActiveAdmin admin = getActiveAdminForUidLocked(who, caller.getUid()); if (!TextUtils.equals(admin.longSupportMessage, message)) { admin.longSupportMessage = message; - saveSettingsLocked(userHandle); + saveSettingsLocked(caller.getUserId()); } } DevicePolicyEventLogger @@ -13661,8 +13675,9 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return null; } Objects.requireNonNull(who, "ComponentName is null"); + final CallerIdentity caller = getCallerIdentity(who); synchronized (getLockObject()) { - ActiveAdmin admin = getActiveAdminForUidLocked(who, mInjector.binderGetCallingUid()); + ActiveAdmin admin = getActiveAdminForUidLocked(who, caller.getUid()); return admin.longSupportMessage; } } @@ -14304,14 +14319,6 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { return mSecurityLogMonitor.forceLogs(); } - private void enforceCallerSystemUserHandle() { - final int callingUid = mInjector.binderGetCallingUid(); - final int userId = UserHandle.getUserId(callingUid); - if (userId != UserHandle.USER_SYSTEM) { - throw new SecurityException("Caller has to be in user 0"); - } - } - @Override public boolean isUninstallInQueue(final String packageName) { final CallerIdentity caller = getCallerIdentity(); @@ -14495,9 +14502,11 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { */ @Override public void forceUpdateUserSetupComplete() { + final CallerIdentity caller = getCallerIdentity(); Preconditions.checkCallAuthorization( hasCallingOrSelfPermission(permission.MANAGE_PROFILE_AND_DEVICE_OWNERS)); - enforceCallerSystemUserHandle(); + Preconditions.checkCallAuthorization(caller.getUserHandle().isSystem(), + "Caller has to be in user 0"); final int userId = UserHandle.USER_SYSTEM; boolean isUserCompleted = mInjector.settingsSecureGetIntForUser( @@ -16065,14 +16074,13 @@ public class DevicePolicyManagerService extends BaseIDevicePolicyManager { } Preconditions.checkStringNotEmpty(packageName, "Package name is empty"); - final int callingUid = mInjector.binderGetCallingUid(); - final int callingUserId = mInjector.userHandleGetCallingUserId(); - if (!isCallingFromPackage(packageName, callingUid)) { + final CallerIdentity caller = getCallerIdentity(); + if (!isCallingFromPackage(packageName, caller.getUid())) { throw new SecurityException("Input package name doesn't align with actual " + "calling package."); } return mInjector.binderWithCleanCallingIdentity(() -> { - final int workProfileUserId = getManagedUserId(callingUserId); + final int workProfileUserId = getManagedUserId(caller.getUserId()); if (workProfileUserId < 0) { return false; } diff --git a/services/incremental/Android.bp b/services/incremental/Android.bp index 5140b9f6db58..0bd737bec460 100644 --- a/services/incremental/Android.bp +++ b/services/incremental/Android.bp @@ -77,6 +77,7 @@ cc_defaults { "libcutils", "libincfs", "liblog", + "libpermission", "libz", ], } diff --git a/services/incremental/BinderIncrementalService.cpp b/services/incremental/BinderIncrementalService.cpp index f843ea44541e..2f031bfe4f3f 100644 --- a/services/incremental/BinderIncrementalService.cpp +++ b/services/incremental/BinderIncrementalService.cpp @@ -335,20 +335,6 @@ binder::Status BinderIncrementalService::unregisterLoadingProgressListener(int32 return ok(); } -binder::Status BinderIncrementalService::registerStorageHealthListener( - int32_t storageId, - const ::android::os::incremental::StorageHealthCheckParams& healthCheckParams, - const ::android::sp<IStorageHealthListener>& healthListener, bool* _aidl_return) { - *_aidl_return = - mImpl.registerStorageHealthListener(storageId, healthCheckParams, healthListener); - return ok(); -} - -binder::Status BinderIncrementalService::unregisterStorageHealthListener(int32_t storageId) { - mImpl.unregisterStorageHealthListener(storageId); - return ok(); -} - binder::Status BinderIncrementalService::getMetrics(int32_t storageId, android::os::PersistableBundle* _aidl_return) { mImpl.getMetrics(storageId, _aidl_return); diff --git a/services/incremental/BinderIncrementalService.h b/services/incremental/BinderIncrementalService.h index 5c8741bc1f9d..39f1bcb12459 100644 --- a/services/incremental/BinderIncrementalService.h +++ b/services/incremental/BinderIncrementalService.h @@ -95,11 +95,6 @@ public: progressListener, bool* _aidl_return) final; binder::Status unregisterLoadingProgressListener(int32_t storageId, bool* _aidl_return) final; - binder::Status registerStorageHealthListener( - int32_t storageId, - const ::android::os::incremental::StorageHealthCheckParams& healthCheckParams, - const ::android::sp<IStorageHealthListener>& healthListener, bool* _aidl_return) final; - binder::Status unregisterStorageHealthListener(int32_t storageId) final; binder::Status getMetrics(int32_t storageId, android::os::PersistableBundle* _aidl_return) final; diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp index 11a700c8ef9f..4ce336d16f15 100644 --- a/services/incremental/IncrementalService.cpp +++ b/services/incremental/IncrementalService.cpp @@ -2189,29 +2189,6 @@ bool IncrementalService::unregisterLoadingProgressListener(StorageId storage) { return removeTimedJobs(*mProgressUpdateJobQueue, storage); } -bool IncrementalService::registerStorageHealthListener( - StorageId storage, const StorageHealthCheckParams& healthCheckParams, - StorageHealthListener healthListener) { - DataLoaderStubPtr dataLoaderStub; - { - const auto& ifs = getIfs(storage); - if (!ifs) { - return false; - } - std::unique_lock l(ifs->lock); - dataLoaderStub = ifs->dataLoaderStub; - if (!dataLoaderStub) { - return false; - } - } - dataLoaderStub->setHealthListener(healthCheckParams, std::move(healthListener)); - return true; -} - -void IncrementalService::unregisterStorageHealthListener(StorageId storage) { - registerStorageHealthListener(storage, {}, {}); -} - bool IncrementalService::perfLoggingEnabled() { static const bool enabled = base::GetBoolProperty("incremental.perflogging", false); return enabled; @@ -2779,25 +2756,6 @@ void IncrementalService::DataLoaderStub::setCurrentStatus(int newStatus) { mStatusCondition.notify_all(); } -binder::Status IncrementalService::DataLoaderStub::reportStreamHealth(MountId mountId, - int newStatus) { - if (!isValid()) { - return binder::Status:: - fromServiceSpecificError(-EINVAL, - "reportStreamHealth came to invalid DataLoaderStub"); - } - if (id() != mountId) { - LOG(ERROR) << "reportStreamHealth: mount ID mismatch: expected " << id() - << ", but got: " << mountId; - return binder::Status::fromServiceSpecificError(-EPERM, "Mount ID mismatch."); - } - { - std::lock_guard lock(mMutex); - mStreamStatus = newStatus; - } - return binder::Status::ok(); -} - bool IncrementalService::DataLoaderStub::isHealthParamsValid() const { return mHealthCheckParams.blockedTimeoutMs > 0 && mHealthCheckParams.blockedTimeoutMs < mHealthCheckParams.unhealthyTimeoutMs; @@ -2811,33 +2769,6 @@ void IncrementalService::DataLoaderStub::onHealthStatus(const StorageHealthListe } } -static int adjustHealthStatus(int healthStatus, int streamStatus) { - if (healthStatus == IStorageHealthListener::HEALTH_STATUS_OK) { - // everything is good; no need to change status - return healthStatus; - } - int newHeathStatus = healthStatus; - switch (streamStatus) { - case IDataLoaderStatusListener::STREAM_STORAGE_ERROR: - // storage is limited and storage not healthy - newHeathStatus = IStorageHealthListener::HEALTH_STATUS_UNHEALTHY_STORAGE; - break; - case IDataLoaderStatusListener::STREAM_INTEGRITY_ERROR: - // fall through - case IDataLoaderStatusListener::STREAM_SOURCE_ERROR: - // fall through - case IDataLoaderStatusListener::STREAM_TRANSPORT_ERROR: - if (healthStatus == IStorageHealthListener::HEALTH_STATUS_UNHEALTHY) { - newHeathStatus = IStorageHealthListener::HEALTH_STATUS_UNHEALTHY_TRANSPORT; - } - // pending/blocked status due to transportation issues is not regarded as unhealthy - break; - default: - break; - } - return newHeathStatus; -} - void IncrementalService::DataLoaderStub::updateHealthStatus(bool baseline) { LOG(DEBUG) << id() << ": updateHealthStatus" << (baseline ? " (baseline)" : ""); @@ -2915,8 +2846,6 @@ void IncrementalService::DataLoaderStub::updateHealthStatus(bool baseline) { checkBackAfter = unhealthyMonitoring; healthStatusToReport = IStorageHealthListener::HEALTH_STATUS_UNHEALTHY; } - // Adjust health status based on stream status - healthStatusToReport = adjustHealthStatus(healthStatusToReport, mStreamStatus); LOG(DEBUG) << id() << ": updateHealthStatus in " << double(checkBackAfter.count()) / 1000.0 << "secs"; mService.addTimedJob(*mService.mTimedQueue, id(), checkBackAfter, diff --git a/services/incremental/IncrementalService.h b/services/incremental/IncrementalService.h index e3b1e6fb6e48..95a17d1103e1 100644 --- a/services/incremental/IncrementalService.h +++ b/services/incremental/IncrementalService.h @@ -189,10 +189,7 @@ public: bool registerLoadingProgressListener(StorageId storage, StorageLoadingProgressListener progressListener); bool unregisterLoadingProgressListener(StorageId storage); - bool registerStorageHealthListener(StorageId storage, - const StorageHealthCheckParams& healthCheckParams, - StorageHealthListener healthListener); - void unregisterStorageHealthListener(StorageId storage); + RawMetadata getMetadata(StorageId storage, std::string_view path) const; RawMetadata getMetadata(StorageId storage, FileId node) const; @@ -256,7 +253,6 @@ private: private: binder::Status onStatusChanged(MountId mount, int newStatus) final; - binder::Status reportStreamHealth(MountId mount, int newStatus) final; void setCurrentStatus(int newStatus); @@ -319,7 +315,6 @@ private: BootClockTsUs kernelTsUs; } mHealthBase = {TimePoint::max(), kMaxBootClockTsUs}; StorageHealthCheckParams mHealthCheckParams; - int mStreamStatus = content::pm::IDataLoaderStatusListener::STREAM_HEALTHY; std::vector<incfs::ReadInfoWithUid> mLastPendingReads; }; using DataLoaderStubPtr = sp<DataLoaderStub>; diff --git a/services/incremental/TEST_MAPPING b/services/incremental/TEST_MAPPING index d93525600a2d..6aa8a939739a 100644 --- a/services/incremental/TEST_MAPPING +++ b/services/incremental/TEST_MAPPING @@ -24,7 +24,9 @@ }, { "name": "CtsIncrementalInstallHostTestCases" - }, + } + ], + "presubmit-large": [ { "name": "CtsInstalledLoadingProgressHostTests" } diff --git a/services/incremental/test/IncrementalServiceTest.cpp b/services/incremental/test/IncrementalServiceTest.cpp index 14bcd4e7b9ba..6a3d953f74aa 100644 --- a/services/incremental/test/IncrementalServiceTest.cpp +++ b/services/incremental/test/IncrementalServiceTest.cpp @@ -184,18 +184,6 @@ public: setAndReportStatus(id, IDataLoaderStatusListener::DATA_LOADER_IMAGE_READY); return binder::Status::ok(); } - binder::Status storageError(int32_t id) { - if (mListener) { - mListener->reportStreamHealth(id, IDataLoaderStatusListener::STREAM_STORAGE_ERROR); - } - return binder::Status::ok(); - } - binder::Status transportError(int32_t id) { - if (mListener) { - mListener->reportStreamHealth(id, IDataLoaderStatusListener::STREAM_INTEGRITY_ERROR); - } - return binder::Status::ok(); - } int32_t setStorageParams(bool enableReadLogs) { int32_t result = -1; EXPECT_NE(mServiceConnector.get(), nullptr); @@ -1904,87 +1892,6 @@ TEST_F(IncrementalServiceTest, testStartDataLoaderUnbindOnAllDoneWithReadlogs) { ASSERT_EQ(mDataLoader->status(), IDataLoaderStatusListener::DATA_LOADER_DESTROYED); } -TEST_F(IncrementalServiceTest, testRegisterStorageHealthListenerSuccess) { - mIncFs->openMountSuccess(); - sp<NiceMock<MockStorageHealthListener>> listener{new NiceMock<MockStorageHealthListener>}; - sp<NiceMock<MockStorageHealthListener>> newListener{new NiceMock<MockStorageHealthListener>}; - NiceMock<MockStorageHealthListener>* newListenerMock = newListener.get(); - - TemporaryDir tempDir; - int storageId = - mIncrementalService->createStorage(tempDir.path, mDataLoaderParcel, - IncrementalService::CreateOptions::CreateNew); - ASSERT_GE(storageId, 0); - mIncrementalService->startLoading(storageId, std::move(mDataLoaderParcel), {}, {}, listener, - {}); - - StorageHealthCheckParams newParams; - newParams.blockedTimeoutMs = 10000; - newParams.unhealthyTimeoutMs = 20000; - newParams.unhealthyMonitoringMs = 30000; - ASSERT_TRUE(mIncrementalService->registerStorageHealthListener(storageId, std::move(newParams), - newListener)); - - using MS = std::chrono::milliseconds; - using MCS = std::chrono::microseconds; - - const auto blockedTimeout = MS(newParams.blockedTimeoutMs); - const auto unhealthyTimeout = MS(newParams.unhealthyTimeoutMs); - - const uint64_t kFirstTimestampUs = 1000000000ll; - const uint64_t kBlockedTimestampUs = - kFirstTimestampUs - std::chrono::duration_cast<MCS>(blockedTimeout).count(); - const uint64_t kUnhealthyTimestampUs = - kFirstTimestampUs - std::chrono::duration_cast<MCS>(unhealthyTimeout).count(); - - // test that old listener was not called - EXPECT_CALL(*listener.get(), - onHealthStatus(_, IStorageHealthListener::HEALTH_STATUS_READS_PENDING)) - .Times(0); - EXPECT_CALL(*newListenerMock, - onHealthStatus(_, IStorageHealthListener::HEALTH_STATUS_READS_PENDING)) - .Times(1); - EXPECT_CALL(*newListenerMock, onHealthStatus(_, IStorageHealthListener::HEALTH_STATUS_BLOCKED)) - .Times(1); - EXPECT_CALL(*newListenerMock, - onHealthStatus(_, IStorageHealthListener::HEALTH_STATUS_UNHEALTHY_STORAGE)) - .Times(1); - EXPECT_CALL(*newListenerMock, - onHealthStatus(_, IStorageHealthListener::HEALTH_STATUS_UNHEALTHY_TRANSPORT)) - .Times(1); - mIncFs->waitForPendingReadsSuccess(kFirstTimestampUs); - mLooper->mCallback(-1, -1, mLooper->mCallbackData); - - ASSERT_EQ(IStorageHealthListener::HEALTH_STATUS_READS_PENDING, newListener->mStatus); - ASSERT_EQ(storageId, newListener->mStorageId); - - auto timedCallback = mTimedQueue->mWhat; - mTimedQueue->clearJob(storageId); - - // test when health status is blocked with transport error - mDataLoader->transportError(storageId); - mIncFs->waitForPendingReadsSuccess(kBlockedTimestampUs); - timedCallback(); - ASSERT_EQ(IStorageHealthListener::HEALTH_STATUS_BLOCKED, newListener->mStatus); - timedCallback = mTimedQueue->mWhat; - mTimedQueue->clearJob(storageId); - - // test when health status is blocked with storage error - mDataLoader->storageError(storageId); - mIncFs->waitForPendingReadsSuccess(kBlockedTimestampUs); - timedCallback(); - ASSERT_EQ(IStorageHealthListener::HEALTH_STATUS_UNHEALTHY_STORAGE, newListener->mStatus); - timedCallback = mTimedQueue->mWhat; - mTimedQueue->clearJob(storageId); - - // test when health status is unhealthy with transport error - mDataLoader->transportError(storageId); - mIncFs->waitForPendingReadsSuccess(kUnhealthyTimestampUs); - timedCallback(); - ASSERT_EQ(IStorageHealthListener::HEALTH_STATUS_UNHEALTHY_TRANSPORT, newListener->mStatus); - mTimedQueue->clearJob(storageId); -} - static std::vector<PerUidReadTimeouts> createPerUidTimeouts( std::initializer_list<std::tuple<int, int, int, int>> tuples) { std::vector<PerUidReadTimeouts> result; diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java index 4c4c5821a2db..6dedca190e2b 100644 --- a/services/java/com/android/server/SystemServer.java +++ b/services/java/com/android/server/SystemServer.java @@ -2731,13 +2731,6 @@ public final class SystemServer implements Dumpable { t.traceEnd(); } - t.traceBegin("StartSystemUI"); - try { - startSystemUi(context, windowManagerF); - } catch (Throwable e) { - reportWtf("starting System UI", e); - } - t.traceEnd(); // Enable airplane mode in safe mode. setAirplaneMode() cannot be called // earlier as it sends broadcasts to other services. // TODO: This may actually be too late if radio firmware already started leaking @@ -2939,6 +2932,14 @@ public final class SystemServer implements Dumpable { } }, t); + t.traceBegin("StartSystemUI"); + try { + startSystemUi(context, windowManagerF); + } catch (Throwable e) { + reportWtf("starting System UI", e); + } + t.traceEnd(); + t.traceEnd(); // startOtherServices } diff --git a/services/smartspace/java/com/android/server/smartspace/SmartspaceManagerService.java b/services/smartspace/java/com/android/server/smartspace/SmartspaceManagerService.java index b07fe19393b2..39ed4dda35a7 100644 --- a/services/smartspace/java/com/android/server/smartspace/SmartspaceManagerService.java +++ b/services/smartspace/java/com/android/server/smartspace/SmartspaceManagerService.java @@ -156,7 +156,7 @@ public class SmartspaceManagerService extends @NonNull final Consumer<SmartspacePerUserService> c) { ActivityManagerInternal am = LocalServices.getService(ActivityManagerInternal.class); final int userId = am.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), - sessionId.getUserId(), false, ALLOW_NON_FULL, null, null); + sessionId.getUserHandle().getIdentifier(), false, ALLOW_NON_FULL, null, null); if (DEBUG) { Slog.d(TAG, "runForUserLocked:" + func + " from pid=" + Binder.getCallingPid() diff --git a/services/tests/mockingservicestests/src/com/android/server/job/controllers/ConnectivityControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/job/controllers/ConnectivityControllerTest.java index 0cd470ae7ec4..ffbcc45107a1 100644 --- a/services/tests/mockingservicestests/src/com/android/server/job/controllers/ConnectivityControllerTest.java +++ b/services/tests/mockingservicestests/src/com/android/server/job/controllers/ConnectivityControllerTest.java @@ -137,7 +137,7 @@ public class ConnectivityControllerTest { @Test public void testUsable() throws Exception { - final Network net = new Network(101); + final Network net = mock(Network.class); final JobInfo.Builder job = createJob() .setEstimatedNetworkBytes(DataUnit.MEBIBYTES.toBytes(1), DataUnit.MEBIBYTES.toBytes(1)) @@ -148,52 +148,52 @@ public class ConnectivityControllerTest { // Slow network is too slow assertFalse(controller.isSatisfied(createJobStatus(job), net, - createCapabilities().setLinkUpstreamBandwidthKbps(1) - .setLinkDownstreamBandwidthKbps(1), mConstants)); + createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1) + .setLinkDownstreamBandwidthKbps(1).build(), mConstants)); // Slow downstream assertFalse(controller.isSatisfied(createJobStatus(job), net, - createCapabilities().setLinkUpstreamBandwidthKbps(1024) - .setLinkDownstreamBandwidthKbps(1), mConstants)); + createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1024) + .setLinkDownstreamBandwidthKbps(1).build(), mConstants)); // Slow upstream assertFalse(controller.isSatisfied(createJobStatus(job), net, - createCapabilities().setLinkUpstreamBandwidthKbps(1) - .setLinkDownstreamBandwidthKbps(1024), mConstants)); + createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1) + .setLinkDownstreamBandwidthKbps(1024).build(), mConstants)); // Fast network looks great assertTrue(controller.isSatisfied(createJobStatus(job), net, - createCapabilities().setLinkUpstreamBandwidthKbps(1024) - .setLinkDownstreamBandwidthKbps(1024), mConstants)); + createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1024) + .setLinkDownstreamBandwidthKbps(1024).build(), mConstants)); // Slow network still good given time assertTrue(controller.isSatisfied(createJobStatus(job), net, - createCapabilities().setLinkUpstreamBandwidthKbps(130) - .setLinkDownstreamBandwidthKbps(130), mConstants)); + createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(130) + .setLinkDownstreamBandwidthKbps(130).build(), mConstants)); when(mService.getMaxJobExecutionTimeMs(any())).thenReturn(60_000L); // Slow network is too slow assertFalse(controller.isSatisfied(createJobStatus(job), net, - createCapabilities().setLinkUpstreamBandwidthKbps(1) - .setLinkDownstreamBandwidthKbps(1), mConstants)); + createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1) + .setLinkDownstreamBandwidthKbps(1).build(), mConstants)); // Slow downstream assertFalse(controller.isSatisfied(createJobStatus(job), net, - createCapabilities().setLinkUpstreamBandwidthKbps(137) - .setLinkDownstreamBandwidthKbps(1), mConstants)); + createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(137) + .setLinkDownstreamBandwidthKbps(1).build(), mConstants)); // Slow upstream assertFalse(controller.isSatisfied(createJobStatus(job), net, - createCapabilities().setLinkUpstreamBandwidthKbps(1) - .setLinkDownstreamBandwidthKbps(137), mConstants)); + createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1) + .setLinkDownstreamBandwidthKbps(137).build(), mConstants)); // Network good enough assertTrue(controller.isSatisfied(createJobStatus(job), net, - createCapabilities().setLinkUpstreamBandwidthKbps(137) - .setLinkDownstreamBandwidthKbps(137), mConstants)); + createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(137) + .setLinkDownstreamBandwidthKbps(137).build(), mConstants)); // Network slightly too slow given reduced time assertFalse(controller.isSatisfied(createJobStatus(job), net, - createCapabilities().setLinkUpstreamBandwidthKbps(130) - .setLinkDownstreamBandwidthKbps(130), mConstants)); + createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(130) + .setLinkDownstreamBandwidthKbps(130).build(), mConstants)); } @Test public void testInsane() throws Exception { - final Network net = new Network(101); + final Network net = mock(Network.class); final JobInfo.Builder job = createJob() .setEstimatedNetworkBytes(DataUnit.MEBIBYTES.toBytes(1), DataUnit.MEBIBYTES.toBytes(1)) @@ -205,14 +205,15 @@ public class ConnectivityControllerTest { // Suspended networks aren't usable. assertFalse(controller.isSatisfied(createJobStatus(job), net, - createCapabilities().removeCapability(NET_CAPABILITY_NOT_SUSPENDED) - .setLinkUpstreamBandwidthKbps(1024).setLinkDownstreamBandwidthKbps(1024), + createCapabilitiesBuilder().removeCapability(NET_CAPABILITY_NOT_SUSPENDED) + .setLinkUpstreamBandwidthKbps(1024).setLinkDownstreamBandwidthKbps(1024) + .build(), mConstants)); // Not suspended networks are usable. assertTrue(controller.isSatisfied(createJobStatus(job), net, - createCapabilities().setLinkUpstreamBandwidthKbps(1024) - .setLinkDownstreamBandwidthKbps(1024), mConstants)); + createCapabilitiesBuilder().setLinkUpstreamBandwidthKbps(1024) + .setLinkDownstreamBandwidthKbps(1024).build(), mConstants)); } @Test @@ -229,17 +230,17 @@ public class ConnectivityControllerTest { // Uncongested network is whenever { - final Network net = new Network(101); - final NetworkCapabilities caps = createCapabilities() - .addCapability(NET_CAPABILITY_NOT_CONGESTED); + final Network net = mock(Network.class); + final NetworkCapabilities caps = createCapabilitiesBuilder() + .addCapability(NET_CAPABILITY_NOT_CONGESTED).build(); assertTrue(controller.isSatisfied(early, net, caps, mConstants)); assertTrue(controller.isSatisfied(late, net, caps, mConstants)); } // Congested network is more selective { - final Network net = new Network(101); - final NetworkCapabilities caps = createCapabilities(); + final Network net = mock(Network.class); + final NetworkCapabilities caps = createCapabilitiesBuilder().build(); assertFalse(controller.isSatisfied(early, net, caps, mConstants)); assertTrue(controller.isSatisfied(late, net, caps, mConstants)); } @@ -263,10 +264,11 @@ public class ConnectivityControllerTest { // Unmetered network is whenever { - final Network net = new Network(101); - final NetworkCapabilities caps = createCapabilities() + final Network net = mock(Network.class); + final NetworkCapabilities caps = createCapabilitiesBuilder() .addCapability(NET_CAPABILITY_NOT_CONGESTED) - .addCapability(NET_CAPABILITY_NOT_METERED); + .addCapability(NET_CAPABILITY_NOT_METERED) + .build(); assertTrue(controller.isSatisfied(early, net, caps, mConstants)); assertTrue(controller.isSatisfied(late, net, caps, mConstants)); assertTrue(controller.isSatisfied(earlyPrefetch, net, caps, mConstants)); @@ -275,9 +277,10 @@ public class ConnectivityControllerTest { // Metered network is only when prefetching and late { - final Network net = new Network(101); - final NetworkCapabilities caps = createCapabilities() - .addCapability(NET_CAPABILITY_NOT_CONGESTED); + final Network net = mock(Network.class); + final NetworkCapabilities caps = createCapabilitiesBuilder() + .addCapability(NET_CAPABILITY_NOT_CONGESTED) + .build(); assertFalse(controller.isSatisfied(early, net, caps, mConstants)); assertFalse(controller.isSatisfied(late, net, caps, mConstants)); assertFalse(controller.isSatisfied(earlyPrefetch, net, caps, mConstants)); @@ -301,11 +304,12 @@ public class ConnectivityControllerTest { final ConnectivityController controller = new ConnectivityController(mService); - final Network meteredNet = new Network(101); - final NetworkCapabilities meteredCaps = createCapabilities(); - final Network unmeteredNet = new Network(202); - final NetworkCapabilities unmeteredCaps = createCapabilities() - .addCapability(NET_CAPABILITY_NOT_METERED); + final Network meteredNet = mock(Network.class); + final NetworkCapabilities meteredCaps = createCapabilitiesBuilder().build(); + final Network unmeteredNet = mock(Network.class); + final NetworkCapabilities unmeteredCaps = createCapabilitiesBuilder() + .addCapability(NET_CAPABILITY_NOT_METERED) + .build(); final JobStatus red = createJobStatus(createJob() .setEstimatedNetworkBytes(DataUnit.MEBIBYTES.toBytes(1), 0) @@ -610,9 +614,9 @@ public class ConnectivityControllerTest { networked.setStandbyBucket(FREQUENT_INDEX); unnetworked.setStandbyBucket(FREQUENT_INDEX); - final Network cellularNet = new Network(101); + final Network cellularNet = mock(Network.class); final NetworkCapabilities cellularCaps = - createCapabilities().addTransportType(TRANSPORT_CELLULAR); + createCapabilitiesBuilder().addTransportType(TRANSPORT_CELLULAR).build(); final ConnectivityController controller = new ConnectivityController(mService); controller.maybeStartTrackingJobLocked(networked, null); @@ -660,8 +664,8 @@ public class ConnectivityControllerTest { } } - private static NetworkCapabilities createCapabilities() { - return new NetworkCapabilities().addCapability(NET_CAPABILITY_INTERNET) + private static NetworkCapabilities.Builder createCapabilitiesBuilder() { + return new NetworkCapabilities.Builder().addCapability(NET_CAPABILITY_INTERNET) .addCapability(NET_CAPABILITY_NOT_SUSPENDED) .addCapability(NET_CAPABILITY_NOT_VCN_MANAGED) .addCapability(NET_CAPABILITY_VALIDATED); diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt b/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt index 411c31c97120..72bc77ebb9ef 100644 --- a/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt +++ b/services/tests/mockingservicestests/src/com/android/server/pm/PackageManagerServiceHibernationTests.kt @@ -24,6 +24,7 @@ import android.testing.AndroidTestingRunner import android.testing.TestableLooper import android.testing.TestableLooper.RunWithLooper import com.android.server.apphibernation.AppHibernationManagerInternal +import com.android.server.apphibernation.AppHibernationService import com.android.server.extendedtestutils.wheneverStatic import com.android.server.testutils.whenever import org.junit.Assert.assertFalse @@ -61,6 +62,7 @@ class PackageManagerServiceHibernationTests { MockitoAnnotations.initMocks(this) wheneverStatic { DeviceConfig.getBoolean( NAMESPACE_APP_HIBERNATION, KEY_APP_HIBERNATION_ENABLED, false) }.thenReturn(true) + AppHibernationService.sIsServiceEnabled = true rule.system().stageNominalSystemState() whenever(rule.mocks().injector.getLocalService(AppHibernationManagerInternal::class.java)) .thenReturn(appHibernationManager) diff --git a/services/tests/servicestests/res/xml/shortcut_5.xml b/services/tests/servicestests/res/xml/shortcut_5.xml index 9551100cefe1..17c68ee8b935 100644 --- a/services/tests/servicestests/res/xml/shortcut_5.xml +++ b/services/tests/servicestests/res/xml/shortcut_5.xml @@ -73,7 +73,7 @@ android:action="action" android:data="http://www/" android:targetPackage="abc" - android:targetClass=".xyz" + android:targetClass="abc.xyz" android:mimeType="foo/bar" > <categories android:name="cat1" /> diff --git a/services/tests/servicestests/src/com/android/server/am/FgsTempAllowListTest.java b/services/tests/servicestests/src/com/android/server/am/FgsTempAllowListTest.java new file mode 100644 index 000000000000..f85f0f843789 --- /dev/null +++ b/services/tests/servicestests/src/com/android/server/am/FgsTempAllowListTest.java @@ -0,0 +1,77 @@ +/* + * Copyright (C) 2021 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 com.android.server.am; + + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import android.os.SystemClock; +import android.platform.test.annotations.Presubmit; +import android.util.Pair; + +import org.junit.Test; + +/** + * Build/Install/Run: + * atest FrameworksServicesTests:TempAllowListTest + */ +@Presubmit +public class FgsTempAllowListTest { + + /** + * This case tests get(), isAllowed(), remove() interfaces. + */ + @Test + public void testIsAllowed() { + FgsTempAllowList<Integer, String> allowList = new FgsTempAllowList(); + allowList.add(10001, 2000, "description1"); + allowList.add(10002, 2000, "description2"); + + assertTrue(allowList.isAllowed(10001)); + Pair<Long, String> entry1 = allowList.get(10001); + assertNotNull(entry1); + assertEquals(entry1.second, "description1"); + + assertTrue(allowList.isAllowed(10002)); + Pair<Long, String> entry2 = allowList.get(10002); + assertNotNull(entry2); + assertEquals(entry2.second, "description2"); + + allowList.remove(10001); + assertFalse(allowList.isAllowed(10001)); + assertNull(allowList.get(10001)); + } + + /** + * This case tests temp allowlist entry can expire. + */ + @Test + public void testExpired() { + FgsTempAllowList<Integer, String> allowList = new FgsTempAllowList(); + // temp allow for 2000ms. + allowList.add(10001, 2000, "uid1-2000ms"); + // sleep for 3000ms. + SystemClock.sleep(3000); + // entry expired. + assertFalse(allowList.isAllowed(10001)); + assertNull(allowList.get(10001)); + } +} diff --git a/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java b/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java index 49a54ec1354b..aecc7942b266 100644 --- a/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java +++ b/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java @@ -112,14 +112,13 @@ public class RebootEscrowManagerTests { private MockableRebootEscrowInjected mInjected; private RebootEscrowManager mService; private SecretKey mAesKey; + private MockInjector mMockInjector; public interface MockableRebootEscrowInjected { int getBootCount(); long getCurrentTimeMillis(); - boolean forceServerBased(); - void reportMetric(boolean success, int errorCode, int serviceType, int attemptCount, int escrowDurationInSeconds, int vbmetaDigestStatus, int durationSinceBootComplete); } @@ -127,11 +126,12 @@ public class RebootEscrowManagerTests { static class MockInjector extends RebootEscrowManager.Injector { private final IRebootEscrow mRebootEscrow; private final ResumeOnRebootServiceConnection mServiceConnection; - private final RebootEscrowProviderInterface mRebootEscrowProvider; + private final RebootEscrowProviderInterface mDefaultRebootEscrowProvider; private final UserManager mUserManager; private final MockableRebootEscrowInjected mInjected; private final RebootEscrowKeyStoreManager mKeyStoreManager; - private final boolean mServerBased; + private boolean mServerBased; + private RebootEscrowProviderInterface mRebootEscrowProviderInUse; MockInjector(Context context, UserManager userManager, IRebootEscrow rebootEscrow, @@ -149,7 +149,7 @@ public class RebootEscrowManagerTests { return mRebootEscrow; } }; - mRebootEscrowProvider = new RebootEscrowProviderHalImpl(halInjector); + mDefaultRebootEscrowProvider = new RebootEscrowProviderHalImpl(halInjector); mUserManager = userManager; mKeyStoreManager = keyStoreManager; mInjected = injected; @@ -166,7 +166,8 @@ public class RebootEscrowManagerTests { mServerBased = true; RebootEscrowProviderServerBasedImpl.Injector injector = new RebootEscrowProviderServerBasedImpl.Injector(serviceConnection); - mRebootEscrowProvider = new RebootEscrowProviderServerBasedImpl(storage, injector); + mDefaultRebootEscrowProvider = new RebootEscrowProviderServerBasedImpl( + storage, injector); mUserManager = userManager; mKeyStoreManager = keyStoreManager; mInjected = injected; @@ -184,15 +185,23 @@ public class RebootEscrowManagerTests { @Override public boolean serverBasedResumeOnReboot() { - if (mInjected.forceServerBased()) { - return true; - } return mServerBased; } @Override + public RebootEscrowProviderInterface createRebootEscrowProviderIfNeeded() { + mRebootEscrowProviderInUse = mDefaultRebootEscrowProvider; + return mRebootEscrowProviderInUse; + } + + @Override public RebootEscrowProviderInterface getRebootEscrowProvider() { - return mRebootEscrowProvider; + return mRebootEscrowProviderInUse; + } + + @Override + public void clearRebootEscrowProvider() { + mRebootEscrowProviderInUse = null; } @Override @@ -264,13 +273,15 @@ public class RebootEscrowManagerTests { when(mCallbacks.isUserSecure(NONSECURE_SECONDARY_USER_ID)).thenReturn(false); when(mCallbacks.isUserSecure(SECURE_SECONDARY_USER_ID)).thenReturn(true); mInjected = mock(MockableRebootEscrowInjected.class); - mService = new RebootEscrowManager(new MockInjector(mContext, mUserManager, mRebootEscrow, - mKeyStoreManager, mStorage, mInjected), mCallbacks, mStorage); + mMockInjector = new MockInjector(mContext, mUserManager, mRebootEscrow, + mKeyStoreManager, mStorage, mInjected); + mService = new RebootEscrowManager(mMockInjector, mCallbacks, mStorage); } private void setServerBasedRebootEscrowProvider() throws Exception { - mService = new RebootEscrowManager(new MockInjector(mContext, mUserManager, - mServiceConnection, mKeyStoreManager, mStorage, mInjected), mCallbacks, mStorage); + mMockInjector = new MockInjector(mContext, mUserManager, mServiceConnection, + mKeyStoreManager, mStorage, mInjected); + mService = new RebootEscrowManager(mMockInjector, mCallbacks, mStorage); } @Test @@ -317,6 +328,7 @@ public class RebootEscrowManagerTests { doThrow(ServiceSpecificException.class).when(mRebootEscrow).storeKey(any()); mService.clearRebootEscrow(); verify(mRebootEscrow).storeKey(eq(new byte[32])); + assertNull(mMockInjector.getRebootEscrowProvider()); } @Test @@ -785,7 +797,7 @@ public class RebootEscrowManagerTests { assertNull( mStorage.getString(RebootEscrowManager.REBOOT_ESCROW_ARMED_KEY, null, USER_SYSTEM)); // Change the provider to server based, expect the reboot to fail - when(mInjected.forceServerBased()).thenReturn(true); + mMockInjector.mServerBased = true; assertEquals(ARM_REBOOT_ERROR_PROVIDER_MISMATCH, mService.armRebootEscrowIfNeeded()); assertNull( mStorage.getString(RebootEscrowManager.REBOOT_ESCROW_ARMED_KEY, null, USER_SYSTEM)); diff --git a/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java index 352832b34c96..da6c30e1cb0a 100644 --- a/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/net/NetworkPolicyManagerServiceTest.java @@ -1093,7 +1093,7 @@ public class NetworkPolicyManagerServiceTest { // first, pretend that wifi network comes online. no policy active, // which means we shouldn't push limit to interface. snapshots = List.of(buildWifi()); - when(mConnManager.getAllNetworkStateSnapshot()).thenReturn(snapshots); + when(mConnManager.getAllNetworkStateSnapshots()).thenReturn(snapshots); mPolicyListener.expect().onMeteredIfacesChanged(any()); mServiceContext.sendBroadcast(new Intent(CONNECTIVITY_ACTION)); @@ -1101,7 +1101,7 @@ public class NetworkPolicyManagerServiceTest { // now change cycle to be on 15th, and test in early march, to verify we // pick cycle day in previous month. - when(mConnManager.getAllNetworkStateSnapshot()).thenReturn(snapshots); + when(mConnManager.getAllNetworkStateSnapshots()).thenReturn(snapshots); // pretend that 512 bytes total have happened stats = new NetworkStats(getElapsedRealtime(), 1) @@ -1362,7 +1362,7 @@ public class NetworkPolicyManagerServiceTest { .insertEntry(TEST_IFACE, 0L, 0L, 0L, 0L); { - when(mConnManager.getAllNetworkStateSnapshot()).thenReturn(snapshots); + when(mConnManager.getAllNetworkStateSnapshots()).thenReturn(snapshots); when(mStatsService.getNetworkTotalBytes(sTemplateWifi, TIME_FEB_15, currentTimeMillis())).thenReturn(stats.getTotalBytes()); @@ -1485,7 +1485,7 @@ public class NetworkPolicyManagerServiceTest { } private PersistableBundle setupUpdateMobilePolicyCycleTests() throws RemoteException { - when(mConnManager.getAllNetworkStateSnapshot()) + when(mConnManager.getAllNetworkStateSnapshots()) .thenReturn(new ArrayList<NetworkStateSnapshot>()); setupTelephonySubscriptionManagers(FAKE_SUB_ID, FAKE_SUBSCRIBER_ID); @@ -1498,7 +1498,7 @@ public class NetworkPolicyManagerServiceTest { @Test public void testUpdateMobilePolicyCycleWithNullConfig() throws RemoteException { - when(mConnManager.getAllNetworkStateSnapshot()) + when(mConnManager.getAllNetworkStateSnapshots()) .thenReturn(new ArrayList<NetworkStateSnapshot>()); setupTelephonySubscriptionManagers(FAKE_SUB_ID, FAKE_SUBSCRIBER_ID); @@ -2089,7 +2089,7 @@ public class NetworkPolicyManagerServiceTest { TEST_NETWORK, buildNetworkCapabilities(TEST_SUB_ID, roaming), buildLinkProperties(TEST_IFACE), TEST_IMSI, TYPE_MOBILE)); - when(mConnManager.getAllNetworkStateSnapshot()).thenReturn(snapshots); + when(mConnManager.getAllNetworkStateSnapshots()).thenReturn(snapshots); } private void expectDefaultCarrierConfig() throws Exception { diff --git a/services/tests/servicestests/src/com/android/server/pm/IncrementalStatesTest.java b/services/tests/servicestests/src/com/android/server/pm/IncrementalStatesTest.java deleted file mode 100644 index 7b9a00d582be..000000000000 --- a/services/tests/servicestests/src/com/android/server/pm/IncrementalStatesTest.java +++ /dev/null @@ -1,164 +0,0 @@ -/* - * 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 com.android.server.pm; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import android.content.pm.PackageManager; -import android.os.ConditionVariable; -import android.os.incremental.IStorageHealthListener; -import android.platform.test.annotations.Presubmit; - -import androidx.test.filters.MediumTest; -import androidx.test.runner.AndroidJUnit4; - -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -import java.util.concurrent.atomic.AtomicInteger; - -/** - * Unit tests for {@link IncrementalStates}. - * Run with: atest -c FrameworksServicesTests:com.android.server.pm.IncrementalStatesTest - */ -@Presubmit -@RunWith(AndroidJUnit4.class) -@MediumTest -public class IncrementalStatesTest { - private IncrementalStates mIncrementalStates; - private ConditionVariable mUnstartableCalled = new ConditionVariable(); - private ConditionVariable mFullyLoadedCalled = new ConditionVariable(); - private AtomicInteger mUnstartableReason = new AtomicInteger(0); - private static final int WAIT_TIMEOUT_MILLIS = 1000; /* 1 second */ - private IncrementalStates.Callback mCallback = new IncrementalStates.Callback() { - @Override - public void onPackageUnstartable(int reason) { - mUnstartableCalled.open(); - mUnstartableReason.set(reason); - } - - @Override - public void onPackageStartable() { - } - - @Override - public void onPackageFullyLoaded() { - mFullyLoadedCalled.open(); - } - }; - - /** - * Setup the tests as if the package has just been committed. - * By default the package is now startable and is loading. - */ - @Before - public void setUp() { - mIncrementalStates = new IncrementalStates(); - assertFalse(mIncrementalStates.getIncrementalStatesInfo().isStartable()); - mIncrementalStates.setCallback(mCallback); - mIncrementalStates.onCommit(true); - // Test that package is now startable and loading - assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable()); - assertTrue(mIncrementalStates.getIncrementalStatesInfo().isLoading()); - mUnstartableCalled.close(); - mFullyLoadedCalled.close(); - } - - /** - * Test that the package is still startable when Incremental Storage is unhealthy. - */ - @Test - public void testStartableTransition_IncrementalStorageUnhealthy() { - mIncrementalStates.onStorageHealthStatusChanged( - IStorageHealthListener.HEALTH_STATUS_UNHEALTHY); - // Test that package is still startable - assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS)); - assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable()); - assertEquals(PackageManager.UNSTARTABLE_REASON_UNKNOWN, mUnstartableReason.get()); - } - - /** - * Test that the package is still startable when Incremental Storage has pending reads. - */ - @Test - public void testStartableTransition_IncrementalStorageReadsPending() - throws InterruptedException { - mIncrementalStates.onStorageHealthStatusChanged( - IStorageHealthListener.HEALTH_STATUS_READS_PENDING); - // Test that package is still startable - assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS)); - assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable()); - } - - /** - * Test that the package is still startable when health status indicate storage issues. - */ - @Test - public void testStartableTransition_IncrementalStorageBlocked() { - mIncrementalStates.onStorageHealthStatusChanged( - IStorageHealthListener.HEALTH_STATUS_UNHEALTHY_STORAGE); - // Test that package is still startable - assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS)); - assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable()); - assertEquals(PackageManager.UNSTARTABLE_REASON_UNKNOWN, - mUnstartableReason.get()); - } - - /** - * Test that the package is still startable when health status indicates transport issues. - */ - @Test - public void testStartableTransition_DataLoaderIntegrityError() { - mIncrementalStates.onStorageHealthStatusChanged( - IStorageHealthListener.HEALTH_STATUS_UNHEALTHY_TRANSPORT); - // Test that package is still startable - assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS)); - assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable()); - assertEquals(PackageManager.UNSTARTABLE_REASON_UNKNOWN, - mUnstartableReason.get()); - } - - /** - * Test that when loading progress is 1, the package becomes fully loaded, and the change of - * Incremental Storage health status does not affect the startable state. - */ - @Test - public void testStartableTransition_HealthStatusChangeWhenFullyLoaded() - throws InterruptedException { - mIncrementalStates.setProgress(1.0f); - // Test that package is now fully loaded - assertTrue(mFullyLoadedCalled.block(WAIT_TIMEOUT_MILLIS)); - assertFalse(mIncrementalStates.getIncrementalStatesInfo().isLoading()); - mIncrementalStates.onStorageHealthStatusChanged( - IStorageHealthListener.HEALTH_STATUS_UNHEALTHY); - // Test that package is still startable - assertFalse(mUnstartableCalled.block(WAIT_TIMEOUT_MILLIS)); - assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable()); - } - - /** - * Test startability transitions if app crashes or anrs - */ - @Test - public void testStartableTransition_AppCrashOrAnr() { - mIncrementalStates.onCrashOrAnr(); - assertTrue(mIncrementalStates.getIncrementalStatesInfo().isStartable()); - } -} diff --git a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest12.java b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest12.java index fd3e7a8e110d..478aa415f954 100644 --- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest12.java +++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest12.java @@ -15,6 +15,8 @@ */ package com.android.server.pm; +import static android.provider.DeviceConfig.NAMESPACE_SYSTEMUI; + import static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.list; import android.app.PendingIntent; @@ -22,6 +24,9 @@ import android.app.appsearch.PackageIdentifier; import android.content.pm.AppSearchShortcutInfo; import android.os.RemoteException; import android.os.UserHandle; +import android.provider.DeviceConfig; + +import com.android.internal.config.sysui.SystemUiDeviceConfigFlags; import java.util.Random; @@ -33,7 +38,12 @@ import java.util.Random; public class ShortcutManagerTest12 extends BaseShortcutManagerTest { public void testUpdateShortcutVisibility_updatesShortcutSchema() { - + if (!DeviceConfig.getBoolean(NAMESPACE_SYSTEMUI, + SystemUiDeviceConfigFlags.DARK_LAUNCH_REMOTE_PREDICTION_SERVICE_ENABLED, + false)) { + // no-op if app-search integration is disabled. + return; + } final byte[] cert = new byte[20]; new Random().nextBytes(cert); diff --git a/services/tests/servicestests/src/com/android/server/pm/permission/LegacyPermissionManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/pm/permission/LegacyPermissionManagerServiceTest.java index 4f6441ff4e62..acd3fcab5e52 100644 --- a/services/tests/servicestests/src/com/android/server/pm/permission/LegacyPermissionManagerServiceTest.java +++ b/services/tests/servicestests/src/com/android/server/pm/permission/LegacyPermissionManagerServiceTest.java @@ -27,7 +27,9 @@ import static org.testng.Assert.assertThrows; import android.app.AppOpsManager; import android.app.admin.DevicePolicyManager; import android.content.Context; +import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; +import android.os.Build; import android.os.Process; import androidx.test.InstrumentationRegistry; @@ -46,8 +48,12 @@ public class LegacyPermissionManagerServiceTest { private static final int APP_UID = Process.FIRST_APPLICATION_UID; private static final int APP_PID = 5678; + private static final String CHECK_DEVICE_IDENTIFIER_MESSAGE = "testCheckDeviceIdentifierAccess"; + private static final String CHECK_PHONE_NUMBER_MESSAGE = "testCheckPhoneNumberAccess"; + private LegacyPermissionManagerService mLegacyPermissionManagerService; private Context mContext; + private String mPackageName; @Mock private LegacyPermissionManagerService.Injector mInjector; @@ -63,6 +69,7 @@ public class LegacyPermissionManagerServiceTest { MockitoAnnotations.initMocks(this); mContext = InstrumentationRegistry.getContext(); + mPackageName = mContext.getPackageName(); mLegacyPermissionManagerService = new LegacyPermissionManagerService(mContext, mInjector); } @@ -74,7 +81,7 @@ public class LegacyPermissionManagerServiceTest { assertThrows(SecurityException.class, () -> mLegacyPermissionManagerService.checkDeviceIdentifierAccess( - mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null, + mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null, APP_PID, SYSTEM_UID)); } @@ -86,7 +93,7 @@ public class LegacyPermissionManagerServiceTest { assertThrows(SecurityException.class, () -> mLegacyPermissionManagerService.checkDeviceIdentifierAccess( - mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null, + mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null, SYSTEM_PID, APP_UID)); } @@ -97,7 +104,7 @@ public class LegacyPermissionManagerServiceTest { setupCheckDeviceIdentifierAccessTest(APP_PID, APP_UID); int result = mLegacyPermissionManagerService.checkDeviceIdentifierAccess( - mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null, APP_PID, + mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null, APP_PID, APP_UID); assertEquals(PackageManager.PERMISSION_DENIED, result); @@ -108,7 +115,7 @@ public class LegacyPermissionManagerServiceTest { // The system UID should always have access to device identifiers. setupCheckDeviceIdentifierAccessTest(SYSTEM_PID, SYSTEM_UID); int result = mLegacyPermissionManagerService.checkDeviceIdentifierAccess( - mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null, SYSTEM_PID, + mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null, SYSTEM_PID, SYSTEM_UID); assertEquals(PackageManager.PERMISSION_GRANTED, result); @@ -123,7 +130,7 @@ public class LegacyPermissionManagerServiceTest { APP_PID, APP_UID)).thenReturn(PackageManager.PERMISSION_GRANTED); int result = mLegacyPermissionManagerService.checkDeviceIdentifierAccess( - mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null, APP_PID, + mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null, APP_PID, APP_UID); assertEquals(PackageManager.PERMISSION_GRANTED, result); @@ -135,11 +142,11 @@ public class LegacyPermissionManagerServiceTest { // device identifiers. setupCheckDeviceIdentifierAccessTest(SYSTEM_PID, SYSTEM_UID); when(mAppOpsManager.noteOpNoThrow(eq(AppOpsManager.OPSTR_READ_DEVICE_IDENTIFIERS), - eq(APP_UID), eq(mContext.getPackageName()), any(), any())).thenReturn( + eq(APP_UID), eq(mPackageName), any(), any())).thenReturn( AppOpsManager.MODE_ALLOWED); int result = mLegacyPermissionManagerService.checkDeviceIdentifierAccess( - mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null, APP_PID, + mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null, APP_PID, APP_UID); assertEquals(PackageManager.PERMISSION_GRANTED, result); @@ -150,32 +157,228 @@ public class LegacyPermissionManagerServiceTest { // Apps that pass a DevicePolicyManager device / profile owner check should have access to // device identifiers. setupCheckDeviceIdentifierAccessTest(SYSTEM_PID, SYSTEM_UID); - when(mDevicePolicyManager.hasDeviceIdentifierAccess(mContext.getPackageName(), APP_PID, + when(mDevicePolicyManager.hasDeviceIdentifierAccess(mPackageName, APP_PID, APP_UID)).thenReturn(true); int result = mLegacyPermissionManagerService.checkDeviceIdentifierAccess( - mContext.getPackageName(), "testCheckDeviceIdentifierAccess", null, APP_PID, + mPackageName, CHECK_DEVICE_IDENTIFIER_MESSAGE, null, APP_PID, APP_UID); assertEquals(PackageManager.PERMISSION_GRANTED, result); } + @Test + public void checkPhoneNumberAccess_callingAppUidMismatch_throwsException() throws Exception { + // An app can check its own phone number access, but an exception should be + // thrown if an app attempts to check the phone number access of another app's UID. + setupCheckPhoneNumberAccessTest(APP_PID, APP_UID); + + assertThrows(SecurityException.class, + () -> mLegacyPermissionManagerService.checkPhoneNumberAccess( + mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, + SYSTEM_UID)); + } + + @Test + public void checkPhoneNumberAccess_callingAppPidMismatch_throwsException() throws Exception { + // An app can check its own phone number access, but an exception should be + // thrown if an app attempts to check the phone number access of another app's PID. + setupCheckPhoneNumberAccessTest(APP_PID, APP_UID); + + assertThrows(SecurityException.class, + () -> mLegacyPermissionManagerService.checkPhoneNumberAccess( + mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, SYSTEM_PID, + APP_UID)); + } + + @Test + public void checkPhoneNumberAccess_callingAppIdWithoutAccess_returnsDenied() throws Exception { + // Since an app can check its own phone number access, this test verifies all checks + // are performed and the expected result is returned when an app does not have access. + setupCheckPhoneNumberAccessTest(APP_PID, APP_UID); + + int result = mLegacyPermissionManagerService.checkPhoneNumberAccess( + mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID); + + assertEquals(PackageManager.PERMISSION_DENIED, result); + } + + @Test + public void checkPhoneNumberAccess_nullPackageName_returnsDenied() throws Exception { + // While a null value can be provided for the package name only the privileged + // permission test would be able to proceed. Verify that a null value results in a + // denied response instead of a NullPointerException. + setupCheckPhoneNumberAccessTest(APP_PID, APP_UID); + + int result = mLegacyPermissionManagerService.checkPhoneNumberAccess(mPackageName, + CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID); + + assertEquals(PackageManager.PERMISSION_DENIED, result); + } + + @Test + public void checkPhoneNumberAccess_hasPrivilegedPermission_returnsGranted() throws Exception { + // An app with the READ_PRIVILEGED_PHONE_STATE should have access to the phone number. + setupCheckPhoneNumberAccessTest(SYSTEM_PID, SYSTEM_UID); + when(mInjector.checkPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, + APP_PID, APP_UID)).thenReturn(PackageManager.PERMISSION_GRANTED); + + int result = mLegacyPermissionManagerService.checkPhoneNumberAccess( + null, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID); + + assertEquals(PackageManager.PERMISSION_GRANTED, result); + } + + @Test + public void checkPhoneNumberAccess_targetPreRWithReadPhoneState_returnsGranted() + throws Exception { + // Prior to R an app could access the phone number with the READ_PHONE_STATE permission, but + // both the permission and the appop must be granted. If the permission is granted but the + // appop is not then AppOpsManager#MODE_IGNORED should be returned to indicate that this + // should be a silent failure. + setupCheckPhoneNumberAccessTest(SYSTEM_PID, SYSTEM_UID); + setPackageTargetSdk(Build.VERSION_CODES.Q); + + grantPermissionAndAppop(android.Manifest.permission.READ_PHONE_STATE, null); + int resultWithoutAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess( + mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID); + grantPermissionAndAppop(android.Manifest.permission.READ_PHONE_STATE, + AppOpsManager.OPSTR_READ_PHONE_STATE); + int resultWithAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess(mPackageName, + CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID); + + assertEquals(AppOpsManager.MODE_IGNORED, resultWithoutAppop); + assertEquals(PackageManager.PERMISSION_GRANTED, resultWithAppop); + } + + @Test + public void checkPhoneNumberAccess_targetRWithReadPhoneState_returnsDenied() throws Exception { + // Apps targeting R+ with just the READ_PHONE_STATE permission granted should not have + // access to the phone number; PERMISSION_DENIED should be returned both with and without + // the appop granted since this check should be skipped for target SDK R+. + setupCheckPhoneNumberAccessTest(SYSTEM_PID, SYSTEM_UID); + + grantPermissionAndAppop(android.Manifest.permission.READ_PHONE_STATE, null); + int resultWithoutAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess( + mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID); + grantPermissionAndAppop(android.Manifest.permission.READ_PHONE_STATE, + AppOpsManager.OPSTR_READ_PHONE_STATE); + int resultWithAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess(mPackageName, + CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID); + + assertEquals(PackageManager.PERMISSION_DENIED, resultWithoutAppop); + assertEquals(PackageManager.PERMISSION_DENIED, resultWithAppop); + } + + @Test + public void checkPhoneNumberAccess_smsHandler_returnsGranted() throws Exception { + // The default SMS handler should have the WRITE_SMS appop granted and have access to the + // phone number. + setupCheckPhoneNumberAccessTest(APP_PID, APP_UID); + grantPermissionAndAppop(null, AppOpsManager.OPSTR_WRITE_SMS); + + int result = mLegacyPermissionManagerService.checkPhoneNumberAccess(mPackageName, + CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID); + + assertEquals(PackageManager.PERMISSION_GRANTED, result); + } + + @Test + public void checkPhoneNumberAccess_readPhoneNumbersGranted_returnsGranted() + throws Exception { + // Access to the phone number should be granted to an app with the READ_PHONE_NUMBERS + // permission and appop set. + setupCheckPhoneNumberAccessTest(APP_PID, APP_UID); + + grantPermissionAndAppop(android.Manifest.permission.READ_PHONE_NUMBERS, null); + int resultWithoutAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess( + mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID); + grantPermissionAndAppop(android.Manifest.permission.READ_PHONE_NUMBERS, + AppOpsManager.OPSTR_READ_PHONE_NUMBERS); + int resultWithAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess(mPackageName, + CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID); + + assertEquals(PackageManager.PERMISSION_DENIED, resultWithoutAppop); + assertEquals(PackageManager.PERMISSION_GRANTED, resultWithAppop); + } + + @Test + public void checkPhoneNumberAccess_readSmsGranted_returnsGranted() throws Exception { + // Access to the phone number should be granted to an app with the READ_SMS permission and + // appop set. + setupCheckPhoneNumberAccessTest(APP_PID, APP_UID); + + grantPermissionAndAppop(android.Manifest.permission.READ_SMS, null); + int resultWithoutAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess( + mPackageName, CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID); + grantPermissionAndAppop(android.Manifest.permission.READ_SMS, AppOpsManager.OPSTR_READ_SMS); + int resultWithAppop = mLegacyPermissionManagerService.checkPhoneNumberAccess(mPackageName, + CHECK_PHONE_NUMBER_MESSAGE, null, APP_PID, APP_UID); + + assertEquals(PackageManager.PERMISSION_DENIED, resultWithoutAppop); + assertEquals(PackageManager.PERMISSION_GRANTED, resultWithAppop); + } + + /** + * Configures device identifier access tests to fail; tests verifying access should individually + * set an access check to succeed to verify access when that condition is met. + */ private void setupCheckDeviceIdentifierAccessTest(int callingPid, int callingUid) { + setupAccessTest(callingPid, callingUid); + + when(mDevicePolicyManager.hasDeviceIdentifierAccess(anyString(), anyInt(), + anyInt())).thenReturn(false); + when(mInjector.getSystemService(eq(Context.DEVICE_POLICY_SERVICE))).thenReturn( + mDevicePolicyManager); + } + + /** + * Configures phone number access tests to fail; tests verifying access should individually set + * an access check to succeed to verify access when that condition is met. + */ + private void setupCheckPhoneNumberAccessTest(int callingPid, int callingUid) throws Exception { + setupAccessTest(callingPid, callingUid); + setPackageTargetSdk(Build.VERSION_CODES.R); + } + + /** + * Configures the common mocks for any access tests using the provided {@code callingPid} + * and {@code callingUid}. + */ + private void setupAccessTest(int callingPid, int callingUid) { when(mInjector.getCallingPid()).thenReturn(callingPid); when(mInjector.getCallingUid()).thenReturn(callingUid); - // Configure the checkDeviceIdentifierAccess tests to fail all access checks, then each test - // can individually set the access check to pass for verification. when(mInjector.checkPermission(anyString(), anyInt(), anyInt())).thenReturn( PackageManager.PERMISSION_DENIED); when(mAppOpsManager.noteOpNoThrow(anyString(), anyInt(), anyString(), any(), any())).thenReturn(AppOpsManager.MODE_DEFAULT); when(mInjector.getSystemService(eq(Context.APP_OPS_SERVICE))).thenReturn(mAppOpsManager); + } - when(mDevicePolicyManager.hasDeviceIdentifierAccess(anyString(), anyInt(), - anyInt())).thenReturn(false); - when(mInjector.getSystemService(eq(Context.DEVICE_POLICY_SERVICE))).thenReturn( - mDevicePolicyManager); + /** + * Sets the returned {@code targetSdkVersion} for the package under test. + */ + private void setPackageTargetSdk(int targetSdkVersion) throws Exception { + ApplicationInfo appInfo = new ApplicationInfo(); + appInfo.targetSdkVersion = targetSdkVersion; + when(mInjector.getApplicationInfo(eq(mPackageName), eq(APP_UID))).thenReturn(appInfo); + } + + /** + * Configures the mocks to return {@code PackageManager.PERMISSION_GRANTED} for the specified + * {@code permission} and {@code AppOpsManager.MODE_ALLOWED} for the provided {@code appop} + * when queried for the package under test. + */ + private void grantPermissionAndAppop(String permission, String appop) { + if (permission != null) { + when(mInjector.checkPermission(permission, APP_PID, APP_UID)).thenReturn( + PackageManager.PERMISSION_GRANTED); + } + if (appop != null) { + when(mAppOpsManager.noteOpNoThrow(eq(appop), eq(APP_UID), eq(mPackageName), any(), + any())).thenReturn(AppOpsManager.MODE_ALLOWED); + } } } diff --git a/services/tests/servicestests/src/com/android/server/uwb/UwbServiceImplTest.java b/services/tests/servicestests/src/com/android/server/uwb/UwbServiceImplTest.java index 2f5a5cc97117..11554c7a7dc5 100644 --- a/services/tests/servicestests/src/com/android/server/uwb/UwbServiceImplTest.java +++ b/services/tests/servicestests/src/com/android/server/uwb/UwbServiceImplTest.java @@ -16,6 +16,8 @@ package com.android.server.uwb; +import static android.Manifest.permission.UWB_PRIVILEGED; + import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; @@ -24,11 +26,13 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.clearInvocations; +import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; +import android.content.AttributionSource; import android.content.Context; import android.os.IBinder; import android.os.PersistableBundle; @@ -58,6 +62,11 @@ import org.mockito.MockitoAnnotations; @SmallTest @Presubmit public class UwbServiceImplTest { + private static final int UID = 343453; + private static final String PACKAGE_NAME = "com.uwb.test"; + private static final AttributionSource ATTRIBUTION_SOURCE = + new AttributionSource.Builder(UID).setPackageName(PACKAGE_NAME).build(); + @Mock private IUwbAdapter mVendorService; @Mock private IBinder mVendorServiceBinder; @Mock private Context mContext; @@ -72,6 +81,7 @@ public class UwbServiceImplTest { public void setUp() throws Exception { MockitoAnnotations.initMocks(this); when(mUwbInjector.getVendorService()).thenReturn(mVendorService); + when(mUwbInjector.checkUwbRangingPermissionForDataDelivery(any(), any())).thenReturn(true); when(mVendorService.asBinder()).thenReturn(mVendorServiceBinder); mUwbServiceImpl = new UwbServiceImpl(mContext, mUwbInjector); } @@ -129,10 +139,11 @@ public class UwbServiceImplTest { final IBinder cbBinder = mock(IBinder.class); when(cb.asBinder()).thenReturn(cbBinder); - mUwbServiceImpl.openRanging(sessionHandle, cb, parameters); + mUwbServiceImpl.openRanging(ATTRIBUTION_SOURCE, sessionHandle, cb, parameters); verify(mVendorService).openRanging( - eq(sessionHandle), mRangingCbCaptor.capture(), eq(parameters)); + eq(ATTRIBUTION_SOURCE), eq(sessionHandle), mRangingCbCaptor.capture(), + eq(parameters)); assertThat(mRangingCbCaptor.getValue()).isNotNull(); } @@ -182,10 +193,11 @@ public class UwbServiceImplTest { final IBinder cbBinder = mock(IBinder.class); when(cb.asBinder()).thenReturn(cbBinder); - mUwbServiceImpl.openRanging(sessionHandle, cb, parameters); + mUwbServiceImpl.openRanging(ATTRIBUTION_SOURCE, sessionHandle, cb, parameters); verify(mVendorService).openRanging( - eq(sessionHandle), mRangingCbCaptor.capture(), eq(parameters)); + eq(ATTRIBUTION_SOURCE), eq(sessionHandle), mRangingCbCaptor.capture(), + eq(parameters)); assertThat(mRangingCbCaptor.getValue()).isNotNull(); // Invoke vendor service callbacks and ensure that the corresponding app callback is @@ -242,10 +254,11 @@ public class UwbServiceImplTest { final IBinder cbBinder = mock(IBinder.class); when(cb.asBinder()).thenReturn(cbBinder); - mUwbServiceImpl.openRanging(sessionHandle, cb, parameters); + mUwbServiceImpl.openRanging(ATTRIBUTION_SOURCE, sessionHandle, cb, parameters); verify(mVendorService).openRanging( - eq(sessionHandle), mRangingCbCaptor.capture(), eq(parameters)); + eq(ATTRIBUTION_SOURCE), eq(sessionHandle), mRangingCbCaptor.capture(), + eq(parameters)); assertThat(mRangingCbCaptor.getValue()).isNotNull(); verify(cbBinder).linkToDeath(mClientDeathCaptor.capture(), anyInt()); @@ -275,13 +288,14 @@ public class UwbServiceImplTest { final IBinder cbBinder = mock(IBinder.class); when(cb.asBinder()).thenReturn(cbBinder); - mUwbServiceImpl.openRanging(sessionHandle, cb, parameters); + mUwbServiceImpl.openRanging(ATTRIBUTION_SOURCE, sessionHandle, cb, parameters); verify(mVendorServiceBinder).linkToDeath(mVendorServiceDeathCaptor.capture(), anyInt()); assertThat(mVendorServiceDeathCaptor.getValue()).isNotNull(); verify(mVendorService).openRanging( - eq(sessionHandle), mRangingCbCaptor.capture(), eq(parameters)); + eq(ATTRIBUTION_SOURCE), eq(sessionHandle), mRangingCbCaptor.capture(), + eq(parameters)); assertThat(mRangingCbCaptor.getValue()).isNotNull(); clearInvocations(cb); @@ -296,4 +310,56 @@ public class UwbServiceImplTest { eq(sessionHandle), eq(RangingSession.Callback.REASON_UNKNOWN), argThat((p) -> p.isEmpty())); } + + @Test + public void testThrowSecurityExceptionWhenCalledWithoutUwbPrivilegedPermission() + throws Exception { + doThrow(new SecurityException()).when(mContext).enforceCallingOrSelfPermission( + eq(UWB_PRIVILEGED), any()); + final IUwbAdapterStateCallbacks cb = mock(IUwbAdapterStateCallbacks.class); + try { + mUwbServiceImpl.registerAdapterStateCallbacks(cb); + fail(); + } catch (SecurityException e) { /* pass */ } + } + + @Test + public void testThrowSecurityExceptionWhenOpenRangingCalledWithoutUwbRangingPermission() + throws Exception { + doThrow(new SecurityException()).when(mUwbInjector).enforceUwbRangingPermissionForPreflight( + any()); + + final SessionHandle sessionHandle = new SessionHandle(5); + final IUwbRangingCallbacks cb = mock(IUwbRangingCallbacks.class); + final PersistableBundle parameters = new PersistableBundle(); + final IBinder cbBinder = mock(IBinder.class); + when(cb.asBinder()).thenReturn(cbBinder); + try { + mUwbServiceImpl.openRanging(ATTRIBUTION_SOURCE, sessionHandle, cb, parameters); + fail(); + } catch (SecurityException e) { /* pass */ } + } + + @Test + public void testOnRangingResultCallbackNotSentWithoutUwbRangingPermission() throws Exception { + final SessionHandle sessionHandle = new SessionHandle(5); + final IUwbRangingCallbacks cb = mock(IUwbRangingCallbacks.class); + final PersistableBundle parameters = new PersistableBundle(); + final IBinder cbBinder = mock(IBinder.class); + when(cb.asBinder()).thenReturn(cbBinder); + + mUwbServiceImpl.openRanging(ATTRIBUTION_SOURCE, sessionHandle, cb, parameters); + + verify(mVendorService).openRanging( + eq(ATTRIBUTION_SOURCE), eq(sessionHandle), mRangingCbCaptor.capture(), + eq(parameters)); + assertThat(mRangingCbCaptor.getValue()).isNotNull(); + + when(mUwbInjector.checkUwbRangingPermissionForDataDelivery(any(), any())).thenReturn(false); + + // Ensure the ranging cb is not delivered to the client. + final RangingReport rangingReport = new RangingReport.Builder().build(); + mRangingCbCaptor.getValue().onRangingResult(sessionHandle, rangingReport); + verify(cb, never()).onRangingResult(sessionHandle, rangingReport); + } } diff --git a/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java b/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java index 162b2c4ac2d0..9dffed20afea 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/BubbleExtractorTest.java @@ -154,7 +154,7 @@ public class BubbleExtractorTest extends UiServiceTestCase { } void setUpBubblesEnabled(boolean feature, int app, int channel) { - when(mConfig.bubblesEnabled()).thenReturn(feature); + when(mConfig.bubblesEnabled(mUser)).thenReturn(feature); when(mConfig.getBubblePreference(anyString(), anyInt())).thenReturn(app); mChannel.setAllowBubbles(channel); } diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java index c11ac3a3e3a1..6722fff80d0b 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationAssistantsTest.java @@ -213,7 +213,7 @@ public class NotificationAssistantsTest extends UiServiceTestCase { mAssistants.loadDefaultsFromConfig(); assertEquals(new ArraySet<>(Arrays.asList(oldDefaultComponent)), mAssistants.getDefaultComponents()); - assertNull(mAssistants.getDefaultFromConfig()); + assertNull(mAssistants.mDefaultFromConfig); // Test loadDefaultFromConfig(false) only updates the mDefaultFromConfig when(mContext.getResources().getString( diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java index 37d7198ef150..5743decbfe24 100755 --- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java @@ -684,10 +684,11 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { private void setUpPrefsForBubbles(String pkg, int uid, boolean globalEnabled, int pkgPref, boolean channelEnabled) { - Settings.Global.putInt(mContext.getContentResolver(), - Settings.Global.NOTIFICATION_BUBBLES, globalEnabled ? 1 : 0); + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.NOTIFICATION_BUBBLES, globalEnabled ? 1 : 0); mService.mPreferencesHelper.updateBubblesEnabled(); - assertEquals(globalEnabled, mService.mPreferencesHelper.bubblesEnabled()); + assertEquals(globalEnabled, mService.mPreferencesHelper.bubblesEnabled( + mock(UserHandle.class))); try { mBinderService.setBubblesAllowed(pkg, uid, pkgPref); } catch (RemoteException e) { @@ -4764,8 +4765,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { @Test public void testAreBubblesEnabled_false() throws Exception { - Settings.Global.putInt(mContext.getContentResolver(), - Settings.Global.NOTIFICATION_BUBBLES, 0); + Settings.Secure.putInt(mContext.getContentResolver(), + Settings.Secure.NOTIFICATION_BUBBLES, 0); mService.mPreferencesHelper.updateBubblesEnabled(); assertFalse(mBinderService.areBubblesEnabled(UserHandle.getUserHandleForUid(mUid))); } @@ -5753,11 +5754,12 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { } @Test - public void testNASSettingUpgrade_userSetNull_showOnBoarding() throws RemoteException { + public void testNASSettingUpgrade_userSetNull_noOnBoarding() throws RemoteException { ComponentName newDefaultComponent = ComponentName.unflattenFromString("package/Component1"); TestableNotificationManagerService service = spy(mService); int userId = 11; setUsers(new int[]{userId}); + when(mUm.getProfileIds(userId, false)).thenReturn(new int[]{userId}); setNASMigrationDone(false, userId); when(mAssistants.getDefaultFromConfig()) .thenReturn(newDefaultComponent); @@ -5766,29 +5768,29 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { when(mAssistants.hasUserSet(userId)).thenReturn(true); service.migrateDefaultNASShowNotificationIfNecessary(); - assertFalse(service.isNASMigrationDone(userId)); - verify(service, times(1)).createNASUpgradeNotification(eq(userId)); - verify(mAssistants, times(0)).resetDefaultFromConfig(); + assertTrue(service.isNASMigrationDone(userId)); + verify(service, times(0)).createNASUpgradeNotification(eq(userId)); + verify(mAssistants, times(1)).clearDefaults(); + } - //Test user clear data before enable/disable from onboarding notification - ArrayMap<Boolean, ArrayList<ComponentName>> changedListeners = - generateResetComponentValues(); - when(mListeners.resetComponents(anyString(), anyInt())).thenReturn(changedListeners); - ArrayMap<Boolean, ArrayList<ComponentName>> changes = new ArrayMap<>(); - changes.put(true, new ArrayList(Arrays.asList(newDefaultComponent))); - changes.put(false, new ArrayList()); - when(mAssistants.resetComponents(anyString(), anyInt())).thenReturn(changes); + @Test + public void testNASSettingUpgrade_userSetSameDefault_noOnBoarding() throws RemoteException { + ComponentName defaultComponent = ComponentName.unflattenFromString("package/Component1"); + TestableNotificationManagerService service = spy(mService); + int userId = 11; + setUsers(new int[]{userId}); + when(mUm.getProfileIds(userId, false)).thenReturn(new int[]{userId}); + setNASMigrationDone(false, userId); + when(mAssistants.getDefaultFromConfig()) + .thenReturn(defaultComponent); + when(mAssistants.getAllowedComponents(anyInt())) + .thenReturn(new ArrayList(Arrays.asList(defaultComponent))); + when(mAssistants.hasUserSet(userId)).thenReturn(true); - //Clear data - service.getBinderService().clearData("package", userId, false); - //Test migrate flow again service.migrateDefaultNASShowNotificationIfNecessary(); - - //The notification should be still there - assertFalse(service.isNASMigrationDone(userId)); - verify(service, times(2)).createNASUpgradeNotification(eq(userId)); - verify(mAssistants, times(0)).resetDefaultFromConfig(); - assertEquals(null, service.getApprovedAssistant(userId)); + assertTrue(service.isNASMigrationDone(userId)); + verify(service, times(0)).createNASUpgradeNotification(eq(userId)); + verify(mAssistants, times(1)).resetDefaultFromConfig(); } @Test @@ -5842,6 +5844,9 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { int userId1 = 11; int userId2 = 12; setUsers(new int[]{userId1, userId2}); + when(mUm.getProfileIds(userId1, false)).thenReturn(new int[]{userId1}); + when(mUm.getProfileIds(userId2, false)).thenReturn(new int[]{userId2}); + setNASMigrationDone(false, userId1); setNASMigrationDone(false, userId2); when(mAssistants.getDefaultComponents()) @@ -5868,6 +5873,43 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { } @Test + public void testNASSettingUpgrade_multiProfile() throws RemoteException { + ComponentName oldDefaultComponent = ComponentName.unflattenFromString("package/Component1"); + ComponentName newDefaultComponent = ComponentName.unflattenFromString("package/Component2"); + TestableNotificationManagerService service = spy(mService); + int userId1 = 11; + int userId2 = 12; //work profile + setUsers(new int[]{userId1, userId2}); + when(mUm.isManagedProfile(userId2)).thenReturn(true); + when(mUm.getProfileIds(userId1, false)).thenReturn(new int[]{userId1, userId2}); + + setNASMigrationDone(false, userId1); + setNASMigrationDone(false, userId2); + when(mAssistants.getDefaultComponents()) + .thenReturn(new ArraySet<>(Arrays.asList(oldDefaultComponent))); + when(mAssistants.getDefaultFromConfig()) + .thenReturn(newDefaultComponent); + //Both profiles: need onboarding + when(mAssistants.getAllowedComponents(userId1)) + .thenReturn(Arrays.asList(oldDefaultComponent)); + when(mAssistants.getAllowedComponents(userId2)) + .thenReturn(Arrays.asList(oldDefaultComponent)); + + when(mAssistants.hasUserSet(userId1)).thenReturn(true); + when(mAssistants.hasUserSet(userId2)).thenReturn(true); + + service.migrateDefaultNASShowNotificationIfNecessary(); + assertFalse(service.isNASMigrationDone(userId1)); + assertFalse(service.isNASMigrationDone(userId2)); + + // only user1 get notification + verify(service, times(1)).createNASUpgradeNotification(eq(userId1)); + verify(service, times(0)).createNASUpgradeNotification(eq(userId2)); + } + + + + @Test public void testNASSettingUpgrade_clearDataAfterMigrationIsDone() throws RemoteException { ComponentName defaultComponent = ComponentName.unflattenFromString("package/Component"); TestableNotificationManagerService service = spy(mService); @@ -5898,15 +5940,21 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { } @Test - public void testNASUpgradeNotificationDisableBroadcast() { - int userId = 11; - setUsers(new int[]{userId}); + public void testNASUpgradeNotificationDisableBroadcast_multiProfile() { + int userId1 = 11; + int userId2 = 12; + setUsers(new int[]{userId1, userId2}); + when(mUm.isManagedProfile(userId2)).thenReturn(true); + when(mUm.getProfileIds(userId1, false)).thenReturn(new int[]{userId1, userId2}); + TestableNotificationManagerService service = spy(mService); - setNASMigrationDone(false, userId); + setNASMigrationDone(false, userId1); + setNASMigrationDone(false, userId2); - simulateNASUpgradeBroadcast(ACTION_DISABLE_NAS, userId); + simulateNASUpgradeBroadcast(ACTION_DISABLE_NAS, userId1); - assertTrue(service.isNASMigrationDone(userId)); + assertTrue(service.isNASMigrationDone(userId1)); + assertTrue(service.isNASMigrationDone(userId2)); // User disabled the NAS from notification, the default stored in xml should be null // rather than the new default verify(mAssistants, times(1)).clearDefaults(); @@ -5914,7 +5962,7 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { //No more notification after disabled service.migrateDefaultNASShowNotificationIfNecessary(); - verify(service, times(0)).createNASUpgradeNotification(eq(userId)); + verify(service, times(0)).createNASUpgradeNotification(anyInt()); } @Test @@ -5922,6 +5970,8 @@ public class NotificationManagerServiceTest extends UiServiceTestCase { int userId1 = 11; int userId2 = 12; setUsers(new int[]{userId1, userId2}); + when(mUm.getProfileIds(userId1, false)).thenReturn(new int[]{userId1}); + TestableNotificationManagerService service = spy(mService); setNASMigrationDone(false, userId1); setNASMigrationDone(false, userId2); diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java index 04c144a4ce7e..1b26352abe35 100644 --- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java +++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java @@ -87,7 +87,6 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; -import android.os.Process; import android.os.RemoteCallback; import android.os.RemoteException; import android.os.UserHandle; @@ -110,7 +109,6 @@ import android.util.Xml; import androidx.test.InstrumentationRegistry; import androidx.test.runner.AndroidJUnit4; -import com.android.internal.util.FastXmlSerializer; import com.android.server.UiServiceTestCase; import org.json.JSONArray; @@ -120,8 +118,6 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; -import org.xmlpull.v1.XmlPullParser; -import org.xmlpull.v1.XmlSerializer; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; @@ -202,7 +198,8 @@ public class PreferencesHelperTest extends UiServiceTestCase { contentResolver.setFallbackToExisting(false); Secure.putIntForUser(contentResolver, Secure.NOTIFICATION_BADGING, 1, UserHandle.getUserId(UID_N_MR1)); - Global.putInt(contentResolver, Global.NOTIFICATION_BUBBLES, 1); + Secure.putIntForUser(contentResolver, Secure.NOTIFICATION_BUBBLES, 1, + UserHandle.getUserId(UID_N_MR1)); ContentProvider testContentProvider = mock(ContentProvider.class); mTestIContentProvider = mock(IContentProvider.class, invocation -> { @@ -2131,18 +2128,33 @@ public class PreferencesHelperTest extends UiServiceTestCase { @Test public void testBubblesOverrideTrue() { - Global.putInt(getContext().getContentResolver(), - Global.NOTIFICATION_BUBBLES, 1); + Secure.putIntForUser(getContext().getContentResolver(), + Secure.NOTIFICATION_BUBBLES, 1, + USER.getIdentifier()); mHelper.updateBubblesEnabled(); // would be called by settings observer - assertTrue(mHelper.bubblesEnabled()); + assertTrue(mHelper.bubblesEnabled(USER)); } @Test public void testBubblesOverrideFalse() { - Global.putInt(getContext().getContentResolver(), - Global.NOTIFICATION_BUBBLES, 0); + Secure.putIntForUser(getContext().getContentResolver(), + Secure.NOTIFICATION_BUBBLES, 0, + USER.getIdentifier()); + mHelper.updateBubblesEnabled(); // would be called by settings observer + assertFalse(mHelper.bubblesEnabled(USER)); + } + + @Test + public void testBubblesOverrideUserIsolation() throws Exception { + Secure.putIntForUser(getContext().getContentResolver(), + Secure.NOTIFICATION_BUBBLES, 0, + USER.getIdentifier()); + Secure.putIntForUser(getContext().getContentResolver(), + Secure.NOTIFICATION_BUBBLES, 1, + USER2.getIdentifier()); mHelper.updateBubblesEnabled(); // would be called by settings observer - assertFalse(mHelper.bubblesEnabled()); + assertFalse(mHelper.bubblesEnabled(USER)); + assertTrue(mHelper.bubblesEnabled(USER2)); } @Test diff --git a/services/tests/wmtests/AndroidManifest.xml b/services/tests/wmtests/AndroidManifest.xml index 0ed037c7e70a..04db6861e694 100644 --- a/services/tests/wmtests/AndroidManifest.xml +++ b/services/tests/wmtests/AndroidManifest.xml @@ -66,6 +66,18 @@ <activity android:name="com.android.server.wm.TaskStackChangedListenerTest$ResumeWhilePausingActivity" android:resumeWhilePausing="true"/> <activity android:name="com.android.server.wm.ActivityLeakTests$DetectLeakActivity" /> + <!-- + Simulate the common trampoline task that uses floating/translucent theme to avoid double + starting windows and animations of task open. + --> + <activity android:name="com.android.server.wm.ActivityOptionsTest$TrampolineActivity" + android:taskAffinity="com.android.frameworks.wmtests.trampoline" + android:theme="@android:style/Theme.Translucent.NoTitleBar" + android:turnScreenOn="true" + android:showWhenLocked="true" /> + <activity android:name="com.android.server.wm.ActivityOptionsTest$MainActivity" + android:turnScreenOn="true" + android:showWhenLocked="true" /> </application> <instrumentation diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityOptionsTest.java b/services/tests/wmtests/src/com/android/server/wm/ActivityOptionsTest.java index 8983b4e28619..b4fbf5fe40eb 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityOptionsTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityOptionsTest.java @@ -20,17 +20,36 @@ import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD; import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_ROTATE; +import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; + import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import android.app.Activity; +import android.app.ActivityManager.RunningTaskInfo; import android.app.ActivityOptions; +import android.app.Instrumentation; +import android.app.Instrumentation.ActivityMonitor; +import android.content.ComponentName; +import android.content.Context; +import android.content.Intent; +import android.os.Binder; import android.os.Bundle; +import android.os.IBinder; import android.platform.test.annotations.Presubmit; +import android.view.SurfaceControl; +import android.window.TaskOrganizer; import androidx.test.filters.MediumTest; import org.junit.Test; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + /** * Build/Install/Run: * atest WmTests:ActivityOptionsTest @@ -70,4 +89,78 @@ public class ActivityOptionsTest { assertTrue(restoredOpts.getTaskOverlay()); assertTrue(restoredOpts.canTaskOverlayResume()); } + + @Test + public void testTransferLaunchCookie() { + final Binder cookie = new Binder(); + final ActivityOptions options = ActivityOptions.makeBasic(); + options.setLaunchCookie(cookie); + final Instrumentation instrumentation = getInstrumentation(); + final Context context = instrumentation.getContext(); + final ComponentName trampoline = new ComponentName(context, TrampolineActivity.class); + final ComponentName main = new ComponentName(context, MainActivity.class); + final Intent intent = new Intent().setComponent(trampoline) + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + final ActivityMonitor monitor = new ActivityMonitor(main.getClassName(), + null /* result */, false /* block */); + instrumentation.addMonitor(monitor); + final CountDownLatch mainLatch = new CountDownLatch(1); + final IBinder[] appearedCookies = new IBinder[2]; + final TaskOrganizer organizer = new TaskOrganizer() { + @Override + public void onTaskAppeared(RunningTaskInfo taskInfo, SurfaceControl leash) { + try (SurfaceControl.Transaction t = new SurfaceControl.Transaction()) { + t.setVisibility(leash, true /* visible */).apply(); + } + int cookieIndex = -1; + if (trampoline.equals(taskInfo.baseActivity)) { + cookieIndex = 0; + } else if (main.equals(taskInfo.baseActivity)) { + cookieIndex = 1; + mainLatch.countDown(); + } + if (cookieIndex >= 0) { + appearedCookies[cookieIndex] = taskInfo.launchCookies.isEmpty() + ? null : taskInfo.launchCookies.get(0); + } + } + }; + Activity mainActivity = null; + try { + organizer.registerOrganizer(); + context.startActivity(intent, options.toBundle()); + try { + mainLatch.await(10, TimeUnit.SECONDS); + } catch (InterruptedException ignored) { + } + mainActivity = monitor.getLastActivity(); + + assertNotNull(mainActivity); + assertNotEquals(TrampolineActivity.sTaskId, mainActivity.getTaskId()); + assertNull("Trampoline task must not have cookie", appearedCookies[0]); + assertEquals("Main task must get the same cookie", cookie, appearedCookies[1]); + } finally { + organizer.unregisterOrganizer(); + instrumentation.removeMonitor(monitor); + if (mainActivity != null) { + mainActivity.finish(); + } + } + } + + public static class TrampolineActivity extends Activity { + static int sTaskId; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + sTaskId = getTaskId(); + startActivity(new Intent(this, MainActivity.class) + .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); + finish(); + } + } + + public static class MainActivity extends Activity { + } } diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java index 8cede6df491d..bd143f8a5c35 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java @@ -387,6 +387,27 @@ public class ActivityRecordTests extends WindowTestsBase { } @Test + public void testRelaunchClearTopWaitingTranslucent() { + final ActivityRecord activity = createActivityWithTask(); + final Task task = activity.getTask(); + activity.setState(Task.ActivityState.RESUMED, "Testing"); + + task.onRequestedOverrideConfigurationChanged(task.getConfiguration()); + activity.setLastReportedConfiguration(new MergedConfiguration(new Configuration(), + activity.getConfiguration())); + + activity.info.configChanges &= ~CONFIG_ORIENTATION; + final Configuration newConfig = new Configuration(task.getConfiguration()); + newConfig.orientation = newConfig.orientation == ORIENTATION_PORTRAIT + ? ORIENTATION_LANDSCAPE + : ORIENTATION_PORTRAIT; + task.onRequestedOverrideConfigurationChanged(newConfig); + task.mTranslucentActivityWaiting = activity; + ensureActivityConfiguration(activity); + assertNull(task.mTranslucentActivityWaiting); + } + + @Test public void testSetsRelaunchReason_NonResizeConfigChanges() { final ActivityRecord activity = createActivityWithTask(); final Task task = activity.getTask(); diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java index 7df17fd4b3c6..31d46125fd70 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaPolicyBuilderTest.java @@ -586,10 +586,13 @@ public class DisplayAreaPolicyBuilderTest { .setTaskDisplayAreas(Lists.newArrayList(mTda2))) .build(mWms); - final WindowToken token = new WindowToken(mWms, mock(IBinder.class), - TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent, - true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */, - false /* fromClientToken */, null /* options */); + final WindowToken token = new WindowToken.Builder(mWms, mock(IBinder.class), + TYPE_STATUS_BAR) + .setDisplayContent(mDisplayContent) + .setPersistOnEmpty(true) + .setOwnerCanManageAppTokens(true) + .build(); + policy.addWindow(token); // By default, window are always added to the root. @@ -600,10 +603,13 @@ public class DisplayAreaPolicyBuilderTest { // When the window has options for target root id, attach it to the target root. final Bundle options = new Bundle(); options.putInt(KEY_ROOT_DISPLAY_AREA_ID, mGroupRoot2.mFeatureId); - final WindowToken token2 = new WindowToken(mWms, mock(IBinder.class), - TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent, - true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */, - false /* fromClientToken */, options); + final WindowToken token2 = new WindowToken.Builder(mWms, mock(IBinder.class), + TYPE_STATUS_BAR) + .setDisplayContent(mDisplayContent) + .setPersistOnEmpty(true) + .setOwnerCanManageAppTokens(true) + .setOptions(options) + .build(); policy.addWindow(token2); assertThat(token2.isDescendantOf(mGroupRoot2)).isTrue(); @@ -631,14 +637,18 @@ public class DisplayAreaPolicyBuilderTest { }) .build(mWms); - final WindowToken token1 = new WindowToken(mWms, mock(IBinder.class), - TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent, - true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */, - false /* fromClientToken */, null /* options */); - final WindowToken token2 = new WindowToken(mWms, mock(IBinder.class), - TYPE_WALLPAPER, true /* persistOnEmpty */, mDisplayContent, - true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */, - false /* fromClientToken */, null /* options */); + final WindowToken token1 = new WindowToken.Builder(mWms, mock(IBinder.class), + TYPE_STATUS_BAR) + .setDisplayContent(mDisplayContent) + .setPersistOnEmpty(true) + .setOwnerCanManageAppTokens(true) + .build(); + final WindowToken token2 = new WindowToken.Builder(mWms, mock(IBinder.class), + TYPE_WALLPAPER) + .setDisplayContent(mDisplayContent) + .setPersistOnEmpty(true) + .setOwnerCanManageAppTokens(true) + .build(); policy.addWindow(token1); policy.addWindow(token2); @@ -682,18 +692,26 @@ public class DisplayAreaPolicyBuilderTest { options1.putInt("HIERARCHY_ROOT_ID", mGroupRoot1.mFeatureId); final Bundle options2 = new Bundle(); options2.putInt("HIERARCHY_ROOT_ID", mGroupRoot2.mFeatureId); - final WindowToken token0 = new WindowToken(mWms, mock(IBinder.class), - TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent, - true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */, - false /* fromClientToken */, null /* options */); - final WindowToken token1 = new WindowToken(mWms, mock(IBinder.class), - TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent, - true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */, - false /* fromClientToken */, options1); - final WindowToken token2 = new WindowToken(mWms, mock(IBinder.class), - TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent, - true /* ownerCanManageAppTokens */, false /* roundedCornerOverlay */, - false /* fromClientToken */, options2); + final WindowToken token0 = new WindowToken.Builder(mWms, mock(IBinder.class), + TYPE_STATUS_BAR) + .setDisplayContent(mDisplayContent) + .setPersistOnEmpty(true) + .setOwnerCanManageAppTokens(true) + .build(); + final WindowToken token1 = new WindowToken.Builder(mWms, mock(IBinder.class), + TYPE_STATUS_BAR) + .setDisplayContent(mDisplayContent) + .setPersistOnEmpty(true) + .setOwnerCanManageAppTokens(true) + .setOptions(options1) + .build(); + final WindowToken token2 = new WindowToken.Builder(mWms, mock(IBinder.class), + TYPE_STATUS_BAR) + .setDisplayContent(mDisplayContent) + .setPersistOnEmpty(true) + .setOwnerCanManageAppTokens(true) + .setOptions(options2) + .build(); policy.addWindow(token0); policy.addWindow(token1); @@ -787,9 +805,8 @@ public class DisplayAreaPolicyBuilderTest { } private WindowToken tokenOfType(int type) { - WindowToken token = new WindowToken(mWms, new Binder(), type, false /* persistOnEmpty */, - mDisplayContent, false /* ownerCanManageAppTokens */); - return token; + return new WindowToken.Builder(mWms, new Binder(), type) + .setDisplayContent(mDisplayContent).build(); } private static void assertMatchLayerOrder(List<DisplayArea<?>> actualOrder, diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java index d4c956db90a9..d5628fc9de48 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java @@ -586,8 +586,6 @@ public class DisplayAreaTest extends WindowTestsBase { } private WindowToken createWindowToken(int type) { - return new WindowToken(mWm, new Binder(), - type, false /* persist */, null /* displayContent */, - false /* canManageTokens */); + return new WindowToken.Builder(mWm, new Binder(), type).build(); } } diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java index 2f5235249168..4dbb2de283f5 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java @@ -1292,7 +1292,8 @@ public class DisplayContentTests extends WindowTestsBase { assertNull(displayContent.getFadeRotationAnimationController()); } - @UseTestDisplay(addWindows = { W_ACTIVITY, W_WALLPAPER, W_STATUS_BAR, W_NAVIGATION_BAR }) + @UseTestDisplay(addWindows = { W_ACTIVITY, W_WALLPAPER, W_STATUS_BAR, W_NAVIGATION_BAR, + W_NOTIFICATION_SHADE }) @Test public void testApplyTopFixedRotationTransform() { final DisplayPolicy displayPolicy = mDisplayContent.getDisplayPolicy(); @@ -1300,6 +1301,7 @@ public class DisplayContentTests extends WindowTestsBase { doReturn(false).when(displayPolicy).navigationBarCanMove(); displayPolicy.addWindowLw(mStatusBarWindow, mStatusBarWindow.mAttrs); displayPolicy.addWindowLw(mNavBarWindow, mNavBarWindow.mAttrs); + displayPolicy.addWindowLw(mNotificationShadeWindow, mNotificationShadeWindow.mAttrs); makeWindowVisible(mStatusBarWindow, mNavBarWindow); final Configuration config90 = new Configuration(); mDisplayContent.computeScreenConfiguration(config90, ROTATION_90); @@ -1324,10 +1326,10 @@ public class DisplayContentTests extends WindowTestsBase { false /* forceUpdate */)); assertNotNull(mDisplayContent.getFadeRotationAnimationController()); - assertTrue(mStatusBarWindow.getParent().isAnimating(WindowContainer.AnimationFlags.PARENTS, - ANIMATION_TYPE_FIXED_TRANSFORM)); - assertTrue(mNavBarWindow.getParent().isAnimating(WindowContainer.AnimationFlags.PARENTS, - ANIMATION_TYPE_FIXED_TRANSFORM)); + assertTrue(mStatusBarWindow.isAnimating(PARENTS, ANIMATION_TYPE_FIXED_TRANSFORM)); + assertTrue(mNavBarWindow.isAnimating(PARENTS, ANIMATION_TYPE_FIXED_TRANSFORM)); + // Notification shade may have its own view animation in real case so do not fade out it. + assertFalse(mNotificationShadeWindow.isAnimating(PARENTS, ANIMATION_TYPE_FIXED_TRANSFORM)); // If the visibility of insets state is changed, the rotated state should be updated too. final InsetsState rotatedState = app.getFixedRotationTransformInsetsState(); diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java index c163ef152af6..2ca78533f867 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTests.java @@ -156,6 +156,7 @@ public class DisplayPolicyTests extends WindowTestsBase { opaque, dimmingNonImTarget, imeNonDrawNavBar, NAV_BAR_BOTTOM)); } + @UseTestDisplay(addWindows = { W_NAVIGATION_BAR }) @Test public void testUpdateLightNavigationBarLw() { DisplayPolicy displayPolicy = mDisplayContent.getDisplayPolicy(); @@ -167,7 +168,19 @@ public class DisplayPolicyTests extends WindowTestsBase { final WindowState imeDrawDarkNavBar = createInputMethodWindow(true, true, false); final WindowState imeDrawLightNavBar = createInputMethodWindow(true, true, true); - assertEquals(APPEARANCE_LIGHT_NAVIGATION_BARS, + mDisplayContent.setLayoutNeeded(); + mDisplayContent.performLayout(true /* initial */, false /* updateImeWindows */); + + final InsetsSource navSource = new InsetsSource(ITYPE_NAVIGATION_BAR); + navSource.setFrame(mNavBarWindow.getFrame()); + opaqueDarkNavBar.mAboveInsetsState.addSource(navSource); + opaqueLightNavBar.mAboveInsetsState.addSource(navSource); + dimming.mAboveInsetsState.addSource(navSource); + imeDrawDarkNavBar.mAboveInsetsState.addSource(navSource); + imeDrawLightNavBar.mAboveInsetsState.addSource(navSource); + + // If there is no window, APPEARANCE_LIGHT_NAVIGATION_BARS is not allowed. + assertEquals(0, displayPolicy.updateLightNavigationBarLw( APPEARANCE_LIGHT_NAVIGATION_BARS, null, null, null, null)); diff --git a/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java index e9907c1fd1a5..bdc4b4eae630 100644 --- a/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/DualDisplayAreaGroupPolicyTest.java @@ -390,8 +390,8 @@ public class DualDisplayAreaGroupPolicyTest extends WindowTestsBase { } private WindowToken tokenOfType(int type) { - return new WindowToken(mWm, new Binder(), type, false /* persistOnEmpty */, - mDisplay, false /* ownerCanManageAppTokens */); + return new WindowToken.Builder(mWm, new Binder(), type) + .setDisplayContent(mDisplay).build(); } /** Display with two {@link DisplayAreaGroup}. Each of them take half of the screen. */ diff --git a/services/tests/wmtests/src/com/android/server/wm/LetterboxTest.java b/services/tests/wmtests/src/com/android/server/wm/LetterboxTest.java index ee01b7fe5750..647a898a5361 100644 --- a/services/tests/wmtests/src/com/android/server/wm/LetterboxTest.java +++ b/services/tests/wmtests/src/com/android/server/wm/LetterboxTest.java @@ -66,12 +66,6 @@ public class LetterboxTest { mTransaction = spy(StubTransaction.class); } - @Test - public void testOverlappingWith_usesGlobalCoordinates() { - mLetterbox.layout(new Rect(0, 0, 10, 50), new Rect(0, 2, 10, 45), new Point(1000, 2000)); - assertTrue(mLetterbox.isOverlappingWith(new Rect(0, 0, 1, 1))); - } - private static final int TOP_BAR = 0x1; private static final int BOTTOM_BAR = 0x2; private static final int LEFT_BAR = 0x4; @@ -227,15 +221,6 @@ public class LetterboxTest { } @Test - public void testIsOverlappingWith_cornersRounded_doesNotCheckSurfaceBehind() { - mAreCornersRounded = true; - mLetterbox.layout(new Rect(0, 0, 10, 10), new Rect(0, 1, 10, 10), new Point(0, 0)); - mLetterbox.applySurfaceChanges(mTransaction); - - assertFalse(mLetterbox.isOverlappingWith(new Rect(1, 2, 9, 9))); - } - - @Test public void testNotIntersectsOrFullyContains_cornersRounded_doesNotCheckSurfaceBehind() { mAreCornersRounded = true; mLetterbox.layout(new Rect(0, 0, 10, 10), new Rect(0, 1, 10, 10), new Point(0, 0)); diff --git a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java index 95b74430e4ab..221c8b97238d 100644 --- a/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/SizeCompatTests.java @@ -60,6 +60,7 @@ import android.app.WindowConfiguration; import android.compat.testing.PlatformCompatChangeRule; import android.content.ComponentName; import android.content.pm.ActivityInfo; +import android.content.pm.ActivityInfo.ScreenOrientation; import android.content.res.Configuration; import android.graphics.Rect; import android.platform.test.annotations.Presubmit; @@ -67,6 +68,7 @@ import android.view.WindowManager; import androidx.test.filters.MediumTest; +import libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges; import libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges; import org.junit.Rule; @@ -662,15 +664,8 @@ public class SizeCompatTests extends WindowTestsBase { mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE; // Create an activity on the same task. - final ActivityRecord activity = new ActivityBuilder(mAtm) - .setTask(mTask) - .setResizeMode(ActivityInfo.RESIZE_MODE_UNRESIZEABLE) - .setSupportsSizeChanges(true) - .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) - .setComponent(ComponentName.createRelative(mContext, - SizeCompatTests.class.getName())) - .setUid(android.os.Process.myUid()) - .build(); + final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */true, + RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); assertFalse(activity.shouldCreateCompatDisplayInsets()); } @@ -682,15 +677,8 @@ public class SizeCompatTests extends WindowTestsBase { mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE; // Create an activity on the same task. - final ActivityRecord activity = new ActivityBuilder(mAtm) - .setTask(mTask) - .setResizeMode(ActivityInfo.RESIZE_MODE_UNRESIZEABLE) - .setSupportsSizeChanges(false) - .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) - .setComponent(ComponentName.createRelative(mContext, - SizeCompatTests.class.getName())) - .setUid(android.os.Process.myUid()) - .build(); + final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false, + RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); assertTrue(activity.shouldCreateCompatDisplayInsets()); } @@ -702,15 +690,8 @@ public class SizeCompatTests extends WindowTestsBase { mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE; // Create an activity on the same task. - final ActivityRecord activity = new ActivityBuilder(mAtm) - .setTask(mTask) - .setResizeMode(ActivityInfo.RESIZE_MODE_RESIZEABLE) - .setSupportsSizeChanges(false) - .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) - .setComponent(ComponentName.createRelative(mContext, - SizeCompatTests.class.getName())) - .setUid(android.os.Process.myUid()) - .build(); + final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false, + RESIZE_MODE_RESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); assertFalse(activity.shouldCreateCompatDisplayInsets()); } @@ -723,15 +704,8 @@ public class SizeCompatTests extends WindowTestsBase { mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE; // Create an activity on the same task. - final ActivityRecord activity = new ActivityBuilder(mAtm) - .setTask(mTask) - .setResizeMode(ActivityInfo.RESIZE_MODE_UNRESIZEABLE) - .setSupportsSizeChanges(false) - .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) - .setComponent(ComponentName.createRelative(mContext, - SizeCompatTests.class.getName())) - .setUid(android.os.Process.myUid()) - .build(); + final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false, + RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); assertFalse(activity.shouldCreateCompatDisplayInsets()); } @@ -744,15 +718,8 @@ public class SizeCompatTests extends WindowTestsBase { mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE; // Create an activity on the same task. - final ActivityRecord activity = new ActivityBuilder(mAtm) - .setTask(mTask) - .setResizeMode(ActivityInfo.RESIZE_MODE_UNRESIZEABLE) - .setSupportsSizeChanges(false) - .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) - .setComponent(ComponentName.createRelative(mContext, - SizeCompatTests.class.getName())) - .setUid(android.os.Process.myUid()) - .build(); + final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false, + RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); assertFalse(activity.shouldCreateCompatDisplayInsets()); } @@ -765,15 +732,8 @@ public class SizeCompatTests extends WindowTestsBase { mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE; // Create an activity on the same task. - final ActivityRecord activity = new ActivityBuilder(mAtm) - .setTask(mTask) - .setResizeMode(ActivityInfo.RESIZE_MODE_RESIZEABLE) - .setSupportsSizeChanges(true) - .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) - .setComponent(ComponentName.createRelative(mContext, - SizeCompatTests.class.getName())) - .setUid(android.os.Process.myUid()) - .build(); + final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */true, + RESIZE_MODE_RESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); assertTrue(activity.shouldCreateCompatDisplayInsets()); } @@ -786,19 +746,111 @@ public class SizeCompatTests extends WindowTestsBase { mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE; // Create an activity on the same task. - final ActivityRecord activity = new ActivityBuilder(mAtm) - .setTask(mTask) - .setResizeMode(ActivityInfo.RESIZE_MODE_RESIZEABLE) - .setSupportsSizeChanges(true) - .setScreenOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) - .setComponent(ComponentName.createRelative(mContext, - SizeCompatTests.class.getName())) - .setUid(android.os.Process.myUid()) - .build(); + final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */true, + RESIZE_MODE_RESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); assertTrue(activity.shouldCreateCompatDisplayInsets()); } @Test + @EnableCompatChanges({ActivityInfo.NEVER_SANDBOX_DISPLAY_APIS}) + public void testNeverSandboxDisplayApis_configEnabled_sandboxingNotApplied() { + setUpDisplaySizeWithApp(1000, 1200); + + // Make the task root resizable. + mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE; + + // Create an activity with a max aspect ratio on the same task. + final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false, + RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); + activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */); + prepareUnresizable(activity, /* maxAspect=*/ 1.5f, SCREEN_ORIENTATION_LANDSCAPE); + + // Activity max bounds should not be sandboxed, even though it is letterboxed. + assertTrue(activity.isLetterboxedForFixedOrientationAndAspectRatio()); + assertThat(activity.getConfiguration().windowConfiguration.getMaxBounds()) + .isEqualTo(activity.getDisplayArea().getBounds()); + } + + @Test + @DisableCompatChanges({ActivityInfo.NEVER_SANDBOX_DISPLAY_APIS}) + public void testNeverSandboxDisplayApis_configDisabled_sandboxingApplied() { + setUpDisplaySizeWithApp(1000, 1200); + + // Make the task root resizable. + mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE; + + // Create an activity with a max aspect ratio on the same task. + final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false, + RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); + activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */); + prepareUnresizable(activity, /* maxAspect=*/ 1.5f, SCREEN_ORIENTATION_LANDSCAPE); + + // Activity max bounds should be sandboxed due to letterboxed and the config being disabled. + assertActivityMaxBoundsSandboxed(activity); + } + + @Test + @EnableCompatChanges({ActivityInfo.ALWAYS_SANDBOX_DISPLAY_APIS}) + public void testAlwaysSandboxDisplayApis_configEnabled_sandboxingApplied_unresizable() { + setUpDisplaySizeWithApp(1000, 1200); + + // Make the task root resizable. + mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE; + + // Create an activity with a max aspect ratio on the same task. + final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false, + RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); + activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */); + prepareUnresizable(activity, /* maxAspect=*/ 1.5f, SCREEN_ORIENTATION_LANDSCAPE); + + // Activity max bounds should be sandboxed due to letterboxed and the config being enabled. + assertActivityMaxBoundsSandboxed(activity); + } + + @Test + @DisableCompatChanges({ActivityInfo.ALWAYS_SANDBOX_DISPLAY_APIS}) + public void testAlwaysSandboxDisplayApis_configDisabled_sandboxingNotApplied() { + setUpDisplaySizeWithApp(1000, 1200); + + // Make the task root resizable. + mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE; + + // Create an activity with a max aspect ratio on the same task. + final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false, + RESIZE_MODE_UNRESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); + activity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */); + prepareUnresizable(activity, /* maxAspect=*/ 1.5f, SCREEN_ORIENTATION_LANDSCAPE); + + // Activity max bounds be sandboxed due to letterbox and the config being disabled. + assertActivityMaxBoundsSandboxed(activity); + } + + @Test + @EnableCompatChanges({ActivityInfo.ALWAYS_SANDBOX_DISPLAY_APIS}) + public void testAlwaysSandboxDisplayApis_configEnabled_sandboxingApplied_resizableSplit() { + setUpDisplaySizeWithApp(1000, 2800); + mActivity.info.resizeMode = RESIZE_MODE_RESIZEABLE; + final ActivityRecord activity = buildActivityRecord(/* supportsSizeChanges= */false, + RESIZE_MODE_RESIZEABLE, ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); + final TestSplitOrganizer organizer = + new TestSplitOrganizer(mAtm, activity.getDisplayContent()); + + // Activity max bounds should be sandboxed due the config being enabled. + assertFalse(activity.inSizeCompatMode()); + assertActivityMaxBoundsSandboxed(activity); + + // Move activity to split screen which takes half of the screen. + mTask.reparent(organizer.mPrimary, POSITION_TOP, + false /*moveParents*/, "test"); + organizer.mPrimary.setBounds(0, 0, 1000, 1400); + assertEquals(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, mTask.getWindowingMode()); + assertEquals(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY, activity.getWindowingMode()); + + // Resizable activity is sandboxed due to config being enabled. + assertActivityMaxBoundsSandboxed(activity); + } + + @Test @EnableCompatChanges({ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO, ActivityInfo.OVERRIDE_MIN_ASPECT_RATIO_MEDIUM}) public void testOverrideMinAspectRatioMedium() { @@ -1200,9 +1252,11 @@ public class SizeCompatTests extends WindowTestsBase { // Task and display bounds should be equal while activity should be letterboxed and // has 700x1400 bounds with the ratio as the display. - assertTrue(mActivity.isLetterboxedForFixedOrientationAndAspectRatio()); + assertTrue(newActivity.isLetterboxedForFixedOrientationAndAspectRatio()); assertFalse(newActivity.inSizeCompatMode()); - assertActivityMaxBoundsSandboxed(); + // Activity max bounds are sandboxed due to size compat mode. + assertThat(newActivity.getConfiguration().windowConfiguration.getMaxBounds()) + .isEqualTo(newActivity.getWindowConfiguration().getBounds()); assertEquals(taskBounds, displayBounds); assertEquals(displayBounds.height(), newActivityBounds.height()); assertEquals(displayBounds.height() * displayBounds.height() / displayBounds.width(), @@ -1360,7 +1414,7 @@ public class SizeCompatTests extends WindowTestsBase { } @Test - public void testSandboxDisplayApis_letterboxAppNotSandboxed() { + public void testSandboxDisplayApis_unresizableAppNotSandboxed() { // Set up a display in landscape with an unresizable app. setUpDisplaySizeWithApp(2500, 1000); mActivity.mDisplayContent.setSandboxDisplayApis(false /* sandboxDisplayApis */); @@ -1368,11 +1422,11 @@ public class SizeCompatTests extends WindowTestsBase { assertFitted(); // Activity max bounds not be sandboxed since sandboxing is disabled. - assertThat(mActivity.getMaxBounds()).isEqualTo(mActivity.mDisplayContent.getBounds()); + assertMaxBoundsInheritDisplayAreaBounds(); } @Test - public void testSandboxDisplayApis_letterboxAppSandboxed() { + public void testSandboxDisplayApis_unresizableAppSandboxed() { // Set up a display in landscape with an unresizable app. setUpDisplaySizeWithApp(2500, 1000); mActivity.mDisplayContent.setSandboxDisplayApis(true /* sandboxDisplayApis */); @@ -1383,6 +1437,89 @@ public class SizeCompatTests extends WindowTestsBase { assertActivityMaxBoundsSandboxed(); } + @Test + public void testResizableApp_notSandboxed() { + // Set up a display in landscape with a fully resizable app. + setUpDisplaySizeWithApp(2500, 1000); + prepareLimitedBounds(mActivity, /* maxAspect= */ -1, + SCREEN_ORIENTATION_UNSPECIFIED, /* isUnresizable= */ false); + assertFitted(); + + // Activity max bounds not be sandboxed since app is fully resizable. + assertMaxBoundsInheritDisplayAreaBounds(); + } + + @Test + public void testResizableMaxAspectApp_notSandboxed() { + // Set up a display in landscape with a fully resizable app. + setUpDisplaySizeWithApp(2500, 1000); + prepareLimitedBounds(mActivity, /* maxAspect= */ 1, + SCREEN_ORIENTATION_UNSPECIFIED, /* isUnresizable= */ false); + assertFitted(); + + // Activity max bounds not be sandboxed since app is fully resizable. + assertMaxBoundsInheritDisplayAreaBounds(); + } + + @Test + public void testResizableOrientationRequestApp_notSandboxed() { + // Set up a display in landscape with a fully resizable app. + setUpDisplaySizeWithApp(2500, 1000); + prepareLimitedBounds(mActivity, /* maxAspect= */ -1, + SCREEN_ORIENTATION_PORTRAIT, /* isUnresizable= */ false); + mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */); + assertFitted(); + + // Activity max bounds not be sandboxed since app is fully resizable. + assertMaxBoundsInheritDisplayAreaBounds(); + } + + @Test + public void testResizableMaxAspectOrientationRequestApp_notSandboxed() { + // Set up a display in landscape with a fully resizable app. + setUpDisplaySizeWithApp(2500, 1000); + prepareLimitedBounds(mActivity, /* maxAspect= */ 1, + SCREEN_ORIENTATION_PORTRAIT, /* isUnresizable= */ false); + mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */); + assertFitted(); + + // Activity max bounds not be sandboxed since app is fully resizable. + assertMaxBoundsInheritDisplayAreaBounds(); + } + + @Test + public void testUnresizableApp_isSandboxed() { + // Set up a display in landscape with a fully resizable app. + setUpDisplaySizeWithApp(2500, 1000); + prepareLimitedBounds(mActivity, /* maxAspect= */ -1, + SCREEN_ORIENTATION_UNSPECIFIED, /* isUnresizable= */ true); + assertFitted(); + + // Activity max bounds are sandboxed since app may enter size compat mode. + assertActivityMaxBoundsSandboxed(); + assertFalse(mActivity.inSizeCompatMode()); + } + + @Test + public void testUnresizableMaxAspectApp_isSandboxed() { + // Set up a display in landscape with a fully resizable app. + setUpDisplaySizeWithApp(2500, 1000); + prepareLimitedBounds(mActivity, /* maxAspect= */ 1, + SCREEN_ORIENTATION_UNSPECIFIED, /* isUnresizable= */ true); + assertFitted(); + + // Activity max bounds are sandboxed since app may enter size compat mode. + assertActivityMaxBoundsSandboxed(); + assertFalse(mActivity.inSizeCompatMode()); + assertTrue(mActivity.shouldCreateCompatDisplayInsets()); + + // Resize display to half the width. + resizeDisplay(mActivity.getDisplayContent(), 500, 1000); + + // Activity now in size compat mode. + assertActivityMaxBoundsSandboxed(); + assertTrue(mActivity.inSizeCompatMode()); + } @Test public void testTaskDisplayAreaNotFillDisplay() { @@ -1675,6 +1812,24 @@ public class SizeCompatTests extends WindowTestsBase { displayPolicy.layoutWindowLw(statusBar, null, displayContent.mDisplayFrames); } + /** + * Returns an ActivityRecord instance with the specified attributes on the same task. By + * constructing the ActivityRecord, forces {@link ActivityInfo} to be loaded with the compat + * config settings. + */ + private ActivityRecord buildActivityRecord(boolean supportsSizeChanges, int resizeMode, + @ScreenOrientation int screenOrientation) { + return new ActivityBuilder(mAtm) + .setTask(mTask) + .setResizeMode(resizeMode) + .setSupportsSizeChanges(supportsSizeChanges) + .setScreenOrientation(screenOrientation) + .setComponent(ComponentName.createRelative(mContext, + SizeCompatTests.class.getName())) + .setUid(android.os.Process.myUid()) + .build(); + } + static void prepareUnresizable(ActivityRecord activity, int screenOrientation) { prepareUnresizable(activity, -1 /* maxAspect */, screenOrientation); } @@ -1743,9 +1898,17 @@ public class SizeCompatTests extends WindowTestsBase { * bounds are sandboxed. */ private void assertActivityMaxBoundsSandboxed() { + assertActivityMaxBoundsSandboxed(mActivity); + } + + /** + * Asserts activity-level letterbox or size compat mode size compat mode on the specified + * activity, so activity max bounds are sandboxed. + */ + private void assertActivityMaxBoundsSandboxed(ActivityRecord activity) { // Activity max bounds are sandboxed due to size compat mode. - assertThat(mActivity.getConfiguration().windowConfiguration.getMaxBounds()) - .isEqualTo(mActivity.getWindowConfiguration().getBounds()); + assertThat(activity.getConfiguration().windowConfiguration.getMaxBounds()) + .isEqualTo(activity.getWindowConfiguration().getBounds()); } static Configuration rotateDisplay(DisplayContent display, int rotation) { diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java index 6919c4cf6a7c..00f3d8b874f7 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java @@ -16,6 +16,7 @@ package com.android.server.wm; +import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; @@ -634,6 +635,22 @@ public class WindowContainerTests extends WindowTestsBase { } @Test + public void testSetOrientation() { + final TestWindowContainer root = spy(new TestWindowContainerBuilder(mWm).build()); + final TestWindowContainer child = spy(root.addChildWindow()); + doReturn(true).when(root).handlesOrientationChangeFromDescendant(); + child.getWindowConfiguration().setWindowingMode(WINDOWING_MODE_FULLSCREEN); + child.setOrientation(SCREEN_ORIENTATION_PORTRAIT); + // The ancestor should decide whether to dispatch the configuration change. + verify(child, never()).onConfigurationChanged(any()); + + doReturn(false).when(root).handlesOrientationChangeFromDescendant(); + child.setOrientation(SCREEN_ORIENTATION_LANDSCAPE); + // The ancestor doesn't handle the request so the descendant applies the change directly. + verify(child).onConfigurationChanged(any()); + } + + @Test public void testCompareTo() { final TestWindowContainerBuilder builder = new TestWindowContainerBuilder(mWm); final TestWindowContainer root = builder.setLayer(0).build(); diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java index 73b9173ba143..5d0fe170885a 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowContextListenerControllerTests.java @@ -17,8 +17,11 @@ package com.android.server.wm; import static android.view.Display.DEFAULT_DISPLAY; +import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY; import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY; +import static com.google.common.truth.Truth.assertThat; + import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; @@ -162,6 +165,26 @@ public class WindowContextListenerControllerTests extends WindowTestsBase { false /* callerCanManagerAppTokens */, ANOTHER_UID); } + @Test + public void testWindowContextCreatedWindowTokenRemoved_SwitchToListenToDA() { + WindowToken windowContextCreatedToken = new WindowToken.Builder(mWm, mClientToken, + TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY) + .setDisplayContent(mDefaultDisplay) + .setFromClientToken(true) + .build(); + final DisplayArea da = windowContextCreatedToken.getDisplayArea(); + + mController.registerWindowContainerListener(mClientToken, windowContextCreatedToken, + TEST_UID, TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY, null /* options */); + + assertThat(mController.getContainer(mClientToken)).isEqualTo(windowContextCreatedToken); + + // Remove WindowToken + windowContextCreatedToken.removeImmediately(); + + assertThat(mController.getContainer(mClientToken)).isEqualTo(da); + } + private class TestWindowTokenClient extends IWindowToken.Stub { private Configuration mConfiguration; private int mDisplayId; diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java index 6d552206c9ac..83f41e3e2910 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowOrganizerTests.java @@ -543,33 +543,7 @@ public class WindowOrganizerTests extends WindowTestsBase { @Test public void testTileAddRemoveChild() { - ITaskOrganizer listener = new ITaskOrganizer.Stub() { - @Override - public void addStartingWindow(StartingWindowInfo info, IBinder appToken) { - - } - - @Override - public void removeStartingWindow(int taskId, SurfaceControl leash, Rect frame, - boolean playRevealAnimation) { } - - @Override - public void copySplashScreenView(int taskId) { } - - @Override - public void onTaskAppeared(RunningTaskInfo taskInfo, SurfaceControl leash) { } - - @Override - public void onTaskVanished(RunningTaskInfo container) { } - - @Override - public void onTaskInfoChanged(RunningTaskInfo info) throws RemoteException { - } - - @Override - public void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) { - } - }; + final StubOrganizer listener = new StubOrganizer(); mWm.mAtmService.mTaskOrganizerController.registerTaskOrganizer(listener); Task task = mWm.mAtmService.mTaskOrganizerController.createRootTask( mDisplayContent, WINDOWING_MODE_SPLIT_SCREEN_SECONDARY, null); @@ -612,31 +586,12 @@ public class WindowOrganizerTests extends WindowTestsBase { public void testTaskInfoCallback() { final ArrayList<RunningTaskInfo> lastReportedTiles = new ArrayList<>(); final boolean[] called = {false}; - ITaskOrganizer listener = new ITaskOrganizer.Stub() { - @Override - public void addStartingWindow(StartingWindowInfo info, IBinder appToken) { - - } - @Override - public void removeStartingWindow(int taskId, SurfaceControl leash, Rect frame, - boolean playRevealAnimation) { } + final StubOrganizer listener = new StubOrganizer() { @Override - public void copySplashScreenView(int taskId) { } - @Override - public void onTaskAppeared(RunningTaskInfo taskInfo, SurfaceControl leash) { } - - @Override - public void onTaskVanished(RunningTaskInfo container) { } - - @Override - public void onTaskInfoChanged(RunningTaskInfo info) throws RemoteException { + public void onTaskInfoChanged(RunningTaskInfo info) { lastReportedTiles.add(info); called[0] = true; } - - @Override - public void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) { - } }; mWm.mAtmService.mTaskOrganizerController.registerTaskOrganizer(listener); Task task = mWm.mAtmService.mTaskOrganizerController.createRootTask( @@ -689,31 +644,11 @@ public class WindowOrganizerTests extends WindowTestsBase { @Test public void testHierarchyTransaction() { final ArrayMap<IBinder, RunningTaskInfo> lastReportedTiles = new ArrayMap<>(); - ITaskOrganizer listener = new ITaskOrganizer.Stub() { - @Override - public void addStartingWindow(StartingWindowInfo info, IBinder appToken) { - - } - - @Override - public void removeStartingWindow(int taskId, SurfaceControl leash, Rect frame, - boolean playRevealAnimation) { } - @Override - public void copySplashScreenView(int taskId) { } - @Override - public void onTaskAppeared(RunningTaskInfo taskInfo, SurfaceControl leash) { } - - @Override - public void onTaskVanished(RunningTaskInfo container) { } - + final StubOrganizer listener = new StubOrganizer() { @Override public void onTaskInfoChanged(RunningTaskInfo info) { lastReportedTiles.put(info.token.asBinder(), info); } - - @Override - public void onBackPressedOnTaskRoot(RunningTaskInfo taskInfo) { - } }; mWm.mAtmService.mTaskOrganizerController.registerTaskOrganizer(listener); @@ -838,7 +773,7 @@ public class WindowOrganizerTests extends WindowTestsBase { verify(transactionListener).onTransactionReady(anyInt(), any()); } - class StubOrganizer extends ITaskOrganizer.Stub { + static class StubOrganizer extends ITaskOrganizer.Stub { RunningTaskInfo mInfo; @Override diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java index 2d4e4efd74ea..9ac40ca03292 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java @@ -92,7 +92,6 @@ import android.view.SurfaceControl.Transaction; import android.view.View; import android.view.WindowManager; import android.view.WindowManager.DisplayImePolicy; -import android.window.ITaskOrganizer; import android.window.ITransitionPlayer; import android.window.StartingWindowInfo; import android.window.TransitionInfo; @@ -1216,7 +1215,7 @@ class WindowTestsBase extends SystemServiceTestsBase { } } - static class TestStartingWindowOrganizer extends ITaskOrganizer.Stub { + static class TestStartingWindowOrganizer extends WindowOrganizerTests.StubOrganizer { private final ActivityTaskManagerService mAtm; private final WindowManagerService mWMService; private final WindowState.PowerManagerWrapper mPowerManagerWrapper; @@ -1281,24 +1280,9 @@ class WindowTestsBase extends SystemServiceTestsBase { } } } - @Override - public void copySplashScreenView(int taskId) { - } - @Override - public void onTaskAppeared(ActivityManager.RunningTaskInfo info, SurfaceControl leash) { - } - @Override - public void onTaskVanished(ActivityManager.RunningTaskInfo info) { - } - @Override - public void onTaskInfoChanged(ActivityManager.RunningTaskInfo info) { - } - @Override - public void onBackPressedOnTaskRoot(ActivityManager.RunningTaskInfo taskInfo) { - } } - static class TestSplitOrganizer extends ITaskOrganizer.Stub { + static class TestSplitOrganizer extends WindowOrganizerTests.StubOrganizer { final ActivityTaskManagerService mService; Task mPrimary; Task mSecondary; @@ -1332,22 +1316,7 @@ class WindowTestsBase extends SystemServiceTestsBase { public void setMoveToSecondaryOnEnter(boolean move) { mMoveToSecondaryOnEnter = move; } - @Override - public void addStartingWindow(StartingWindowInfo info, IBinder appToken) { - } - @Override - public void removeStartingWindow(int taskId, SurfaceControl leash, Rect frame, - boolean playRevealAnimation) { - } - @Override - public void copySplashScreenView(int taskId) { - } - @Override - public void onTaskAppeared(ActivityManager.RunningTaskInfo info, SurfaceControl leash) { - } - @Override - public void onTaskVanished(ActivityManager.RunningTaskInfo info) { - } + @Override public void onTaskInfoChanged(ActivityManager.RunningTaskInfo info) { if (mInSplit) { @@ -1374,9 +1343,6 @@ class WindowTestsBase extends SystemServiceTestsBase { } }); } - @Override - public void onBackPressedOnTaskRoot(ActivityManager.RunningTaskInfo taskInfo) { - } } static TestWindowToken createTestWindowToken(int type, DisplayContent dc) { diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java index ed5f1d8c9fc5..d048f1842aa3 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowTokenTests.java @@ -184,49 +184,28 @@ public class WindowTokenTests extends WindowTestsBase { } /** - * Test that {@link WindowToken} constructor parameters is set with expectation. - */ - @Test - public void testWindowTokenConstructorValidity() { - WindowToken token = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class), - TYPE_TOAST, true /* persistOnEmpty */, mDisplayContent, - true /* ownerCanManageAppTokens */); - assertFalse(token.mRoundedCornerOverlay); - assertFalse(token.isFromClient()); - - token = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class), TYPE_TOAST, - true /* persistOnEmpty */, mDisplayContent, true /* ownerCanManageAppTokens */, - true /* roundedCornerOverlay */); - assertTrue(token.mRoundedCornerOverlay); - assertFalse(token.isFromClient()); - - token = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class), TYPE_TOAST, - true /* persistOnEmpty */, mDisplayContent, true /* ownerCanManageAppTokens */, - true /* roundedCornerOverlay */, true /* fromClientToken */, null /* options */); - assertTrue(token.mRoundedCornerOverlay); - assertTrue(token.isFromClient()); - } - - /** * Test that {@link android.view.SurfaceControl} should not be created for the * {@link WindowToken} which was created for {@link WindowContext} initially, the * surface should be create after addWindow for this token. */ @Test public void testSurfaceCreatedForWindowToken() { - final WindowToken fromClientToken = new WindowToken(mDisplayContent.mWmService, - mock(IBinder.class), TYPE_APPLICATION_OVERLAY, true /* persistOnEmpty */, - mDisplayContent, true /* ownerCanManageAppTokens */, - true /* roundedCornerOverlay */, true /* fromClientToken */, null /* options */); + final WindowToken fromClientToken = new WindowToken.Builder(mDisplayContent.mWmService, + mock(IBinder.class), TYPE_APPLICATION_OVERLAY) + .setDisplayContent(mDisplayContent) + .setFromClientToken(true) + .build(); + assertNull(fromClientToken.mSurfaceControl); createWindow(null, TYPE_APPLICATION_OVERLAY, fromClientToken, "window"); assertNotNull(fromClientToken.mSurfaceControl); - final WindowToken nonClientToken = new WindowToken(mDisplayContent.mWmService, - mock(IBinder.class), TYPE_TOAST, true /* persistOnEmpty */, mDisplayContent, - true /* ownerCanManageAppTokens */, true /* roundedCornerOverlay */, - false /* fromClientToken */, null /* options */); + final WindowToken nonClientToken = new WindowToken.Builder(mDisplayContent.mWmService, + mock(IBinder.class), TYPE_APPLICATION_OVERLAY) + .setDisplayContent(mDisplayContent) + .setFromClientToken(false) + .build(); assertNotNull(nonClientToken.mSurfaceControl); } @@ -237,18 +216,23 @@ public class WindowTokenTests extends WindowTestsBase { .mSelectRootForWindowFunc; spyOn(selectFunc); - final WindowToken token1 = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class), - TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent, - true /* ownerCanManageAppTokens */, true /* roundedCornerOverlay */, - false /* fromClientToken */, null /* options */); + final WindowToken token1 = new WindowToken.Builder(mDisplayContent.mWmService, + mock(IBinder.class), TYPE_STATUS_BAR) + .setDisplayContent(mDisplayContent) + .setPersistOnEmpty(true) + .setOwnerCanManageAppTokens(true) + .build(); verify(selectFunc).apply(token1.windowType, null); final Bundle options = new Bundle(); - final WindowToken token2 = new WindowToken(mDisplayContent.mWmService, mock(IBinder.class), - TYPE_STATUS_BAR, true /* persistOnEmpty */, mDisplayContent, - true /* ownerCanManageAppTokens */, true /* roundedCornerOverlay */, - false /* fromClientToken */, options /* options */); + final WindowToken token2 = new WindowToken.Builder(mDisplayContent.mWmService, + mock(IBinder.class), TYPE_STATUS_BAR) + .setDisplayContent(mDisplayContent) + .setPersistOnEmpty(true) + .setOwnerCanManageAppTokens(true) + .setOptions(options) + .build(); verify(selectFunc).apply(token2.windowType, options); } diff --git a/services/translation/java/com/android/server/translation/TranslationManagerService.java b/services/translation/java/com/android/server/translation/TranslationManagerService.java index f132b49e9dd8..6bba65dc36ae 100644 --- a/services/translation/java/com/android/server/translation/TranslationManagerService.java +++ b/services/translation/java/com/android/server/translation/TranslationManagerService.java @@ -185,23 +185,6 @@ public final class TranslationManagerService } @Override - public void updateUiTranslationStateByTaskId(@UiTranslationState int state, - TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds, - int taskId, int userId) { - // deprecated - enforceCallerHasPermission(MANAGE_UI_TRANSLATION); - synchronized (mLock) { - final TranslationManagerServiceImpl service = getServiceForUserLocked(userId); - if (service != null && (isDefaultServiceLocked(userId) - || isCalledByServiceAppLocked(userId, - "updateUiTranslationStateByTaskId"))) { - service.updateUiTranslationStateLocked(state, sourceSpec, targetSpec, viewIds, - taskId); - } - } - } - - @Override public void updateUiTranslationState(@UiTranslationState int state, TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds, IBinder token, int taskId, int userId) { diff --git a/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java b/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java index 2cd41ba5377c..987100f817d3 100644 --- a/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java +++ b/services/translation/java/com/android/server/translation/TranslationManagerServiceImpl.java @@ -146,21 +146,6 @@ final class TranslationManagerServiceImpl extends @GuardedBy("mLock") public void updateUiTranslationStateLocked(@UiTranslationState int state, TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds, - int taskId) { - // deprecated - final ActivityTokens taskTopActivityTokens = - mActivityTaskManagerInternal.getTopActivityForTask(taskId); - if (taskTopActivityTokens == null) { - Slog.w(TAG, "Unknown activity to query for update translation state."); - return; - } - updateUiTranslationStateByActivityTokens(taskTopActivityTokens, state, sourceSpec, - targetSpec, viewIds); - } - - @GuardedBy("mLock") - public void updateUiTranslationStateLocked(@UiTranslationState int state, - TranslationSpec sourceSpec, TranslationSpec targetSpec, List<AutofillId> viewIds, IBinder token, int taskId) { // Get top activity for a given task id final ActivityTokens taskTopActivityTokens = @@ -171,16 +156,10 @@ final class TranslationManagerServiceImpl extends + "translation state for token=" + token + " taskId=" + taskId); return; } - updateUiTranslationStateByActivityTokens(taskTopActivityTokens, state, sourceSpec, - targetSpec, viewIds); - } - - private void updateUiTranslationStateByActivityTokens(ActivityTokens tokens, - @UiTranslationState int state, TranslationSpec sourceSpec, TranslationSpec targetSpec, - List<AutofillId> viewIds) { try { - tokens.getApplicationThread().updateUiTranslationState(tokens.getActivityToken(), state, - sourceSpec, targetSpec, viewIds); + taskTopActivityTokens.getApplicationThread().updateUiTranslationState( + taskTopActivityTokens.getActivityToken(), state, sourceSpec, targetSpec, + viewIds); } catch (RemoteException e) { Slog.w(TAG, "Update UiTranslationState fail: " + e); } diff --git a/services/uwb/java/com/android/server/uwb/UwbInjector.java b/services/uwb/java/com/android/server/uwb/UwbInjector.java index 00c0acabcb3b..64f1da1c8e16 100644 --- a/services/uwb/java/com/android/server/uwb/UwbInjector.java +++ b/services/uwb/java/com/android/server/uwb/UwbInjector.java @@ -16,8 +16,13 @@ package com.android.server.uwb; +import static android.Manifest.permission.UWB_RANGING; +import static android.content.PermissionChecker.PERMISSION_GRANTED; + import android.annotation.NonNull; +import android.content.AttributionSource; import android.content.Context; +import android.content.PermissionChecker; import android.os.IBinder; import android.os.ServiceManager; import android.uwb.IUwbAdapter; @@ -45,4 +50,34 @@ public class UwbInjector { if (b == null) return null; return IUwbAdapter.Stub.asInterface(b); } + + /** + * Throws security exception if the UWB_RANGING permission is not granted for the calling app. + * + * <p>Should be used in situations where the app op should not be noted. + */ + public void enforceUwbRangingPermissionForPreflight( + @NonNull AttributionSource attributionSource) { + if (!attributionSource.checkCallingUid()) { + throw new SecurityException("Invalid attribution source " + attributionSource); + } + int permissionCheckResult = PermissionChecker.checkPermissionForPreflight( + mContext, UWB_RANGING, attributionSource); + if (permissionCheckResult != PERMISSION_GRANTED) { + throw new SecurityException("Caller does not hold UWB_RANGING permission"); + } + } + + /** + * Returns true if the UWB_RANGING permission is granted for the calling app. + * + * <p>Should be used in situations where data will be delivered and hence the app op should + * be noted. + */ + public boolean checkUwbRangingPermissionForDataDelivery( + @NonNull AttributionSource attributionSource, @NonNull String message) { + int permissionCheckResult = PermissionChecker.checkPermissionForDataDelivery( + mContext, UWB_RANGING, -1, attributionSource, message); + return permissionCheckResult == PERMISSION_GRANTED; + } } diff --git a/services/uwb/java/com/android/server/uwb/UwbServiceImpl.java b/services/uwb/java/com/android/server/uwb/UwbServiceImpl.java index 70bd20e0014e..b0661fc86daf 100644 --- a/services/uwb/java/com/android/server/uwb/UwbServiceImpl.java +++ b/services/uwb/java/com/android/server/uwb/UwbServiceImpl.java @@ -17,6 +17,7 @@ package com.android.server.uwb; import android.annotation.NonNull; +import android.content.AttributionSource; import android.content.Context; import android.os.IBinder; import android.os.PersistableBundle; @@ -60,13 +61,16 @@ public class UwbServiceImpl extends IUwbAdapter.Stub implements IBinder.DeathRec * Access to these callbacks are synchronized. */ private class UwbRangingCallbacksWrapper extends IUwbRangingCallbacks.Stub - implements IBinder.DeathRecipient{ + implements IBinder.DeathRecipient { + private final AttributionSource mAttributionSource; private final SessionHandle mSessionHandle; private final IUwbRangingCallbacks mExternalCb; private boolean mIsValid; - UwbRangingCallbacksWrapper(@NonNull SessionHandle sessionHandle, + UwbRangingCallbacksWrapper(@NonNull AttributionSource attributionSource, + @NonNull SessionHandle sessionHandle, @NonNull IUwbRangingCallbacks externalCb) { + mAttributionSource = attributionSource; mSessionHandle = sessionHandle; mExternalCb = externalCb; mIsValid = true; @@ -167,7 +171,12 @@ public class UwbServiceImpl extends IUwbAdapter.Stub implements IBinder.DeathRec RangingReport rangingReport) throws RemoteException { if (!mIsValid) return; - // TODO: Perform permission checks and noteOp. + if (!mUwbInjector.checkUwbRangingPermissionForDataDelivery( + mAttributionSource, "uwb ranging result")) { + Log.e(TAG, "Not delivering ranging result because of permission denial" + + mSessionHandle); + return; + } mExternalCb.onRangingResult(sessionHandle, rangingReport); } @@ -229,60 +238,75 @@ public class UwbServiceImpl extends IUwbAdapter.Stub implements IBinder.DeathRec mUwbInjector = uwbInjector; } + private void enforceUwbPrivilegedPermission() { + mContext.enforceCallingOrSelfPermission(android.Manifest.permission.UWB_PRIVILEGED, + "UwbService"); + } + @Override public void registerAdapterStateCallbacks(IUwbAdapterStateCallbacks adapterStateCallbacks) throws RemoteException { + enforceUwbPrivilegedPermission(); getVendorUwbAdapter().registerAdapterStateCallbacks(adapterStateCallbacks); } @Override public void unregisterAdapterStateCallbacks(IUwbAdapterStateCallbacks adapterStateCallbacks) throws RemoteException { + enforceUwbPrivilegedPermission(); getVendorUwbAdapter().unregisterAdapterStateCallbacks(adapterStateCallbacks); } @Override public long getTimestampResolutionNanos() throws RemoteException { + enforceUwbPrivilegedPermission(); return getVendorUwbAdapter().getTimestampResolutionNanos(); } @Override public PersistableBundle getSpecificationInfo() throws RemoteException { + enforceUwbPrivilegedPermission(); return getVendorUwbAdapter().getSpecificationInfo(); } @Override - public void openRanging(SessionHandle sessionHandle, IUwbRangingCallbacks rangingCallbacks, + public void openRanging(AttributionSource attributionSource, + SessionHandle sessionHandle, IUwbRangingCallbacks rangingCallbacks, PersistableBundle parameters) throws RemoteException { + enforceUwbPrivilegedPermission(); + mUwbInjector.enforceUwbRangingPermissionForPreflight(attributionSource); + UwbRangingCallbacksWrapper wrapperCb = - new UwbRangingCallbacksWrapper(sessionHandle, rangingCallbacks); + new UwbRangingCallbacksWrapper(attributionSource, sessionHandle, rangingCallbacks); synchronized (mCallbacksMap) { mCallbacksMap.put(sessionHandle, wrapperCb); } - getVendorUwbAdapter().openRanging(sessionHandle, wrapperCb, parameters); + getVendorUwbAdapter().openRanging(attributionSource, sessionHandle, wrapperCb, parameters); } @Override public void startRanging(SessionHandle sessionHandle, PersistableBundle parameters) throws RemoteException { - // TODO: Perform permission checks. + enforceUwbPrivilegedPermission(); getVendorUwbAdapter().startRanging(sessionHandle, parameters); } @Override public void reconfigureRanging(SessionHandle sessionHandle, PersistableBundle parameters) throws RemoteException { + enforceUwbPrivilegedPermission(); getVendorUwbAdapter().reconfigureRanging(sessionHandle, parameters); } @Override public void stopRanging(SessionHandle sessionHandle) throws RemoteException { + enforceUwbPrivilegedPermission(); getVendorUwbAdapter().stopRanging(sessionHandle); } @Override public void closeRanging(SessionHandle sessionHandle) throws RemoteException { + enforceUwbPrivilegedPermission(); getVendorUwbAdapter().closeRanging(sessionHandle); } - } diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java index 6f701f7e3a36..d6ed98f2c3d4 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/HotwordDetectionConnection.java @@ -24,6 +24,7 @@ import static android.service.voice.HotwordDetectionService.KEY_INITIALIZATION_S import android.annotation.NonNull; import android.annotation.Nullable; import android.content.ComponentName; +import android.content.ContentCaptureOptions; import android.content.Context; import android.content.Intent; import android.hardware.soundtrigger.IRecognitionStatusCallback; @@ -34,10 +35,12 @@ import android.media.AudioManager; import android.media.AudioRecord; import android.media.MediaRecorder; import android.os.Bundle; +import android.os.IBinder; import android.os.IRemoteCallback; import android.os.ParcelFileDescriptor; import android.os.PersistableBundle; import android.os.RemoteException; +import android.os.ServiceManager; import android.os.SharedMemory; import android.service.voice.HotwordDetectedResult; import android.service.voice.HotwordDetectionService; @@ -47,6 +50,7 @@ import android.service.voice.IHotwordDetectionService; import android.service.voice.IMicrophoneHotwordDetectionVoiceInteractionCallback; import android.util.Pair; import android.util.Slog; +import android.view.contentcapture.IContentCaptureManager; import com.android.internal.annotations.GuardedBy; import com.android.internal.app.IHotwordRecognitionStatusCallback; @@ -135,6 +139,7 @@ final class HotwordDetectionConnection { return; } updateStateWithCallbackLocked(options, sharedMemory, callback); + updateContentCaptureManager(); } private void updateStateWithCallbackLocked(PersistableBundle options, @@ -193,6 +198,15 @@ final class HotwordDetectionConnection { }); } + private void updateContentCaptureManager() { + IBinder b = ServiceManager + .getService(Context.CONTENT_CAPTURE_MANAGER_SERVICE); + IContentCaptureManager binderService = IContentCaptureManager.Stub.asInterface(b); + mRemoteHotwordDetectionService.post( + service -> service.updateContentCaptureManager(binderService, + new ContentCaptureOptions(null))); + } + private boolean isBound() { synchronized (mLock) { return mBound; @@ -270,6 +284,114 @@ final class HotwordDetectionConnection { } } + void triggerHardwareRecognitionEventForTestLocked( + SoundTrigger.KeyphraseRecognitionEvent event, + IHotwordRecognitionStatusCallback callback) { + if (DEBUG) { + Slog.d(TAG, "triggerHardwareRecognitionEventForTestLocked"); + } + detectFromDspSourceForTest(event, callback); + } + + private void detectFromDspSourceForTest(SoundTrigger.KeyphraseRecognitionEvent recognitionEvent, + IHotwordRecognitionStatusCallback externalCallback) { + if (DEBUG) { + Slog.d(TAG, "detectFromDspSourceForTest"); + } + + AudioRecord record = createFakeAudioRecord(); + if (record == null) { + Slog.d(TAG, "Failed to create fake audio record"); + return; + } + + Pair<ParcelFileDescriptor, ParcelFileDescriptor> clientPipe = createPipe(); + if (clientPipe == null) { + Slog.d(TAG, "Failed to create pipe"); + return; + } + ParcelFileDescriptor audioSink = clientPipe.second; + ParcelFileDescriptor clientRead = clientPipe.first; + + record.startRecording(); + + mAudioCopyExecutor.execute(() -> { + try (OutputStream fos = + new ParcelFileDescriptor.AutoCloseOutputStream(audioSink)) { + + int remainToRead = 10240; + byte[] buffer = new byte[1024]; + while (remainToRead > 0) { + int bytesRead = record.read(buffer, 0, 1024); + if (DEBUG) { + Slog.d(TAG, "bytesRead = " + bytesRead); + } + if (bytesRead <= 0) { + break; + } + if (bytesRead > 8) { + System.arraycopy(new byte[] {'h', 'o', 't', 'w', 'o', 'r', 'd', '!'}, 0, + buffer, 0, 8); + } + + fos.write(buffer, 0, bytesRead); + remainToRead -= bytesRead; + } + } catch (IOException e) { + Slog.w(TAG, "Failed supplying audio data to validator", e); + } + }); + + Runnable cancellingJob = () -> { + Slog.d(TAG, "Timeout for getting callback from HotwordDetectionService"); + record.stop(); + record.release(); + bestEffortClose(audioSink); + bestEffortClose(clientRead); + }; + + ScheduledFuture<?> cancelingFuture = + mScheduledExecutorService.schedule( + cancellingJob, VALIDATION_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); + + IDspHotwordDetectionCallback internalCallback = new IDspHotwordDetectionCallback.Stub() { + @Override + public void onDetected(HotwordDetectedResult result) throws RemoteException { + if (DEBUG) { + Slog.d(TAG, "onDetected"); + } + cancelingFuture.cancel(true); + record.stop(); + record.release(); + bestEffortClose(audioSink); + bestEffortClose(clientRead); + + externalCallback.onKeyphraseDetected(recognitionEvent); + } + + @Override + public void onRejected(HotwordRejectedResult result) throws RemoteException { + if (DEBUG) { + Slog.d(TAG, "onRejected"); + } + cancelingFuture.cancel(true); + record.stop(); + record.release(); + bestEffortClose(audioSink); + bestEffortClose(clientRead); + + externalCallback.onRejected(result); + } + }; + + mRemoteHotwordDetectionService.run( + service -> service.detectFromDspSource( + clientRead, + recognitionEvent.getCaptureFormat(), + VALIDATION_TIMEOUT_MILLIS, + internalCallback)); + } + private void detectFromDspSource(SoundTrigger.KeyphraseRecognitionEvent recognitionEvent, IHotwordRecognitionStatusCallback externalCallback) { if (DEBUG) { @@ -456,6 +578,37 @@ final class HotwordDetectionConnection { } } + @Nullable + private AudioRecord createFakeAudioRecord() { + if (DEBUG) { + Slog.i(TAG, "#createFakeAudioRecord"); + } + try { + AudioRecord audioRecord = new AudioRecord.Builder() + .setAudioFormat(new AudioFormat.Builder() + .setSampleRate(32000) + .setEncoding(AudioFormat.ENCODING_PCM_16BIT) + .setChannelMask(AudioFormat.CHANNEL_IN_MONO).build()) + .setAudioAttributes(new AudioAttributes.Builder() + .setInternalCapturePreset(MediaRecorder.AudioSource.HOTWORD).build()) + .setBufferSizeInBytes( + AudioRecord.getMinBufferSize(32000, + AudioFormat.CHANNEL_IN_MONO, + AudioFormat.ENCODING_PCM_16BIT) * 2) + .build(); + + if (audioRecord.getState() != AudioRecord.STATE_INITIALIZED) { + Slog.w(TAG, "Failed to initialize AudioRecord"); + audioRecord.release(); + return null; + } + return audioRecord; + } catch (IllegalArgumentException e) { + Slog.e(TAG, "Failed to create AudioRecord", e); + } + return null; + } + /** * Returns the number of bytes required to store {@code bufferLengthSeconds} of audio sampled at * {@code sampleRate} Hz, using the format returned by DSP audio capture. diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java index 9aded899aaae..92cfe4980388 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java @@ -1130,6 +1130,29 @@ public class VoiceInteractionManagerService extends SystemService { } } + @Override + public void triggerHardwareRecognitionEventForTest( + SoundTrigger.KeyphraseRecognitionEvent event, + IHotwordRecognitionStatusCallback callback) + throws RemoteException { + enforceCallingPermission(Manifest.permission.RECORD_AUDIO); + enforceCallingPermission(Manifest.permission.CAPTURE_AUDIO_HOTWORD); + synchronized (this) { + enforceIsCurrentVoiceInteractionService(); + + if (mImpl == null) { + Slog.w(TAG, "triggerHardwareRecognitionEventForTest without running" + + " voice interaction service"); + return; + } + final long caller = Binder.clearCallingIdentity(); + try { + mImpl.triggerHardwareRecognitionEventForTestLocked(event, callback); + } finally { + Binder.restoreCallingIdentity(caller); + } + } + } //----------------- Model management APIs --------------------------------// @Override diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java index 6922ccc03d0b..055284157457 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java @@ -40,6 +40,7 @@ import android.content.pm.IPackageManager; import android.content.pm.PackageManager; import android.content.pm.ServiceInfo; import android.hardware.soundtrigger.IRecognitionStatusCallback; +import android.hardware.soundtrigger.SoundTrigger; import android.media.AudioFormat; import android.os.Bundle; import android.os.Handler; @@ -493,6 +494,20 @@ class VoiceInteractionManagerServiceImpl implements VoiceInteractionSessionConne mHotwordDetectionConnection.stopListening(); } + public void triggerHardwareRecognitionEventForTestLocked( + SoundTrigger.KeyphraseRecognitionEvent event, + IHotwordRecognitionStatusCallback callback) { + if (DEBUG) { + Slog.d(TAG, "triggerHardwareRecognitionEventForTestLocked"); + } + if (mHotwordDetectionConnection == null) { + Slog.w(TAG, "triggerHardwareRecognitionEventForTestLocked() called but connection" + + " isn't established"); + return; + } + mHotwordDetectionConnection.triggerHardwareRecognitionEventForTestLocked(event, callback); + } + public IRecognitionStatusCallback createSoundTriggerCallbackLocked( IHotwordRecognitionStatusCallback callback) { if (DEBUG) { diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java index 48867895bd5c..1953af4adee5 100644 --- a/telecomm/java/android/telecom/TelecomManager.java +++ b/telecomm/java/android/telecom/TelecomManager.java @@ -1011,6 +1011,7 @@ public class TelecomManager { * Enable READ_PHONE_STATE protection on APIs querying and notifying call state, such as * {@code TelecomManager#getCallState}, {@link TelephonyManager#getCallStateForSubscription()}, * and {@link android.telephony.TelephonyCallback.CallStateListener}. + * @hide */ @ChangeId @EnabledSince(targetSdkVersion = Build.VERSION_CODES.S) diff --git a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java index d250297e6f64..d361db2e9ee5 100644 --- a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java +++ b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java @@ -482,64 +482,25 @@ public final class TelephonyPermissions { public static boolean checkReadPhoneNumber( Context context, int subId, int pid, int uid, String callingPackage, @Nullable String callingFeatureId, String message) { - // First, check if the SDK version is below R - boolean preR = false; - try { - ApplicationInfo info = context.getPackageManager().getApplicationInfoAsUser( - callingPackage, 0, UserHandle.getUserHandleForUid(Binder.getCallingUid())); - preR = info.targetSdkVersion <= Build.VERSION_CODES.Q; - } catch (PackageManager.NameNotFoundException nameNotFoundException) { - } - if (preR) { - // SDK < R allows READ_PHONE_STATE, READ_PRIVILEGED_PHONE_STATE, or carrier privilege - try { - return checkReadPhoneState( - context, subId, pid, uid, callingPackage, callingFeatureId, message); - } catch (SecurityException readPhoneStateException) { - } - } else { - // SDK >= R allows READ_PRIVILEGED_PHONE_STATE or carrier privilege - try { - context.enforcePermission( - android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, pid, uid, message); - // Skip checking for runtime permission since caller has privileged permission - return true; - } catch (SecurityException readPrivilegedPhoneStateException) { - if (SubscriptionManager.isValidSubscriptionId(subId)) { - try { - enforceCarrierPrivilege(context, subId, uid, message); - // Skip checking for runtime permission since caller has carrier privilege - return true; - } catch (SecurityException carrierPrivilegeException) { - } - } - } - } - - // Default SMS app can always read it. - AppOpsManager appOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE); - if (appOps.noteOp(AppOpsManager.OPSTR_WRITE_SMS, uid, callingPackage, callingFeatureId, - null) == AppOpsManager.MODE_ALLOWED) { + LegacyPermissionManager permissionManager = (LegacyPermissionManager) + context.getSystemService(Context.LEGACY_PERMISSION_SERVICE); + // Apps with target SDK version < R can have the READ_PHONE_STATE permission granted with + // the appop denied. If PERMISSION_GRANTED is not received then check if the caller has + // carrier privileges; if not and the permission result is MODE_IGNORED then return false + // to return null data to the caller. + int permissionResult = permissionManager.checkPhoneNumberAccess(callingPackage, message, + callingFeatureId, pid, uid); + if (permissionResult == PackageManager.PERMISSION_GRANTED) { return true; } - // Can be read with READ_SMS too. - try { - context.enforcePermission(android.Manifest.permission.READ_SMS, pid, uid, message); - if (appOps.noteOp(AppOpsManager.OPSTR_READ_SMS, uid, callingPackage, - callingFeatureId, null) == AppOpsManager.MODE_ALLOWED) { + if (SubscriptionManager.isValidSubscriptionId(subId)) { + if (TelephonyPermissions.getCarrierPrivilegeStatus(context, subId, uid) + == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS) { return true; } - } catch (SecurityException readSmsSecurityException) { } - // Can be read with READ_PHONE_NUMBERS too. - try { - context.enforcePermission(android.Manifest.permission.READ_PHONE_NUMBERS, pid, uid, - message); - if (appOps.noteOp(AppOpsManager.OPSTR_READ_PHONE_NUMBERS, uid, callingPackage, - callingFeatureId, null) == AppOpsManager.MODE_ALLOWED) { - return true; - } - } catch (SecurityException readPhoneNumberSecurityException) { + if (permissionResult == AppOpsManager.MODE_IGNORED) { + return false; } throw new SecurityException(message + ": Neither user " + uid diff --git a/telephony/java/android/telephony/AccessNetworkConstants.java b/telephony/java/android/telephony/AccessNetworkConstants.java index 96e715ee0495..1d7a4761dec6 100644 --- a/telephony/java/android/telephony/AccessNetworkConstants.java +++ b/telephony/java/android/telephony/AccessNetworkConstants.java @@ -62,6 +62,7 @@ public final class AccessNetworkConstants { switch (transportType) { case TRANSPORT_TYPE_WWAN: return "WWAN"; case TRANSPORT_TYPE_WLAN: return "WLAN"; + case TRANSPORT_TYPE_INVALID: return "INVALID"; default: return Integer.toString(transportType); } } diff --git a/telephony/java/android/telephony/CarrierBandwidth.java b/telephony/java/android/telephony/CarrierBandwidth.java deleted file mode 100644 index 9e1dee0162b9..000000000000 --- a/telephony/java/android/telephony/CarrierBandwidth.java +++ /dev/null @@ -1,226 +0,0 @@ -/* - * 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.telephony; - -import android.annotation.NonNull; -import android.annotation.Nullable; -import android.annotation.RequiresFeature; -import android.annotation.SystemApi; -import android.os.Parcel; -import android.os.Parcelable; - -import java.util.Objects; - -/** - * Defines downlink and uplink capacity of a network in kbps - * @hide - */ -@SystemApi -public final class CarrierBandwidth implements Parcelable { - /** - * Any field that is not reported shall be set to INVALID - */ - public static final int INVALID = -1; - - /** - * Estimated downlink capacity in kbps of the primary carrier. - * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth. - * This will be {@link #INVALID} if the network is not connected - */ - private int mPrimaryDownlinkCapacityKbps; - - /** - * Estimated uplink capacity in kbps of the primary carrier. - * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth. - * This will be {@link #INVALID} if the network is not connected - */ - private int mPrimaryUplinkCapacityKbps; - - /** - * Estimated downlink capacity in kbps of the secondary carrier in a dual connected network. - * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth. - * This will be {@link #INVALID} if the network is not connected - */ - private int mSecondaryDownlinkCapacityKbps; - - /** - * Estimated uplink capacity in kbps of the secondary carrier in a dual connected network. - * This bandwidth estimate shall be the estimated maximum sustainable link bandwidth. - * This will be {@link #INVALID} if the network is not connected - */ - private int mSecondaryUplinkCapacityKbps; - - /** @hide **/ - public CarrierBandwidth(Parcel in) { - mPrimaryDownlinkCapacityKbps = in.readInt(); - mPrimaryUplinkCapacityKbps = in.readInt(); - mSecondaryDownlinkCapacityKbps = in.readInt(); - mSecondaryUplinkCapacityKbps = in.readInt(); - } - - /** @hide **/ - public CarrierBandwidth() { - mPrimaryDownlinkCapacityKbps = INVALID; - mPrimaryUplinkCapacityKbps = INVALID; - mSecondaryDownlinkCapacityKbps = INVALID; - mSecondaryUplinkCapacityKbps = INVALID; - } - - /** - * Constructor. - * - * @param primaryDownlinkCapacityKbps Estimated downlink capacity in kbps of - * the primary carrier. - * @param primaryUplinkCapacityKbps Estimated uplink capacity in kbps of - * the primary carrier. - * @param secondaryDownlinkCapacityKbps Estimated downlink capacity in kbps of - * the secondary carrier - * @param secondaryUplinkCapacityKbps Estimated uplink capacity in kbps of - * the secondary carrier - */ - public CarrierBandwidth(int primaryDownlinkCapacityKbps, int primaryUplinkCapacityKbps, - int secondaryDownlinkCapacityKbps, int secondaryUplinkCapacityKbps) { - mPrimaryDownlinkCapacityKbps = primaryDownlinkCapacityKbps; - mPrimaryUplinkCapacityKbps = primaryUplinkCapacityKbps; - mSecondaryDownlinkCapacityKbps = secondaryDownlinkCapacityKbps; - mSecondaryUplinkCapacityKbps = secondaryUplinkCapacityKbps; - } - - /** - * Retrieves the upstream bandwidth for the primary network in kbps. This always only refers to - * the estimated first hop transport bandwidth. - * This will be {@link #INVALID} if the network is not connected - * - * @return The estimated first hop upstream (device to network) bandwidth. - */ - public int getPrimaryDownlinkCapacityKbps() { - return mPrimaryDownlinkCapacityKbps; - } - - /** - * Retrieves the downstream bandwidth for the primary network in kbps. This always only refers - * to the estimated first hop transport bandwidth. - * This will be {@link #INVALID} if the network is not connected - * - * @return The estimated first hop downstream (network to device) bandwidth. - */ - public int getPrimaryUplinkCapacityKbps() { - return mPrimaryUplinkCapacityKbps; - } - - /** - * Retrieves the upstream bandwidth for the secondary network in kbps. This always only refers - * to the estimated first hop transport bandwidth. - * <p/> - * This will be {@link #INVALID} if either are the case: - * <ol> - * <li>The network is not connected</li> - * <li>The device does not support - * {@link android.telephony.TelephonyManager#CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE}.</li> - * </ol> - * - * @return The estimated first hop upstream (device to network) bandwidth. - */ - @RequiresFeature( - enforcement = "android.telephony.TelephonyManager#isRadioInterfaceCapabilitySupported", - value = TelephonyManager.CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE) - public int getSecondaryDownlinkCapacityKbps() { - return mSecondaryDownlinkCapacityKbps; - } - - /** - * Retrieves the downstream bandwidth for the secondary network in kbps. This always only - * refers to the estimated first hop transport bandwidth. - * <p/> - * This will be {@link #INVALID} if either are the case: - * <ol> - * <li>The network is not connected</li> - * <li>The device does not support - * {@link android.telephony.TelephonyManager#CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE}.</li> - * </ol> - * @return The estimated first hop downstream (network to device) bandwidth. - */ - @RequiresFeature( - enforcement = "android.telephony.TelephonyManager#isRadioInterfaceCapabilitySupported", - value = TelephonyManager.CAPABILITY_SECONDARY_LINK_BANDWIDTH_VISIBLE) - public int getSecondaryUplinkCapacityKbps() { - return mSecondaryUplinkCapacityKbps; - } - - @NonNull - @Override - public String toString() { - return "CarrierBandwidth: {primaryDownlinkCapacityKbps=" + mPrimaryDownlinkCapacityKbps - + " primaryUplinkCapacityKbps=" + mPrimaryUplinkCapacityKbps - + " secondaryDownlinkCapacityKbps=" + mSecondaryDownlinkCapacityKbps - + " secondaryUplinkCapacityKbps=" + mSecondaryUplinkCapacityKbps - + "}"; - } - - @Override - public int hashCode() { - return Objects.hash( - mPrimaryDownlinkCapacityKbps, - mPrimaryUplinkCapacityKbps, - mSecondaryDownlinkCapacityKbps, - mSecondaryUplinkCapacityKbps); - } - - @Override - public boolean equals(@Nullable Object o) { - if (o == null || !(o instanceof CallQuality) || hashCode() != o.hashCode()) { - return false; - } - if (this == o) { - return true; - } - CarrierBandwidth s = (CarrierBandwidth) o; - return (mPrimaryDownlinkCapacityKbps == s.mPrimaryDownlinkCapacityKbps - && mPrimaryUplinkCapacityKbps == s.mPrimaryUplinkCapacityKbps - && mSecondaryDownlinkCapacityKbps == s.mSecondaryDownlinkCapacityKbps - && mSecondaryDownlinkCapacityKbps == s.mSecondaryDownlinkCapacityKbps); - } - - /** - * {@link Parcelable#describeContents} - */ - public int describeContents() { - return 0; - } - - /** - * {@link Parcelable#writeToParcel} - * @hide - */ - public void writeToParcel(Parcel dest, int flags) { - dest.writeInt(mPrimaryDownlinkCapacityKbps); - dest.writeInt(mPrimaryUplinkCapacityKbps); - dest.writeInt(mSecondaryDownlinkCapacityKbps); - dest.writeInt(mSecondaryUplinkCapacityKbps); - } - - public static final @android.annotation.NonNull Parcelable.Creator<CarrierBandwidth> CREATOR = - new Parcelable.Creator() { - public CarrierBandwidth createFromParcel(Parcel in) { - return new CarrierBandwidth(in); - } - - public CarrierBandwidth[] newArray(int size) { - return new CarrierBandwidth[size]; - } - }; -} diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java index b91497245dd1..8b9fc0fbf5b2 100644 --- a/telephony/java/android/telephony/CarrierConfigManager.java +++ b/telephony/java/android/telephony/CarrierConfigManager.java @@ -4216,7 +4216,6 @@ public class CarrierConfigManager { * it will override the framework default. * @hide */ - @SystemApi public static final String KEY_PUBLISH_SERVICE_DESC_FEATURE_TAG_MAP_OVERRIDE_STRING_ARRAY = KEY_PREFIX + "publish_service_desc_feature_tag_map_override_string_array"; diff --git a/telephony/java/android/telephony/CellSignalStrengthNr.java b/telephony/java/android/telephony/CellSignalStrengthNr.java index bde62fb2977c..ac01afa51729 100644 --- a/telephony/java/android/telephony/CellSignalStrengthNr.java +++ b/telephony/java/android/telephony/CellSignalStrengthNr.java @@ -134,7 +134,7 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa * * Range [0, 15] for each CQI. */ - private List<Integer> mCsiCqiReport;; + private List<Integer> mCsiCqiReport; private int mSsRsrp; private int mSsRsrq; private int mSsSinr; @@ -172,13 +172,13 @@ public final class CellSignalStrengthNr extends CellSignalStrength implements Pa * @hide */ public CellSignalStrengthNr(int csiRsrp, int csiRsrq, int csiSinr, int csiCqiTableIndex, - List<Integer> csiCqiReport, int ssRsrp, int ssRsrq, int ssSinr) { + List<Byte> csiCqiReport, int ssRsrp, int ssRsrq, int ssSinr) { mCsiRsrp = inRangeOrUnavailable(csiRsrp, -140, -44); mCsiRsrq = inRangeOrUnavailable(csiRsrq, -20, -3); mCsiSinr = inRangeOrUnavailable(csiSinr, -23, 23); mCsiCqiTableIndex = inRangeOrUnavailable(csiCqiTableIndex, 1, 3); - mCsiCqiReport = csiCqiReport.stream() - .map(cqi -> new Integer(inRangeOrUnavailable(cqi.intValue(), 1, 3))) + mCsiCqiReport = csiCqiReport.stream() + .map(cqi -> new Integer(inRangeOrUnavailable(Byte.toUnsignedInt(cqi), 1, 3))) .collect(Collectors.toList()); mSsRsrp = inRangeOrUnavailable(ssRsrp, -140, -44); mSsRsrq = inRangeOrUnavailable(ssRsrq, -43, 20); diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java index c5251187dd64..8475cabd90cc 100644 --- a/telephony/java/android/telephony/TelephonyManager.java +++ b/telephony/java/android/telephony/TelephonyManager.java @@ -10075,14 +10075,15 @@ public class TelephonyManager { /** * Sets the roaming mode for CDMA phone to the given mode {@code mode}. If the phone is not - * CDMA capable, this method does nothing. + * CDMA capable, this method throws an IllegalStateException. * * <p>If this object has been created with {@link #createForSubscriptionId}, applies to the * given subId. Otherwise, applies to {@link SubscriptionManager#getDefaultSubscriptionId()} * * @param mode CDMA roaming mode. * @throws SecurityException if the caller does not have the permission. - * @throws IllegalStateException if the Telephony process or radio is not currently available. + * @throws IllegalStateException if the Telephony process or radio is not currently available, + * the device is not CDMA capable, or the request fails. * * @see #CDMA_ROAMING_MODE_RADIO_DEFAULT * @see #CDMA_ROAMING_MODE_HOME @@ -10098,7 +10099,9 @@ public class TelephonyManager { @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCdmaRoamingMode(@CdmaRoamingMode int mode) { - if (getPhoneType() != PHONE_TYPE_CDMA) return; + if (getPhoneType() != PHONE_TYPE_CDMA) { + throw new IllegalStateException("Phone does not support CDMA."); + } try { ITelephony telephony = getITelephony(); if (telephony != null) { @@ -10180,11 +10183,12 @@ public class TelephonyManager { /** * Sets the subscription mode for CDMA phone to the given mode {@code mode}. If the phone is not - * CDMA capable, this method does nothing. + * CDMA capable, this method throws an IllegalStateException. * * @param mode CDMA subscription mode. * @throws SecurityException if the caller does not have the permission. - * @throws IllegalStateException if the Telephony process is not currently available. + * @throws IllegalStateException if the Telephony process or radio is not currently available, + * the device is not CDMA capable, or the request fails. * * @see #CDMA_SUBSCRIPTION_UNKNOWN * @see #CDMA_SUBSCRIPTION_RUIM_SIM @@ -10199,7 +10203,9 @@ public class TelephonyManager { @SystemApi @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setCdmaSubscriptionMode(@CdmaSubscription int mode) { - if (getPhoneType() != PHONE_TYPE_CDMA) return; + if (getPhoneType() != PHONE_TYPE_CDMA) { + throw new IllegalStateException("Phone does not support CDMA."); + } try { ITelephony telephony = getITelephony(); if (telephony != null) { diff --git a/telephony/java/android/telephony/data/QosBearerFilter.java b/telephony/java/android/telephony/data/QosBearerFilter.java index 6c1c653f13d0..5642549d7313 100644 --- a/telephony/java/android/telephony/data/QosBearerFilter.java +++ b/telephony/java/android/telephony/data/QosBearerFilter.java @@ -31,7 +31,6 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; - /** * Class that stores QOS filter parameters as defined in * 3gpp 24.008 10.5.6.12 and 3gpp 24.501 9.11.4.13. diff --git a/telephony/java/android/telephony/data/TrafficDescriptor.java b/telephony/java/android/telephony/data/TrafficDescriptor.java index f400a5e39704..2178fc1717b9 100644 --- a/telephony/java/android/telephony/data/TrafficDescriptor.java +++ b/telephony/java/android/telephony/data/TrafficDescriptor.java @@ -125,7 +125,6 @@ public final class TrafficDescriptor implements Parcelable { * .build(); * </code></pre> * - * @hide */ public static final class Builder { private String mDnn = null; diff --git a/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java b/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java index 8762b6a712f2..0d63f7bba741 100644 --- a/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java +++ b/telephony/java/android/telephony/ims/SipDelegateImsConfiguration.java @@ -501,6 +501,10 @@ public final class SipDelegateImsConfiguration implements Parcelable { * {@link SipMessage} was using the latest configuration during creation and not a stale * configuration due to race conditions between the configuration being updated and the RCS * application not receiving the updated configuration before generating a new message. + * <p> + * The version number should be a positive number that starts at 0 and increments sequentially + * as new {@link SipDelegateImsConfiguration} instances are created to update the IMS + * configuration state. * * @return the version number associated with this {@link SipDelegateImsConfiguration}. */ diff --git a/tests/net/TEST_MAPPING b/tests/net/TEST_MAPPING index d659688700d3..502f885ceb78 100644 --- a/tests/net/TEST_MAPPING +++ b/tests/net/TEST_MAPPING @@ -28,7 +28,7 @@ ], "imports": [ { - "path": "cts/tests/tests/net" + "path": "packages/modules/Connectivity" } ] }
\ No newline at end of file diff --git a/tests/net/common/java/ParseExceptionTest.kt b/tests/net/common/java/ParseExceptionTest.kt index f17715a099a3..b702d61a9fe1 100644 --- a/tests/net/common/java/ParseExceptionTest.kt +++ b/tests/net/common/java/ParseExceptionTest.kt @@ -15,16 +15,22 @@ */ import android.net.ParseException +import android.os.Build import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest +import com.android.testutils.DevSdkIgnoreRule import junit.framework.Assert.assertEquals import junit.framework.Assert.assertNull +import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith @SmallTest @RunWith(AndroidJUnit4::class) class ParseExceptionTest { + @get:Rule + val ignoreRule = DevSdkIgnoreRule(ignoreClassUpTo = Build.VERSION_CODES.R) + @Test fun testConstructor_WithCause() { val testMessage = "Test message" diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java index b71be596d9c5..23e782f9e8f6 100644 --- a/tests/net/java/com/android/server/ConnectivityServiceTest.java +++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java @@ -1791,7 +1791,7 @@ public class ConnectivityServiceTest { assertNull(mCm.getActiveNetworkForUid(Process.myUid())); // Test getAllNetworks() assertEmpty(mCm.getAllNetworks()); - assertEmpty(mCm.getAllNetworkStateSnapshot()); + assertEmpty(mCm.getAllNetworkStateSnapshots()); } /** @@ -10409,12 +10409,15 @@ public class ConnectivityServiceTest { return UidRange.createForUser(UserHandle.of(userId)); } - private void mockGetApplicationInfo(@NonNull final String packageName, @NonNull final int uid) - throws Exception { + private void mockGetApplicationInfo(@NonNull final String packageName, @NonNull final int uid) { final ApplicationInfo applicationInfo = new ApplicationInfo(); applicationInfo.uid = uid; - when(mPackageManager.getApplicationInfo(eq(packageName), anyInt())) - .thenReturn(applicationInfo); + try { + when(mPackageManager.getApplicationInfo(eq(packageName), anyInt())) + .thenReturn(applicationInfo); + } catch (Exception e) { + fail(e.getMessage()); + } } private void mockGetApplicationInfoThrowsNameNotFound(@NonNull final String packageName) @@ -10435,8 +10438,7 @@ public class ConnectivityServiceTest { } private OemNetworkPreferences createDefaultOemNetworkPreferences( - @OemNetworkPreferences.OemNetworkPreference final int preference) - throws Exception { + @OemNetworkPreferences.OemNetworkPreference final int preference) { // Arrange PackageManager mocks mockGetApplicationInfo(TEST_PACKAGE_NAME, TEST_PACKAGE_UID); @@ -10913,11 +10915,13 @@ public class ConnectivityServiceTest { mDone.complete(new Object()); } - void expectOnComplete() throws Exception { + void expectOnComplete() { try { mDone.get(TIMEOUT_MS, TimeUnit.MILLISECONDS); } catch (TimeoutException e) { fail("Expected onComplete() not received after " + TIMEOUT_MS + " ms"); + } catch (Exception e) { + fail(e.getMessage()); } } @@ -12016,7 +12020,7 @@ public class ConnectivityServiceTest { } @Test - public void testGetAllNetworkStateSnapshot() throws Exception { + public void testGetAllNetworkStateSnapshots() throws Exception { verifyNoNetwork(); // Setup test cellular network with specified LinkProperties and NetworkCapabilities, @@ -12040,7 +12044,7 @@ public class ConnectivityServiceTest { mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR, cellLp, cellNcTemplate); mCellNetworkAgent.connect(true); cellCb.expectAvailableCallbacksUnvalidated(mCellNetworkAgent); - List<NetworkStateSnapshot> snapshots = mCm.getAllNetworkStateSnapshot(); + List<NetworkStateSnapshot> snapshots = mCm.getAllNetworkStateSnapshots(); assertLength(1, snapshots); // Compose the expected cellular snapshot for verification. @@ -12062,7 +12066,7 @@ public class ConnectivityServiceTest { mWiFiNetworkAgent.getNetwork(), wifiNc, new LinkProperties(), null, ConnectivityManager.TYPE_WIFI); - snapshots = mCm.getAllNetworkStateSnapshot(); + snapshots = mCm.getAllNetworkStateSnapshots(); assertLength(2, snapshots); assertContainsAll(snapshots, cellSnapshot, wifiSnapshot); @@ -12071,20 +12075,20 @@ public class ConnectivityServiceTest { // temporary shortage of connectivity of a connected network. mCellNetworkAgent.suspend(); waitForIdle(); - snapshots = mCm.getAllNetworkStateSnapshot(); + snapshots = mCm.getAllNetworkStateSnapshots(); assertLength(1, snapshots); assertEquals(wifiSnapshot, snapshots.get(0)); // Disconnect wifi, verify the snapshots contain nothing. mWiFiNetworkAgent.disconnect(); waitForIdle(); - snapshots = mCm.getAllNetworkStateSnapshot(); + snapshots = mCm.getAllNetworkStateSnapshots(); assertEquals(mCellNetworkAgent.getNetwork(), mCm.getActiveNetwork()); assertLength(0, snapshots); mCellNetworkAgent.resume(); waitForIdle(); - snapshots = mCm.getAllNetworkStateSnapshot(); + snapshots = mCm.getAllNetworkStateSnapshots(); assertLength(1, snapshots); assertEquals(cellSnapshot, snapshots.get(0)); @@ -12648,4 +12652,72 @@ public class ConnectivityServiceTest { expected, () -> mCm.registerNetworkCallback(getRequestWithSubIds(), new NetworkCallback())); } + + /** + * Validate request counts are counted accurately on setProfileNetworkPreference on set/replace. + */ + @Test + public void testProfileNetworkPrefCountsRequestsCorrectlyOnSet() throws Exception { + final UserHandle testHandle = setupEnterpriseNetwork(); + testRequestCountLimits(() -> { + // Set initially to test the limit prior to having existing requests. + final TestOnCompleteListener listener = new TestOnCompleteListener(); + mCm.setProfileNetworkPreference(testHandle, PROFILE_NETWORK_PREFERENCE_ENTERPRISE, + Runnable::run, listener); + listener.expectOnComplete(); + + // re-set so as to test the limit as part of replacing existing requests. + mCm.setProfileNetworkPreference(testHandle, PROFILE_NETWORK_PREFERENCE_ENTERPRISE, + Runnable::run, listener); + listener.expectOnComplete(); + }); + } + + /** + * Validate request counts are counted accurately on setOemNetworkPreference on set/replace. + */ + @Test + public void testSetOemNetworkPreferenceCountsRequestsCorrectlyOnSet() throws Exception { + mockHasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE, true); + @OemNetworkPreferences.OemNetworkPreference final int networkPref = + OEM_NETWORK_PREFERENCE_OEM_PRIVATE_ONLY; + testRequestCountLimits(() -> { + // Set initially to test the limit prior to having existing requests. + final TestOemListenerCallback listener = new TestOemListenerCallback(); + mService.setOemNetworkPreference( + createDefaultOemNetworkPreferences(networkPref), listener); + listener.expectOnComplete(); + + // re-set so as to test the limit as part of replacing existing requests. + mService.setOemNetworkPreference( + createDefaultOemNetworkPreferences(networkPref), listener); + listener.expectOnComplete(); + }); + } + + private void testRequestCountLimits(@NonNull final Runnable r) throws Exception { + final ArraySet<TestNetworkCallback> callbacks = new ArraySet<>(); + try { + final int requestCount = mService.mSystemNetworkRequestCounter + .mUidToNetworkRequestCount.get(Process.myUid()); + // The limit is hit when total requests <= limit. + final int maxCount = + ConnectivityService.MAX_NETWORK_REQUESTS_PER_SYSTEM_UID - requestCount; + // Need permission so registerDefaultNetworkCallback uses mSystemNetworkRequestCounter + withPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, () -> { + for (int i = 1; i < maxCount - 1; i++) { + final TestNetworkCallback cb = new TestNetworkCallback(); + mCm.registerDefaultNetworkCallback(cb); + callbacks.add(cb); + } + + // Code to run to check if it triggers a max request count limit error. + r.run(); + }); + } finally { + for (final TestNetworkCallback cb : callbacks) { + mCm.unregisterNetworkCallback(cb); + } + } + } } diff --git a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java index eeeb4fb1d929..42441c214575 100644 --- a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java +++ b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java @@ -67,6 +67,7 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -88,8 +89,8 @@ import android.net.NetworkStateSnapshot; import android.net.NetworkStats; import android.net.NetworkStatsHistory; import android.net.NetworkTemplate; -import android.net.UnderlyingNetworkInfo; import android.net.TelephonyNetworkSpecifier; +import android.net.UnderlyingNetworkInfo; import android.net.netstats.provider.INetworkStatsProviderCallback; import android.os.ConditionVariable; import android.os.Handler; @@ -165,9 +166,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { private long mElapsedRealtime; - private BroadcastInterceptingContext mServiceContext; private File mStatsDir; - + private MockContext mServiceContext; + private @Mock TelephonyManager mTelephonyManager; private @Mock INetworkManagementService mNetManager; private @Mock NetworkStatsFactory mStatsFactory; private @Mock NetworkStatsSettings mSettings; @@ -183,19 +184,32 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { private ContentObserver mContentObserver; private Handler mHandler; + private class MockContext extends BroadcastInterceptingContext { + private final Context mBaseContext; + + MockContext(Context base) { + super(base); + mBaseContext = base; + } + + @Override + public Object getSystemService(String name) { + if (Context.TELEPHONY_SERVICE.equals(name)) return mTelephonyManager; + return mBaseContext.getSystemService(name); + } + } + private final Clock mClock = new SimpleClock(ZoneOffset.UTC) { @Override public long millis() { return currentTimeMillis(); } }; - @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); final Context context = InstrumentationRegistry.getContext(); - - mServiceContext = new BroadcastInterceptingContext(context); + mServiceContext = new MockContext(context); mStatsDir = context.getFilesDir(); if (mStatsDir.exists()) { IoUtils.deleteContents(mStatsDir); @@ -217,7 +231,6 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { expectDefaultSettings(); expectNetworkStatsUidDetail(buildEmptyStats()); expectSystemReady(); - mService.systemReady(); // Verify that system ready fetches realtime stats verify(mStatsFactory).readNetworkStatsDetail(UID_ALL, INTERFACES_ALL, TAG_ALL); @@ -228,6 +241,9 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { verify(mNetworkStatsSubscriptionsMonitor).start(); reset(mNetworkStatsSubscriptionsMonitor); + doReturn(TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS).when(mTelephonyManager) + .checkCarrierPrivilegesForPackageAnyPhone(anyString()); + mSession = mService.openSession(); assertNotNull("openSession() failed", mSession); @@ -873,7 +889,7 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { final LinkProperties stackedProp = new LinkProperties(); stackedProp.setInterfaceName(stackedIface); final NetworkStateSnapshot wifiState = buildWifiState(); - wifiState.linkProperties.addStackedLink(stackedProp); + wifiState.getLinkProperties().addStackedLink(stackedProp); NetworkStateSnapshot[] states = new NetworkStateSnapshot[] {wifiState}; expectNetworkStatsSummary(buildEmptyStats()); @@ -1564,10 +1580,10 @@ public class NetworkStatsServiceTest extends NetworkStatsBaseTest { } private String getActiveIface(NetworkStateSnapshot... states) throws Exception { - if (states == null || states.length == 0 || states[0].linkProperties == null) { + if (states == null || states.length == 0 || states[0].getLinkProperties() == null) { return null; } - return states[0].linkProperties.getInterfaceName(); + return states[0].getLinkProperties().getInterfaceName(); } private void expectNetworkStatsSummary(NetworkStats summary) throws Exception { diff --git a/tests/vcn/java/android/net/vcn/VcnControlPlaneIkeConfigTest.java b/tests/vcn/java/android/net/vcn/VcnControlPlaneIkeConfigTest.java index 2333718d0cab..43b80e4c1bbf 100644 --- a/tests/vcn/java/android/net/vcn/VcnControlPlaneIkeConfigTest.java +++ b/tests/vcn/java/android/net/vcn/VcnControlPlaneIkeConfigTest.java @@ -22,12 +22,7 @@ import static android.net.ipsec.ike.SaProposal.PSEUDORANDOM_FUNCTION_AES128_XCBC import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.mock; -import android.content.Context; -import android.net.ConnectivityManager; -import android.net.Network; import android.net.ipsec.ike.ChildSaProposal; import android.net.ipsec.ike.IkeFqdnIdentification; import android.net.ipsec.ike.IkeSaProposal; @@ -56,20 +51,13 @@ public class VcnControlPlaneIkeConfigTest { .addPseudorandomFunction(PSEUDORANDOM_FUNCTION_AES128_XCBC) .build(); - Context mockContext = mock(Context.class); - ConnectivityManager mockConnectManager = mock(ConnectivityManager.class); - doReturn(mockConnectManager) - .when(mockContext) - .getSystemService(Context.CONNECTIVITY_SERVICE); - doReturn(mock(Network.class)).when(mockConnectManager).getActiveNetwork(); - final String serverHostname = "192.0.2.100"; final String testLocalId = "test.client.com"; final String testRemoteId = "test.server.com"; final byte[] psk = "psk".getBytes(); IKE_PARAMS = - new IkeSessionParams.Builder(mockContext) + new IkeSessionParams.Builder() .setServerHostname(serverHostname) .addSaProposal(ikeProposal) .setLocalIdentification(new IkeFqdnIdentification(testLocalId)) diff --git a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectingStateTest.java b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectingStateTest.java index bfe8c73d6389..acc8bf98e95b 100644 --- a/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectingStateTest.java +++ b/tests/vcn/java/com/android/server/vcn/VcnGatewayConnectionConnectingStateTest.java @@ -58,8 +58,7 @@ public class VcnGatewayConnectionConnectingStateTest extends VcnGatewayConnectio ArgumentCaptor.forClass(IkeSessionParams.class); verify(mDeps).newIkeSession(any(), paramsCaptor.capture(), any(), any(), any()); assertEquals( - TEST_UNDERLYING_NETWORK_RECORD_1.network, - paramsCaptor.getValue().getConfiguredNetwork()); + TEST_UNDERLYING_NETWORK_RECORD_1.network, paramsCaptor.getValue().getNetwork()); } @Test |